Duvida entre usar chave primária composta ou não na tabela associativa

Estou fazendo um relacionamento onde o mesmo seja N:N…

Exemplo: Projeto x Funcionario

Neste relacionamento eu crio uma tabela associativa chamada Projeto_Funcionario levando o id das duas classes.

Projeto(id, nome)

Funcionario(id, nome, cargo)

Projeto_Funcionario(idProjeto, idFunc, cargaHoraria)

A dúvida é, gostaria de saber se as chaves idProjeto e idFunc são chaves primárias compostas ou não, ou apenos crio elas sendo estrangeiras e antes dela crio uma primaria.

Projeto_Funcionario(id, idProjeto, idFunc, cargaHoraria)

OBS: O Funcionário não pode trabalhar no mesmo projeto mais de uma vez, apenas uma única vez.

Levando isso em conta, deve ser uma chave primária composta.
Mas eu acredito que mesmo sendo uma chave primária composta você pode e deve declarar as mesmas como estrangeiras para que se “amarre” o idProjeto e IdFunc as suas tabelas, evitando erros de exclusão de projetos e funcionários sendo que existe aquele projeto ligado a um funcionário ou vice-versa.

1 curtida

Sim, imaginava que seria chave primária composta mesmo, obrigado!

E sim novamente, as mesmas quero que sejam chave primária composta e também sejam chave estrangeiras para que haja relacionamento entre as tabelas.