Gestion des clés étrangères de plusieurs tables
Vous disposez de trois tables : régions, pays et États. Les pays et les États peuvent appartenir à des régions, formant une structure hiérarchique. Maintenant, vous souhaitez créer une table "popular_areas" avec les colonnes "region_id" et "popular_place_id" et établir une relation de clé étrangère entre "popular_place_id" et les pays ou états basés sur une colonne "popular_place_type".
Ceci Ce scénario présente un défi car les contraintes de clé étrangère SQL font généralement référence à une seule table cible. Cependant, il existe un concept connu sous le nom d'associations polymorphes dans la conception de bases de données qui tente de résoudre ce problème.
Associations polymorphes : joindre plusieurs tables avec un supertype commun
Les associations polymorphes permettent une clé étrangère pour faire référence à l’une des nombreuses tables cibles possibles. Ceci est réalisé en utilisant une colonne supplémentaire pour spécifier la table cible référencée. Par exemple, dans votre cas, vous auriez besoin d'une colonne "popular_place_type" pour déterminer si "popular_place_id" fait référence à un pays ou à un état.
Cependant, les associations polymorphes ont des limitations dans SQL en raison de contraintes. SQL ne peut pas assurer la cohérence des bases de données avec des associations polymorphes. Au lieu de cela, il s'appuie sur l'application ou le framework implémentant ces associations pour garantir l'intégrité des données.
Solutions alternatives pour les références de clé étrangère à plusieurs tables
Pour maintenir l'intégrité référentielle sans polymorphisme Associations, envisagez ces alternatives :
Intégrité relationnelle et violation des formes normales
Il est important de noter que les associations polymorphes violent les principes de normalisation des bases de données. La première forme normale (1NF) interdit de mélanger différentes significations dans une seule colonne, ce qui se produit lors du stockage des identifiants d'État et de pays dans une seule colonne « popular_place_id ». Les associations polymorphes violent également la troisième forme normale (3NF) car la signification de la colonne "popular_place_id" dépend de la colonne supplémentaire "popular_place_type".
En résumé, les associations polymorphes offrent une solution potentielle pour les relations de clé étrangère avec plusieurs tables. en SQL. Cependant, ils introduisent des problèmes d’intégrité des données et violent les principes de normalisation des bases de données. Envisagez les approches alternatives mentionnées ci-dessus pour une gestion robuste 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