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