Maison >base de données >tutoriel mysql >Une clé étrangère peut-elle référencer plusieurs clés primaires dans différentes tables, et quelle est la meilleure alternative ?

Une clé étrangère peut-elle référencer plusieurs clés primaires dans différentes tables, et quelle est la meilleure alternative ?

DDD
DDDoriginal
2025-01-11 08:16:41320parcourir

Can a Foreign Key Reference Multiple Primary Keys in Different Tables, and What's the Best Alternative?

Référence de clé étrangère croisée

Cet article explore la possibilité de créer des clés étrangères dans une table pour référencer les clés primaires de plusieurs autres tables. Plus précisément, il s’articule autour d’un scénario posé par celui qui pose la question.

Interprétation de scène

Le questionneur a deux tables, employees_ce et employees_sn, chacune avec sa propre colonne de clé primaire. Ils ont également une troisième table appelée deductions qui nécessite une clé étrangère pour référencer les clés primaires de employees_ce et employees_sn. L'exemple fourni illustre davantage cette situation :

<code>employees_ce
--------------
empid   name
khce1   prince

employees_sn
----------------
empid   name
khsn1   princess</code>
<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

Solution

Bien que l'objectif de l'interrogateur soit techniquement réalisable, il ne s'agit pas d'une bonne pratique en matière de conception de bases de données. La méthode préconisée est de définir une table intermédiaire pour relier les deux tables, par exemple :

<code>employees
----------------
empid   name

employees_types
---------------
empid   type
khce1   ce
khsn1   sn</code>

Avec cette configuration, la table deductions peut avoir une clé étrangère référençant la colonne employees dans la table empid, créant ainsi une relation simple entre les trois tables.

<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

Avantages de la méthode du tableau intermédiaire

La méthode du tableau intermédiaire offre les avantages suivants :

  • Il simplifie la gestion des données en fournissant un point de référence unique pour référencer les employés.
  • Cela évite le problème des clés étrangères faisant référence à plusieurs clés primaires, ce qui peut entraîner des incohérences et des problèmes d'intégrité des données.
  • Il permet flexibilité et extensibilité, avec la possibilité d'ajouter d'autres types d'employés sans changer le deductions tableau.

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!

Déclaration:
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