"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Uma chave estrangeira pode referir várias chaves primárias simultaneamente?

Uma chave estrangeira pode referir várias chaves primárias simultaneamente?

Postado em 2025-03-22
Navegar:977

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

lidando relacionamentos de chave estrangeira complexos no design de banco de dados

Cenário

Este exemplo explora um desafio comum de design de banco de dados: criando um relacionamento de chave estrangeira, onde uma única tabela precisa fazer referência a teclas primárias de várias outras tabelas. O cenário específico envolve a tabela deduções que precisa vincular a ambos funcionários_ce e funcionários_sn tables.

o problema e sua solução

A pergunta é se uma chave estrangeira em deduções pode referenciar diretamente as teclas primárias em ambos funcionários_ce e funcionários_sn simultaneamente. A resposta é: não diretamente, em um banco de dados relacional padrão. Uma única chave estrangeira pode referenciar apenas uma única chave primária.

A solução proposta aproveita um modelo de herança bem estruturado para resolver isso.

abordagem baseada em herança

as tabelas funcionários , funcionários_ce e funcionários_sn representam uma hierarquia de herança. funcionários é a tabela base, com funcionários_ce e funcionários_sn como tabelas especializadas herdando dele.

estrutura do banco de dados:

employees (id INT PRIMARY KEY, name VARCHAR(255))
employees_ce (id INT PRIMARY KEY, ce_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))
employees_sn (id INT PRIMARY KEY, sn_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))

Solução:

em vez de um link direto para ambos funcionários_ce e funcionários_sn , a tabela deduções deve fazer referência à tabela dos pais comum, funcionários :

deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))

Essa abordagem garante integridade referencial e evita redundância. O funcionário_id em deduções vincula o registro do funcionário em funcionários , independentemente de esse funcionário ter informações adicionais em funcionários_ce ou Este design gerencia com eficiência o relacionamento e mantém a consistência dos dados.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3