Maison  >  Article  >  base de données  >  Une clé étrangère peut-elle référencer plusieurs tables dans des associations polymorphes ?

Une clé étrangère peut-elle référencer plusieurs tables dans des associations polymorphes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 02:39:29924parcourir

Can a Foreign Key Reference Multiple Tables in Polymorphic Associations?

Clés étrangères polymorphes : une clé étrangère peut-elle référencer plusieurs tables ?

Le concept de clés étrangères dans les bases de données relationnelles implique généralement de spécifier la cible exacte table vers laquelle une colonne de référence doit pointer. Cependant, lorsqu'il s'agit d'associations polymorphes, où une table a une relation avec plusieurs autres tables d'un ensemble, la question se pose : est-il possible d'avoir une clé étrangère pouvant référencer l'une de ces tables ?

La réponse : non

Dans MySQL et PostgreSQL, une contrainte de clé étrangère ne peut faire référence qu'à une seule table parent. Cette contrainte garantit l'intégrité des données en maintenant une relation claire entre les lignes de référencement et les lignes référencées dans la table parent.

Alternatives pour les associations polymorphes

Puisqu'une clé étrangère ne peut pas pointent directement vers plusieurs tables, des solutions alternatives sont nécessaires pour modéliser les associations polymorphes :

  • Héritage joint : Créer une table unique qui contient toutes les colonnes des tables enfants et une colonne discriminatrice pour identifier à quelle table appartient chaque ligne.
  • Tableau par hiérarchie de classes : Créez des tables séparées pour chaque table enfant et établissez des relations entre elles par héritage.
  • Types d'union :Utilisez une seule colonne pouvant accueillir des valeurs de données de différents domaines, lui permettant de référencer plusieurs tables enfants.

Ressources supplémentaires

Pour plus d'informations sur les associations polymorphes et leurs solutions, reportez-vous aux ressources suivantes :

  • Modèles pratiques orientés objet dans SQL
  • Antipatterns SQL, Volume 1 : Éviter les pièges de la programmation de bases de 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!

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