Pour créer, modifier ou afficher les caractéristiques générales d'une contrainte d'intégrité d'une entité logique, choisir l'option de menu contextuel correspondante (ou le bouton équivalent) dans la boîte de dialogue Contraintes d'intégrité de l'entité logique.
Cette boîte de dialogue affiche la description d'une contrainte d'intégrité.
Les informations saisies
Nom de la contrainte
Ce champ permet de saisir le nom de la contrainte d'intégrité. Il s'agit d'un nom SQL (128 caractères) qui doit être unique dans le référentiel.
Saisie obligatoire.
Les cases à cocher
Syntaxe étendue
Case cochée |
Le contrôle de saisie sur le nom de la contrainte est désactivé (minuscules, caractères spéciaux et espaces autorisés). |
Case non cochée |
Le nom de la contrainte doit respecter les standards de nommage Adélia. |
Par défaut : case non cochée.
Contrainte active
Case cochée |
La contrainte est active, c'est-à-dire qu'elle est prise en compte lors de la génération du MPD. Si la définition de la contrainte est invalide, elle sera désactivée automatiquement. Remarque : lors de la sauvegarde, pour les contraintes de type clé étrangère, si la contrainte est activée il vous sera proposé, si nécessaire, d'activer la contrainte unique correspondante. |
Par défaut : case cochée pour les contraintes créées manuellement, non cochées pour les contraintes proposées automatiquement.
Les listes
Type de la contrainte
Il existe trois types de contrainte : Clé unique, Clé étrangère, Vérification.
Saisie obligatoire.
Contraintes de type vérification
Les informations saisies
Texte contrainte
Texte libre de la contrainte. Ce texte n'est pas vérifié, seuls les noms de propriété seront substitués.
Lors de la génération, le texte sera substitué en utilisant une règle analogue à la génération du niveau 2 : les identificateurs $PROPRIETE (PROPRIETE étant un nom de propriété de l'entité logique) seront substitués par le mot directeur ou le nom DDS de la propriété en fonction des options de génération.
Contraintes de type clé unique
Les listes
Zones clés
Cette liste affiche les zones de l'entité faisant partie de la clé unique. Les boutons + et - permettent d'ajouter une nouvelle zone ou de supprimer les zones sélectionnées.
Cliquez directement sur une zone pour afficher une liste déroulante permettant de sélectionner les propriétés logiques de l'entité.
Contraintes de type clé étrangère
Les informations saisies
Entité d'origine
Ce champ indique l'entité référencée par la clé étrangère. La saisie se fait à l'aide d'une boîte de sélection qui s'affiche via le bouton "..." attenant au champ de saisie.
La boîte propose les entités logiques ayant une clé unique pour identifiant, générées avec clé (c'est-à-dire ayant une clé primaire au sens SQL) ou ayant au moins une contrainte unique définie.
Les listes
Trigger ON UPDATE
Permet de définir l'action à effectuer quand la clé unique référencée est modifiée dans la table parente.
Les valeurs possibles sont :
NO ACTION |
Pas de mise à jour dans la table parente s'il existe un enregistrement ayant la même valeur de clé dans la table dépendante. |
RESTRICT |
Pas de mise à jour dans la table parente s'il existe un enregistrement ayant la même valeur de clé dans la table dépendante, avec contrôle immédiat afin d'empêcher l'action éventuelle d'autres contraintes (ou déclencheurs) en cas de violation d'intégrité. |
CASCADE |
La mise à jour d'un enregistrement dans la table parente entraîne la mise à jour, dans la table dépendante, des enregistrements ayant la même valeur de clé. Pour ces enregistrements, tous les champs "clé" sont mis à jour avec la nouvelle valeur de la clé correspondante dans la table parente. |
SET NULL |
La mise à jour d'un enregistrement dans la table parente entraîne la mise à jour, dans la table dépendante, des enregistrements ayant la même valeur de clé. Pour ces enregistrements, tous les champs "clé" acceptant une valeur nulle sont mis à jour avec cette valeur nulle. |
SET DEFAULT |
La mise à jour d'un enregistrement dans la table parente entraîne la mise à jour, dans la table dépendante, des enregistrements ayant la même valeur de clé. Pour ces enregistrements, tous les champs "clé" sont mis à jour avec la valeur par défaut de la colonne. |
Trigger ON DELETE
Permet de définir l'action à effectuer quand la clé unique référencée est supprimée de la table parente.
Les valeurs possibles sont :
NO ACTION |
Pas de suppression dans la table parente s'il existe un enregistrement ayant la même valeur de clé dans la table dépendante. |
RESTRICT |
Pas de suppression dans la table parente s'il existe un enregistrement ayant la même valeur de clé dans la table dépendante, avec contrôle immédiat afin d'empêcher l'action éventuelle d'autres contraintes (ou déclencheurs) en cas de violation d'intégrité. |
CASCADE |
La suppression d'un enregistrement dans la table parente entraîne la suppression, dans la table dépendante, des enregistrements ayant la même valeur de clé. |
SET NULL |
La suppression d'un enregistrement dans la table parente entraîne la mise à jour, dans la table dépendante, des enregistrements ayant la même valeur de clé. Pour ces enregistrements, tous les champs "clé" acceptant une valeur nulle sont mis à jour avec cette valeur nulle. |
SET DEFAULT |
La suppression d'un enregistrement dans la table parente entraîne la mise à jour, dans la table dépendante, des enregistrements ayant la même valeur de clé. Pour ces enregistrements, tous les champs "clé" sont mis à jour avec la valeur par défaut de la colonne. |
Zones clés
Cette liste affiche les zones de l'entité faisant partie de la clé (colonne Clé), et les zones de la clé unique (colonne Référence) correspondantes dans l'entité référencée.
Les boutons + et - permettent d'ajouter une nouvelle zone ou de supprimer les zones sélectionnées.
Cliquez directement sur une zone pour afficher une liste déroulante permettant de sélectionner les propriétés logiques de l'entité. Lors de la saisie de la référence, seule les zones compatibles sont affichées.
Remarques sur les règles de mise à jour et de suppression (ON UPDATE et ON DELETE) :
Les différentes options possibles ne sont pas forcément supportées par tous les gestionnaires de bases de données.
- Si le gestionnaire de base de données ne supporte pas l'option RESTRICT, celle-ci est remplacée silencieusement par NO ACTION lors de la génération de la contrainte.
- Si le gestionnaire de base de données ne supporte pas l'option SET DEFAULT, celle-ci est remplacée silencieusement par SET NULL lors de la génération de la contrainte.
- Dans les autres cas d'erreur, la génération échouera avec un code indiquant que la fonction n'est pas supportée.
Les combinaisons possibles sont indiquées dans les tableaux suivants :
ON UPDATE
Access |
DB2 |
Oracle |
SQL Server |
MySQL |
PostgreSQL |
AS/400 |
|
NO ACTION |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
CASCADE |
Oui |
- |
- |
Oui |
Oui |
Oui |
- |
RESTRICT |
- |
Oui |
- |
- |
Oui |
Oui |
Oui |
SET NULL |
- |
- |
- |
Oui |
Oui |
Oui |
- |
SET DEFAULT |
- |
- |
- |
Oui |
- |
Oui |
- |
ON DELETE
Access |
DB2 |
Oracle |
SQL Server |
MySQL |
PostgreSQL |
AS/400 |
|
NO ACTION |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
CASCADE |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
RESTRICT |
- |
Oui |
- |
- |
Oui |
Oui |
Oui |
SET NULL |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
Oui |
SET DEFAULT |
- |
- |
- |
Oui |
- |
Oui |
Oui |
Les boutons
Entrée / Créer / Modifier (validation)
Le bouton Entrée (en mode affichage) ferme la boîte de dialogue.
Le bouton Créer (en mode création) ou Modifier (en mode modification) valide la boîte de dialogue.
Les différentes informations composant la boîte sont contrôlées. Si toutes sont valides, la définition de la contrainte d'intégrité est mise à jour dans la base de données avant la fermeture de la boîte ; sinon un message d'erreur est affiché.
Annuler
Fermeture de la boîte de dialogue sans valider les choix faits.
Par contre, les traitements effectués sur les contraintes d'intégrité ne sont pas annulés.
Raccourci-clavier : Echap.