© Éditions Eyrolles
187
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
Intégrité des données
Les SGBD prennent en compte l’intégrité des données définies via la déclaration de contraintes
ou la programmation de fonctions ou de procédures cataloguées, de paquetages (packages) ou
de déclencheurs (triggers). Le principe est simple : assurer la cohérence de la base après
chaque modification (par INSERT, UPDATE ou DELETE).
Exemples de contraintes
Dans l’exemple, trois contraintes ont été déclarées sur la table Pilote, elles permettent de
programmer les domaines d’attributs du modèle relationnel. La première (pk_pilote)
indique que le numéro du brevet est unique, la deuxième (fk_pilote_compa_compagnie)
indique que la compagnie du pilote doit être référencée dans la table compagnie, la troisième
(ck_age_pilote) définit un intervalle d’âge possible pour tout pilote. Chaque contrainte est
nommée. Ce principe facilite la désactivation temporaire et la réactivation des contraintes avec
la commande ALTER TABLE.
CREATE TABLE pilote
(brevet VARCHAR(8), nom VARCHAR(30), age NUMBER, compa VARCHAR(4),
CONSTRAINT pk_pilote PRIMARY KEY(brevet),
CONSTRAINT fk_pilote_compa_compagnie FOREIGN KEY(compa)
REFERENCES compagnie(comp),
CONSTRAINT ck_age_pilote CHECK (age BETWEEN 20 AND 60))
Supposons que l’état des tables soit le suivant :
SQL> SELECT * FROM compagnie;
COMP NOM_COMP
---- -----------------------------AF
Air France
CAST Castanet Air Lines
SQL> SELECT * FROM pilote;
BREVET
NOM
AGE COMP
-------- ------------------------------ --------- ---3MPY93
Soutou
36 CAST
16AGN65 Bidal
36 CAST
9PAR64
Rival
37 AF
30MPY67 Lamothe
34 AF
25MPY67 Albaric
34 AF
Essayons à présent d’insérer des enregistrements de cette table en ne respectant pas les règles
de gestion déclarées, c’est-à-dire en donnant un numéro de brevet, un code compagnie et un
âge incorrects.
187
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
Intégrité des données
Les SGBD prennent en compte l’intégrité des données définies via la déclaration de contraintes
ou la programmation de fonctions ou de procédures cataloguées, de paquetages (packages) ou
de déclencheurs (triggers). Le principe est simple : assurer la cohérence de la base après
chaque modification (par INSERT, UPDATE ou DELETE).
Exemples de contraintes
Dans l’exemple, trois contraintes ont été déclarées sur la table Pilote, elles permettent de
programmer les domaines d’attributs du modèle relationnel. La première (pk_pilote)
indique que le numéro du brevet est unique, la deuxième (fk_pilote_compa_compagnie)
indique que la compagnie du pilote doit être référencée dans la table compagnie, la troisième
(ck_age_pilote) définit un intervalle d’âge possible pour tout pilote. Chaque contrainte est
nommée. Ce principe facilite la désactivation temporaire et la réactivation des contraintes avec
la commande ALTER TABLE.
CREATE TABLE pilote
(brevet VARCHAR(8), nom VARCHAR(30), age NUMBER, compa VARCHAR(4),
CONSTRAINT pk_pilote PRIMARY KEY(brevet),
CONSTRAINT fk_pilote_compa_compagnie FOREIGN KEY(compa)
REFERENCES compagnie(comp),
CONSTRAINT ck_age_pilote CHECK (age BETWEEN 20 AND 60))
Supposons que l’état des tables soit le suivant :
SQL> SELECT * FROM compagnie;
COMP NOM_COMP
---- -----------------------------AF
Air France
CAST Castanet Air Lines
SQL> SELECT * FROM pilote;
BREVET
NOM
AGE COMP
-------- ------------------------------ --------- ---3MPY93
Soutou
36 CAST
16AGN65 Bidal
36 CAST
9PAR64
Rival
37 AF
30MPY67 Lamothe
34 AF
25MPY67 Albaric
34 AF
Essayons à présent d’insérer des enregistrements de cette table en ne respectant pas les règles
de gestion déclarées, c’est-à-dire en donnant un numéro de brevet, un code compagnie et un
âge incorrects.
