Cet exemple explore un défi de conception de base de données commun: créer une relation de clé étrangère où une seule table doit référencer les clés primaires à partir de plusieurs autres tables. Le scénario spécifique implique le tableau déduction
qui doit être lié à la fois vers employés_ce
et employés_sn
tables.
La question est de savoir si une clé étrangère dans déductions
peut directement référencer les clés primaires dans les deux employés_ce
et employés_sn
simultanément. La réponse est: pas directement, dans une base de données relationnelle standard. Une seule clé étrangère ne peut faire référence qu'une seule clé primaire.
La solution proposée exploite un modèle d'héritage bien structuré pour résoudre ce problème.
Les tableaux employés
, employés_ce
, et employés_sn
représentent une hiérarchie d'héritage. employés
est la table de base, avec employés_ce
et employés_sn
en tant que tableaux spécialisés qui héritent de celui-ci.
Structure de la base de données:
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))
Solution:
Au lieu d'un lien direct vers employés_ce
et employés_sn
, le tableau déduction
devrait faire référence à la table des parents communs, employés
:
deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))
Cette approche assure l'intégrité référentielle et évite la redondance. Le employee_id
dans déduction
lie vers l'enregistrement des employés dans employés
, que cet employé ait des informations supplémentaires dans employés_ce
ou employés_sn
. Cette conception gère efficacement la relation et maintient la cohérence des données.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3