UML 2 pour les bases de données
220
© Éditions Eyrolles
On peut formuler cette contrainte de la manière suivante : les occurrences de l’association
Installe doivent être incluses dans les occurrences issues de la jointure entre les associations
Achat et Utilisation (voir la figure 3-25).
L’inclusion entre trois associations (et plus) se programme à l’aide d’un un déclencheur (situé
dans la table ciblée par la contrainte).
CREATE TABLE Logiciel
(nomlogi VARCHAR(20), editeur VARCHAR(30),
CONSTRAINT pk_logiciel PRIMARY KEY(nomlogi));
CREATE TABLE Departement
(codedept VARCHAR(8), nomdept VARCHAR(30), budget NUMBER,
CONSTRAINT pk_departement PRIMARY KEY(codedept));
CREATE TABLE Serveur
(nomserv VARCHAR(8), typeserv VARCHAR(30),
CONSTRAINT pk_serveur PRIMARY KEY(nomserv));
CREATE TABLE Achat
Tableau 3.23 Contraintes d’inclusion
Schéma logique
Script SQL2 (Oracle)
Stage[numsta, theme, responsable]
Etudiant[ninsee, nom, numsta#]
Voeux[ninsee#, numsta#]
CREATE TABLE stage
(numsta VARCHAR(10), theme VARCHAR(20),
responsable VARCHAR(20),
CONSTRAINT pk_stage PRIMARY KEY(numsta))
CREATE TABLE etudiant
(ninsee VARCHAR(13), nom VARCHAR(30),
numsta VARCHAR(10),
CONSTRAINT pk_etudiant PRIMARY KEY(ninsee),
CONSTRAINT fk_etudiant_stage
FOREIGN KEY(numsta) REFERENCES stage(numsta))
CREATE TABLE voeux
(ninsee VARCHAR(13), numsta VARCHAR(10),
CONSTRAINT fk_voeux_stage
FOREIGN KEY(numsta) REFERENCES stage(numsta),
CONSTRAINT fk_voeux_etudiant FOREIGN KEY(ninsee)
REFERENCES etudiant(ninsee),
CONSTRAINT pk_voeux PRIMARY KEY(ninsee,numsta))
ALTER TABLE etudiant ADD CONSTRAINT fk_inclusion
FOREIGN KEY(ninsee,numsta)
REFERENCES voeux(ninsee,numsta))
220
© Éditions Eyrolles
On peut formuler cette contrainte de la manière suivante : les occurrences de l’association
Installe doivent être incluses dans les occurrences issues de la jointure entre les associations
Achat et Utilisation (voir la figure 3-25).
L’inclusion entre trois associations (et plus) se programme à l’aide d’un un déclencheur (situé
dans la table ciblée par la contrainte).
CREATE TABLE Logiciel
(nomlogi VARCHAR(20), editeur VARCHAR(30),
CONSTRAINT pk_logiciel PRIMARY KEY(nomlogi));
CREATE TABLE Departement
(codedept VARCHAR(8), nomdept VARCHAR(30), budget NUMBER,
CONSTRAINT pk_departement PRIMARY KEY(codedept));
CREATE TABLE Serveur
(nomserv VARCHAR(8), typeserv VARCHAR(30),
CONSTRAINT pk_serveur PRIMARY KEY(nomserv));
CREATE TABLE Achat
Tableau 3.23 Contraintes d’inclusion
Schéma logique
Script SQL2 (Oracle)
Stage[numsta, theme, responsable]
Etudiant[ninsee, nom, numsta#]
Voeux[ninsee#, numsta#]
CREATE TABLE stage
(numsta VARCHAR(10), theme VARCHAR(20),
responsable VARCHAR(20),
CONSTRAINT pk_stage PRIMARY KEY(numsta))
CREATE TABLE etudiant
(ninsee VARCHAR(13), nom VARCHAR(30),
numsta VARCHAR(10),
CONSTRAINT pk_etudiant PRIMARY KEY(ninsee),
CONSTRAINT fk_etudiant_stage
FOREIGN KEY(numsta) REFERENCES stage(numsta))
CREATE TABLE voeux
(ninsee VARCHAR(13), numsta VARCHAR(10),
CONSTRAINT fk_voeux_stage
FOREIGN KEY(numsta) REFERENCES stage(numsta),
CONSTRAINT fk_voeux_etudiant FOREIGN KEY(ninsee)
REFERENCES etudiant(ninsee),
CONSTRAINT pk_voeux PRIMARY KEY(ninsee,numsta))
ALTER TABLE etudiant ADD CONSTRAINT fk_inclusion
FOREIGN KEY(ninsee,numsta)
REFERENCES voeux(ninsee,numsta))
