Um unico campo foreign key de multiplas tabelas

2 respostas
mysql
G

tenho 3 tabelas.
tb_cliente, tb_funcionario e tb_fornecedor
as 3 tabelas tem algo em comum o contato, então criamos a 4° tabela tb_contato.
A questão é na tb_contato alem dos campos esperados ela terá o campo que indicificará a quem aquele registro pertence ou seja a foreign key.
Então temos pelo menos duas estrategias:
*Um campo FK para cada tabela(tb_cliente, tb_funcionario e tb_fornecedor). OBS.: Até aqui tudo bem!
*Um único campo FK para todas as tabelas.<<< É aqui que não sei como solucionar.
Como fazer um único campo FK para as 3 tabelas?

2 Respostas

L

Cara, acho que você não pode fazer isso de jeito nenhum. Uma justificativa para isso é o fato de que as id de cliente, funcionário e fornecedor podem ser repetidas. Por exemplo, você pode ter o cliente 1, o fornecedor 1 e o funcionário 1. Como resolver esse tipo de problema? Além disso, nesse contexto de cliente, fornecedor e funcionário, você vai ter pessoas que exercem mais de uma função: um funcionário pode ser cliente, um cliente pode ser fornecedor também, e por aí vai. Esse é um problema também. Acho melhor que você crie as FK para cada tabela mesmo. Fica mais clara sua intenção e facilita a codificação.

R

Boa Tarde,
godhulk

Seria mais fácil você criar uma herança tb_pessoa onde ela pode ser especializada em tb_cliente, tb_funcionario e tb_fornecedor, as informações em comum você faz a relação com tb_pessoa ou seja sua tb_contato, teria relação com a tb_pessoa e não com cada uma das outras tabelas. Pense também que um cliente pode ser um funcionário e futuramente pode ser um fornecedor seu, com isso você evita redundância na sua base de dados.

att,

Criado 28 de junho de 2016
Ultima resposta 10 de ago. de 2016
Respostas 2
Participantes 3