![How to Maintain Referential Integrity in Exclusive and Non-Exclusive Subtype Database Implementations?](https://img.php.cn/upload/article/000/000/000/173570042280634.jpg)
Intégrité référentielle dans les implémentations de sous-types
Introduction
L'intégrité référentielle dans les structures de sous-types garantit qu'il y a est une relation valide entre les tables parent et enfant. Les sous-types exclusifs n'autorisent qu'un seul sous-type pour un parent donné, tandis que les sous-types non exclusifs autorisent plusieurs sous-types.
Sous-types exclusifs
Pour implémenter l'intégrité référentielle pour les sous-types exclusifs :
-
Colonne Discriminateur : Ajouter un colonne discriminateur à la table parent pour indiquer le sous-type.
- Implémentez une CONTRAINTE CHECK pour vous assurer que la valeur du discriminateur se situe dans la plage autorisée.
-
Relation clé primaire-clé étrangère : La clé primaire de la table parent devient la clé étrangère dans la table des sous-types, garantissant un seul sous-type par parent rangée.
-
Fonction définie par l'utilisateur (UDF) : Créez une UDF qui vérifie si la clé primaire et le discriminateur existent dans la table parent.
-
VÉRIFIER LA CONTRAINTE dans la table des sous-types : Implémentez une CONTRAINTE CHECK dans la table des sous-types pour appeler l'UDF et valider le parent existence.
-
Vérifications des transactions :Utilisez la logique transactionnelle pour vérifier qu'au moins un sous-type existe pour chaque parent.
Sous-types non exclusifs
Pour non exclusif sous-types :
-
Relation entre clé primaire et clé étrangère :Établir une relation entre clé primaire et clé étrangère comme dans les sous-types exclusifs.
-
Contrôle d'existence : Effectuez une vérification d'existence sur la table de sous-type à l'aide de la clé primaire parent pour déterminer si un sous-type existe ou non.
Avantages de l'approche basée sur l'UDF
- Évite la duplication des données et la surabondance des indices.
- Gère les scénarios dans lesquels le sous-type n'est pas présent au moment du parent insérer.
Réponse aux commentaires
-
Protection contre les mises à jour contre le discriminateur : Les normes d'architecture ouverte (transactions ACID) empêchent les mises à jour non autorisées . De plus, l'accès contrôlé à la base de données et l'utilisation des transactions garantissent que les mises à jour préservent l'intégrité des données.
-
UDF vs. Duplicate Discriminator FK : Les UDF offrent une solution plus efficace et plus flexible sans nécessiter de ressources supplémentaires. tableaux et indices.
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