Je lisais les erreurs de conception de base de données les plus courantes commises par le développeur Q&A sur stackoverflow. À la première réponse, il y avait une phrase sur l'arc exclusif:
Un arc exclusif est une erreur courante lorsqu'une table est créée avec deux ou plusieurs clés étrangères où une et une seule d'entre elles peuvent être non nulles. Grosse erreur. D'une part, il devient beaucoup plus difficile de maintenir l'intégrité des données. Après tout, même avec l'intégrité référentielle, rien n'empêche la définition de deux ou plusieurs de ces clés étrangères (malgré les contraintes de vérification complexes).
Je ne comprends vraiment pas pourquoi l'arc exclusif est mauvais. Je n'en ai probablement pas compris les bases. Y a-t-il une bonne explication sur les arcs exclusifs?
la source
alter table mytable add constraint myconstraint check ((col1 is not null and col2 is null and col3 is null) or (col1 is null and col2 is not null and col3 is null) or (col1 is null and col2 is null and col3 is not null))
. Je n'aime pas les arcs exclusifs mais ils peuvent être appliqués avec une contrainte de vérification. Bien entendu, la contrainte FK doit également être présente.Il n'y a rien de mal dans les arcs exclusifs. Appliquez simplement la règle métier correspondante à l'aide d'une contrainte de vérification. La plupart des principaux systèmes de gestion de base de données prennent en charge les contraintes de vérification (Oracle, SQL Server, PostgreSQL). Si vous utilisez un outil de modélisation de données, il y a de fortes chances que votre outil génère automatiquement le code pour implémenter la contrainte de vérification.
la source
L'arc exclusif est très utile dans la conception conceptuelle ou logique. Cela ne signifie pas que vous devez mettre en œuvre de cette façon. Dans l'exemple précédent, le concepteur peut décider d'implémenter la conception avec trois tables. Un pour l'emplacement de stationnement, un pour l'employé et un pour l'atelier d'entretien.
la source