UML 2 pour les bases de données
218
© Éditions Eyrolles
Contrainte d’exclusivité
Dans notre exemple, un pilote peut être au repos (affecté à aucune mission). Si un pilote est
affecté à un exercice d’entraînement, alors il ne peut pas être affecté à une mission sanitaire et
réciproquement.
L’exclusivité se programme par une contrainte SQL de validation (CHECK).
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 pk_pilote PRIMARY KEY(numpil))
Contrainte de totalité
Dans notre exemple, un pilote peut être affecté à la fois à une mission sanitaire et à un exercice
d’entraînement, et tous les pilotes participent à au moins une mission.
La totalité se programme par une contrainte SQL de validation (CHECK).
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 pk_pilote PRIMARY KEY(numpil))
CONSTRAINT ck_exclusivite CHECK
(sani ISNULL OR entraine IS NULL),
CONSTRAINT ck_totalité CHECK
➥(NOT (sani IS NULL AND entraine IS NULL)),
Précédent

- 224/316

Suivant