Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anderson Schmitt

Relacionamento 1 pra muitos com diversas tabelas.

Recommended Posts

Fala galera, tudo bom?

 

acho que meu título não ficou mto descritivo, mas vamos ao problema.

 

Eu tenho uma tabela "Clientes", e uma tabela "Endereços".

Um cliente pode ter diversos endereços onde é realizada a entrega, então, tenho uma coluna ID_Cliente na tabela 'Endereços'.

 

Aí começa o rolo. Surgiu a tabela Fornecedores, e eu gostaria de aproveitar a mesma tabela endereços.

E vai surgir agora a tabela Vendedores.

 

O Problema: nao gostaria de ter ID_Cliente, ID_Fornecedor, ID_Vendedor na tabela endereços, considero meio sujo.

Entretanto, nao consegui pensar em uma forma mais inteligente de fazer esta ligação.

 

Há alguma alternativa mais interessante? Tenho como fugir deste monte de chaves estrangeiras desconectadas?

 

 

Atenciosamente,

 

Anderson Schmitt.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma tabela pessoa com um campo 'tipo' com valores 'C' para cliente, 'F' para fornecedor e 'V' vendedor. Então na tabela de endereços vocês relaciona o ID dessa tabela pessoa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você também pode fazer por faixas de id. Exemplo:

De 0 a 500 id de clientes.

De 501 a 1000 id de fornecedores.

De 1001 a 1500 id de vendedores.

 

E assim por diante.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Anderson, td bem?!

 

Acho que tenho a solução do teu problema, se não for muito tardia, postarei ela.

 

Concorda que cliente, fornecedor e vendedor (que será sua futura tabela) tem algo em comum; no caso negocial são pessoas (físicas e juridicas), certo?! Então a solução seria criar uma tabela chamada, por exemplo, membro, que terá como campos: tipo (cliente, fornecedor, vendedor), cod_membro_pk, cpf ou cnpj (se necessário), nome e atributos que você julgue que as três entidades tenham em comum e/ou tenham alguma serventia no sistema. Após criada essa tabela, crie uma tabela para cada uma das entidades (vendedor, cliente e fornecedor), aí você coloca os campos particulares de cada uma, entretanto, coloque uma chave estrangeira referenciando a tabela "membro", exemplo: cod_membro_fk1. Na tabela endereço, coloque uma chave estrangeira, com nome diferente, referenciando a mesma tabela (membro), exemplo: cod_membro_fk2.

 

Pronto, você vai deixar teu banco "organizado" e vai aproveitar tranquilamente a estrutura da tabela enderaço.

 

Ps: nas tabelas das entidades (cliente, fornecedor e vendedor), crie uma chave primária para cada, ok?!

 

Espero ter ajudado. FLW!!!!!!!!!!!!!!!!!!!!1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais simples seria apenas uma tabela de NxN para cada entidade que tem endereço. Cada tabela tem o ID da entidade e o ID do endereço usado.

 

Tab EnderecoCliente

Tab EnderecoFornecedor

Tab EnderecoVendedor

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.