Relacionamento de 3 tabelas (CLIENTES, FUNCIONARIOS E FORNECEDORES) com uma tabela de CONTATOS

20/03/2018

6

Como faço para relacionar 3 tabelas (CLIENTES, FORNECEDORES e FUNCIONÁRIOS) com uma tabela de CONTATOS ? Qual seria a melhor opção ? Migrar 3 chaves estrangeiras ? ou criar um campo como ORIGEM_ID e ORIGEM_TABELA para identificar de qual tabela vem o ID.
Responder

Post mais votado

20/03/2018

Pensou na ideia de utilizar o conceito de generalização/especialização dessas entidades? Clientes, Funcionários e Fornecedores se tratam de pessoas (Físicas e Jurídicas). Talvez dependendo dos campos que deseja, não há a necessidade de criar três entidades separadas e sim uma generalização e especialização de Pessoa Física e Jurídica. Pode inclusive, criar um campo do tipo de usuário colocando uma sigla F - Funcionário e C - Cliente.
Responder

Mais Posts

20/03/2018

Luiz Santos

José.

Se sua base já existe, suas tabelas tiverem chaves independentes para cada uma das tabelas, sendo que pode ter repetição entre elas, melhor você usar o ORIGEM_ID e o ORIGEM_TABELA como chave estrangeira.

Se vc ainda estiver criando essas tabelas, a idéia da Renata é a melhor solução.

Grande abraço
Responder

20/03/2018

Jose Mani

Renata, no caso de ter que especialização da entidade seria dividir em Pessoa Física e Jurídica. Faço duas tabelas (Pessoa Física e Pessoa Jurídica) ou uma tabela Pessoas e crio um campo TIPO_PESSOA (pj/pf) ? da mesma maneira como faço para o tipo de usuario (fun / cli / for ) ? E os atributos especificos de cada tipo de pessoa como CPF / CNPJ , RG / IE ?
Responder

20/03/2018

Renata Fraga

Na entidade Pessoa (que seria a entidade pai) você colocaria um identificador para poder relacionar com as entidades filhas,.Você deve criar duas tabelas filhas: Física e Jurídica. Nela, você vai colocar características específicas daquela entidade. Ou seja, CNPJ, IE , Razão Social, Nome Fantastia etc - Jurídica e CPF, RG, Nome Completo, etc em Física.
Responder

20/03/2018

Jose Mani

Obrigado pela ajuda. Já clareou bastante.
Responder