Maison > base de données > tutoriel mysql > Une clé étrangère peut-elle référencer plusieurs clés primaires simultanément ?

Une clé étrangère peut-elle référencer plusieurs clés primaires simultanément ?

Barbara Streisand
Libérer: 2025-01-11 10:21:43
original
123 Les gens l'ont consulté

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

Gestion des relations de clés étrangères complexes dans la conception de bases de données

Scénario

Cet exemple explore un défi courant en matière de conception de bases de données : créer une relation de clé étrangère dans laquelle une seule table doit référencer les clés primaires de plusieurs autres tables. Le scénario spécifique implique que la table deductions doit être liée aux tables employees_ce et employees_sn.

Le problème et sa solution

La question est de savoir si une clé étrangère dans deductions peut directement référencer des clés primaires dans employees_ce et employees_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 s'appuie sur un modèle d'héritage bien structuré pour résoudre ce problème.

Approche basée sur l'héritage

Les tables employees, employees_ce et employees_sn représentent une hiérarchie d'héritage. employees est la table de base, avec employees_ce et employees_sn comme tables spécialisées qui en héritent.

Structure de la base de données :

<code class="language-sql">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))</code>
Copier après la connexion

Solution :

Au lieu d'un lien direct vers employees_ce et employees_sn, la table deductions doit faire référence à la table parent commune, employees :

<code class="language-sql">deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))</code>
Copier après la connexion

Cette approche garantit l'intégrité référentielle et évite la redondance. Le employee_id dans deductions renvoie au dossier de l'employé dans employees, que cet employé dispose ou non d'informations supplémentaires dans employees_ce ou employees_sn. Cette conception gère efficacement la relation et maintient la cohérence des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal