Exemple de contrainte d`intégrité référentielle

Le seul côté est facultatif. Ce cas révèle qu`Oracle effectue sa vérification de contrainte une fois que l`instruction a été complètement exécutée. Affectez des noms aux contraintes NOT NULL, UNIQUE KEY, PRIMARY KEY, FOREIGN KEY et CHECK à l`aide de l`option CONSTRAINT de la clause CONSTRAINT. En fait, le modèle relationnel prend en charge la théorie bien définie des contraintes sur les attributs ou les tables. Les déclencheurs de base de données peuvent fournir cet avantage, mais la complexité de l`implémentation est beaucoup plus grande que l`approche déclarative utilisée pour les contraintes d`intégrité. Par exemple, l`ID de l`employé (EID) doit être unique ou la date de naissance de l`employé est dans la fourchette [1er janvier, 1950, 1er janvier 2000]. Un autre type de contrainte d`intégrité référentielle, illustré à la figure 21-7, est appelé contrainte d`intégrité auto-référentielle. Oracle vous permet également d`appliquer des règles d`intégrité avec une approche non déclarative à l`aide de déclencheurs de base de données (procédures de base de données stockées automatiquement appelées sur les opérations d`insertion, de mise à jour ou de suppression). Les valeurs par défaut sont également utiles lorsque vous utilisez une vue pour rendre visible un sous-ensemble des colonnes d`une table. Cela est pratique car les informations de stockage restent disponibles après la désactivation d`une contrainte. Si les règles d`entreprise sont incorrectes, la conception sera incorrecte, et finalement l`application générée ne fonctionnera pas comme prévu par les utilisateurs. Cette assertion est toujours vraie lorsque la contrainte est activée.

Toutefois, dans ce cas, les employés doivent avoir une référence à un département spécifique. Vous ne pouvez pas activer la contrainte tant que toutes les exceptions ne sont pas mises à jour ou supprimées. De la même manière qu`une colonne (ou des colonnes) d`une table de base de données peut référencer la clé primaire d`une autre table, une propriété (ou des propriétés) d`un type d`entité peut référencer la clé d`entité d`un autre type d`entité. Les instructions SQL sont faciles à écrire et à éliminer les erreurs de programmation. La sémantique des déclarations de contrainte d`intégrité est clairement définie et les optimisations de performances sont implémentées pour chaque règle déclarative spécifique. Par exemple, une application Oracle Forms peut utiliser des définitions de contrainte d`intégrité stockées dans le dictionnaire de données pour vérifier les violations en tant que valeurs sont entrées dans les champs d`un formulaire, avant même que l`application émet une instruction. Si vous créez plusieurs contraintes CHECK pour une colonne, concevez-les soigneusement afin que leurs objectifs ne soient pas en conflit. Il est également possible de spécifier des actions DRI sur UPDATE et DELETE, telles que CASCADE (transfère une modification/suppression dans la table référencée aux tables de référencement), aucune ACTION (si la ligne spécifique est référencée, la modification de la clé n`est pas autorisée) ou SET NULL/SET DEFAULT (un clé modifiée/supprimée dans la table référencée entraîne la définition des valeurs de référencement à NULL ou à la valeur DEFAULT si une est spécifiée). Les valeurs par défaut peuvent inclure n`importe quel littéral, ou presque n`importe quelle expression, y compris les appels à SYSDATE, SYS_CONTEXT, USER, USERENV et UID.

L`instruction SET CONSTRAINTS s`applique uniquement à la transaction en cours. Dans le cas où une clé composite ne peut autoriser que toutes les valeurs null ou toutes les valeur, vous devez utiliser une contrainte d`intégrité CHECK.