Maison > base de données > tutoriel mysql > Une seule clé étrangère peut-elle référencer plusieurs clés primaires dans différentes tables ?

Une seule clé étrangère peut-elle référencer plusieurs clés primaires dans différentes tables ?

Patricia Arquette
Libérer: 2025-01-11 09:15:43
original
681 Les gens l'ont consulté

Can a Single Foreign Key Reference Multiple Primary Keys in Different Tables?

Est-il possible qu'une clé étrangère fasse référence à plusieurs clés primaires sur différentes tables ?

Une question fréquente de conception de base de données implique de référencer des clés primaires de plusieurs tables à l'aide d'une seule colonne de clé étrangère. Illustrons avec un exemple :

Base de données : informations sur les employés

Tableaux :

  • employees_ce (Clé primaire : empid)
  • employees_sn (Clé primaire : empid)
  • deductions (Clé étrangère : id)

La clé étrangère id de la table deductions peut-elle faire référence à la fois aux clés empid primaires de employees_ce et de employees_sn ?

La solution :

Bien qu'il puisse sembler intuitif de lier une seule clé étrangère à plusieurs clés primaires dans différentes tables, la conception standard d'une base de données ne le permet pas. La meilleure pratique consiste à introduire une table de liaison pour connecter les entités liées.

Structure de base de données améliorée :

  • employees (Clé primaire : id)
  • employees_ce (Clé étrangère : id)
  • employees_sn (Clé étrangère : id)
  • deductions (Clé étrangère : employee_id)

Cette structure révisée utilise une seule table employees avec une clé primaire (id) pour représenter tous les employés, quel que soit leur type. employees_ce et employees_sn utilisent désormais des clés étrangères faisant référence à la colonne id dans employees, les liant à leurs catégories d'employés respectives. La clé étrangère de la table deductions, employee_id, pointe vers la clé primaire de la table employees. Cette approche garantit l'intégrité des données et simplifie les requêtes et les jointures entre les tables.

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