MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Modelo de dados com atributos opcionais

    Compartilhe

    MPC
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Modelo de dados com atributos opcionais

    Mensagem  MPC em 9/12/2016, 00:17

    Cumprimentos aos amigos do forum.

    Preciso de uma ajuda com modelamento de dados. Ocorre o seguinte:
    Haverá uma tabela de produtos (no caso componentes eletrônicos).
    Um dos atributos, para determinados tipos, é o tipo de encapsulamento do componente.
    No entanto há outros produtos onde esta informação não é necessária ou mesmo não existe e estes que não necessitam deste atributo serão a maioria nesta banco.
    Como modelar os dados de tal forma que este atributo seja opcional, isto é, só apareça quando o produto assim o exigir, mantendo o banco o mais enxuto possível?
    Criar uma nova tabela e relacioná-la?  Atribuir um valor tipo "sem dados" ou coisa semelhante?
    O sistema será feito em Access mas estou ainda na fase do projeto do banco.
    O sistema é muito simples pois apenas facilitará saber se há o componente em estoque (e a quantidade) ou não.
    Trata-se de um sistema que terá sua utilidade real e ao mesmo tempo será um aprendizado do Access.

    Muito obrigado.

    Obs.:Sou novato aqui neste forum, caso não seja o local adequado para estes questionamentos, por favor me informem como fazê-lo.
    avatar
    Jair Martins
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 78
    Registrado : 23/03/2016

    Re: Modelo de dados com atributos opcionais

    Mensagem  Jair Martins em 9/12/2016, 12:26

    Bom dia, MPC.

    Pelo visto, será necessária sim uma tabela para os tipos de encapsulamento que, imagino, sejam vários.
    Mas é preciso definir se um mesmo produto terá apenas um tipo de encapsulamento ou vários.
    Se houver apenas um, apenas a tabela TiposEncapsulamento será necessária e deverá haver um relacionamento um-para-um com a chave estrangeira na tabela Produtos.
    Se houver possibilidade de ter mais de um tipo de encapsulamento por produto, então há a necessidade de criar uma tabela intermediária para armazenar quais os tipos de encapsulamento para o mesmo produto, relacionada com as tabelas Produtos e TiposEncapsulamento.
    Já para exibr "Sem Dados" quando não houver a informação relativa a um produto, isso pode ser feito no objeto da interface (formulário ou relatório ou, até mesmo, em consultas).

    Abs.

    MPC
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Re: Modelo de dados com atributos opcionais

    Mensagem  MPC em 9/12/2016, 15:50

    Bom dia Jair.

    Obrigado pela resposta esclarecedora.

    Um mesmo componente poderá ter vários tipos de encapsulamento.
    Mas como disse, nem todos os componentes necessitam deste tipo de informação por não serem relevantes ou por não existir mesmo.
    Estudando um pouco mais, notei que se trata do caso de especialização do modelamento de dados.
    Mas entendi a sua proposição.
    Como também sou novato em Access, se não for pedir muito, poderia criar um pequeno exemplo e postar para que eu possa estudá-lo, se possível com um formulário para consulta/cadastramento?

    Muito obrigado.

    Abç.
    avatar
    Jair Martins
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 78
    Registrado : 23/03/2016

    Re: Modelo de dados com atributos opcionais

    Mensagem  Jair Martins em 9/12/2016, 17:35

    Olá, MPC.

    Em geral, não costumo criar o aplicativo, porque isso demanda uma série de outras informações que temos que ter.  No seu caso, resolvi abrir exceção devido à simplicidade do requisito.
    Em primeiro lugar, criei as tabelas. Uma para os produtos, uma para os tipos de encapsulamento e a tabela intermediária, que vai armazenar todos os tipos para cada um dos produtos. Nesta tabela, só prá complicar um pouquinho e demonstrar prá você como é a lógica da modelagem, resolvi incluir um campo Quantidade, que não sei se aplica-se no seu caso ou não. Se não se aplicar, apague. Mas o importante é que fique claro como você pode atribuir dados complementares à relação Produtos/Tipos de Encapsulamento.
    Observe que, nesta tabela, usei uma chave primária dupla, para garantir que o mesmo Tipo de Encapsulamento não será repetido para o mesmo Produto.
    Depois, criei a consulta para unir os dados das tabelas.
    Finalmente, criei os forms: um para o cadastro de Produtos, um para o cadastro dos Tipos de Encapsulamento e o subform para abrigar as relações Produtos/Tipos de Encapsulamento.
    Este subform foi anexado ao cadastro dos Produtos, com a definição dos Campos Mestre e Filho.
    No subform, originado na consulta, inseri uma combo, que relaciona pela Descrição os Tipos de Encapsulamento disponíveis. Dessa forma, é só o usuário escolher o Tipo para aquele Produto e definir a quantidade.

    Dê uma olhada. Havendo dúvidas, estamos à disposição.
    Anexos
    Produtos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (45 Kb) Baixado 5 vez(es)

    MPC
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Re: Modelo de dados com atributos opcionais

    Mensagem  MPC em 10/12/2016, 11:44

    Bom dia Jair.

    Entendo sua posição. E agradeço muito mesmo pela sua disposição em me ajudar.
    Vou estudar com cuidado suas observações e tabelas/formulários.

    Só mais uma outra dúvida: Como tenho muitos componentes para cadastrar e muitos do mesmo tipo, só mudando um atributo (por exemplo: valor), tem como manter os atributos fixos ao incluir um novo cadastro?

    Explicando melhor: tenho que cadastrar resistores de diversos valores e suas quantidade. Ok, cadastro o primeiro do zero. Para os demais, o formulário mantém todos os dados do cadastramento anterior e aí só mudo o valor e a quantidade por exemplo (ou seja, quaisquer atributos que diferenciam este cadastro do cadastro anterior). Isto é relativamente simples ou tem que ser em VBA?

    Mais uma vez, muito obrigado mesmo!

    Abçs.
    avatar
    Jair Martins
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 78
    Registrado : 23/03/2016

    Re: Modelo de dados com atributos opcionais

    Mensagem  Jair Martins em 10/12/2016, 14:34

    Olá, MPC.

    O seu requisito tem uma solução simples, mas é em VBA.
    E só para ficar mais interessante, usei também a linguagem SQL.
    A solução que estou enviando foi baseada no DB de exemplo que enviei e serve para criar uma única cópia de cada vez.  Se você precisar fazer cópias em lote, o procedimento é um pouco mais complicado.

    Vamos lá. Você pode, para testar, usar esta estratégia no próprio form frmProdutos do BD que enviei. Crie um botão de comando e, no evento Ao Clicar deste botão, coloque o seguinte código:


       Dim strSQL As String
       Dim lngNum As Long
       
       lngNum = Me.prdId
       
       strSQL = "INSERT INTO tblProdutos ( prdDescricao )" _
       & "SELECT tblProdutos.prdDescricao" _
       & " FROM tblProdutos" _
       & " WHERE (((tblProdutos.prdId)=" & lngNum & "));"
       
       DoCmd.RunSQL strSQL



    Faça o tratamento de erros e está pronto.

    IMPORTANTE: Evidentemente haverá outros campos a serem copiados. Então, não esqueça de apontá-los tanto na linha que começa com INSERT, quanto na linha SELECT da instrução SQL.

    Ficaria algo mais ou menos assim:

      strSQL = "INSERT INTO tblProdutos ( campo1, campop2, campo3, campo4 )" _
       & "SELECT tblProdutos.campo1, tblProdutos.campo2, tblProdutos.campo3, tblProdutos.campo4" _
       & " FROM tblProdutos" _
       & " WHERE (((tblProdutos.prdId)=" & lngNum & "));"

    Boa diversão.

    Abs.

    MPC
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Re: Modelo de dados com atributos opcionais

    Mensagem  MPC em 10/12/2016, 16:08

    Obrigado Jair.

    Vou testar aqui.

    Valeu mesmo.

      Data/hora atual: 17/8/2018, 14:49