Partie I
SQL de base
24
© Éditions Eyrolles
q
La contrainte FOREIGN KEY déclare une clé étrangère entre une table enfant (child) et une
table père (parent). Ces contraintes définissent l’intégrité référentielle que nous aborderons plus tard. Les directives ON UPDATE et ON DELETE disposent de quatre options que
nous détaillerons avec les directives MATCH à la section Intégrité référentielle du
chapitre 2).
La contrainte CHECK impose un domaine de valeurs ou une condition simple ou complexe entre
colonnes (exemple : CHECK (note BETWEEN 0 AND 20), CHECK (grade='Copilote' OR
grade='Commandant')). Cette contrainte est prise en charge au niveau de la déclaration
mais n’est pas encore opérationnelle même dans la version 5.1.
Il est recommandé de ne pas définir de contraintes sans les nommer (bien que cela soit possible), car il sera difficile de les faire évoluer (désactivation, réactivation, suppression), et la lisibilité des programmes en sera affectée.
Nous verrons au chapitre 3 comment ajouter, supprimer, désactiver et réactiver des contraintes
(options de la commande ALTER TABLE).
Conventions recommandées
Adoptez les conventions d’écriture suivantes pour vos contraintes :
• Préfixez par pk_ le nom d’une contrainte clé primaire, fk_ une clé étrangère, ck_ une vérification, un_ une unicité.
• Pour une contrainte clé primaire, suffixez du nom de la table la contrainte (exemple pk_
Avion).
• Pour une contrainte clé étrangère, renseignez (ou abrégez) les noms de la table source, de
la clé, et de la table cible (exemple fk_Pil_compa_Comp).
En respectant nos conventions, déclarons les tables de l’exemple suivant (Compagnie avec sa
clé primaire et Avion avec sa clé primaire et sa clé étrangère). Du fait de l’existence de la clé
étrangère, la table Compagnie est dite « parent » (ou « père ») de la table Avion « enfant »
(ou « fils »). Cela résulte de la traduction d’une association un-à-plusieurs entre les deux
tables (De UML à SQL, Eyrolles 2002). Nous reviendrons sur ces principes à la section Intégrité référentielle du prochain chapitre.
Précédent

- 46/418

Suivant