© Éditions Eyrolles
217
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
Traduction des contraintes
Cette section est consacrée à la programmation SQL2 des différentes contraintes du niveau
conceptuel (partition, exclusivité, totalité, inclusion et simultanéité).
Contrainte de partition
Considérons l’exemple des pilotes (caractérisés par un numéro, un nom et un grade) qui
partent soit en mission sanitaire, soit en mission d’entraînement. La contrainte de partition
détermine le fait qu’aucun pilote n’est au repos ou ne mène de front des missions des deux
types. Les modèles conceptuels sont illustrés figures 1-37 et 1-40.
La partition se programme par une contrainte SQL de validation (CHECK).
Tableau 3.22 Contrainte de partition
Schéma logique
Script SQL2 (Oracle)
Sanitaire[codesan, organisme]
Pilote[numpil, nom, grade, sani#,
entraine#]
Entrainement[codent, datent, region]
CREATE TABLE sanitaire
(codesan
VARCHAR(10),
organisme VARCHAR(20),
CONSTRAINT pk_sanitaire PRIMARY KEY(codesan))
CREATE TABLE entrainement
(codent VARCHAR(10), datent DATE,
region VARCHAR(20),
CONSTRAINT pk_entraine PRIMARY KEY(codent))
CREATE TABLE pilote
(numpil NUMBER, nom VARCHAR(10),
grade VARCHAR(10),
sani
VARCHAR(10), entraine VARCHAR(10),
CONSTRAINT fk_pilote_sanitaire
FOREIGN KEY(sani)
REFERENCES sanitaire(codesan),
CONSTRAINT fk_pilote_entrainement
FOREIGN KEY(entraine)
REFERENCES entrainement(codent),
CONSTRAINT ck_partition CHECK
((sani IS NOT NULL OR entraine IS NOT NULL)
AND NOT
(sani IS NOT NULL AND entraine IS NOT NULL)),
CONSTRAINT pk_pilote PRIMARY KEY(numpil))
Précédent

- 223/316

Suivant