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?
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.
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,