UML 2 pour les bases de données
202
© Éditions Eyrolles
Le schéma physique sera constitué de trois tables. Les enregistrements des tables PNT et PNC,
dont la colonne dateStage sera non nulle, seront des stagiaires.
Traduction des contraintes d’héritage
Nous étudions à présent les moyens qu’offre le langage SQL pour traduire les contraintes possibles
d’un graphe d’héritage. Cela faisant, nous pourrons discuter des avantages et inconvénients
des différentes décompositions possibles précédemment citées.
Le tableau 3.16 résume les contraintes à mettre en place pour les décompositions d’héritage
possibles, à partir de l’exemple en cours. Nous expliquerons comment programmer avec SQL
les différents prédicats (numérotés de A à D) composant chaque contrainte, en fonction du
schéma relationnel choisi. Nous considérons que les tables relationnelles sont déjà créées.
Décomposition par distinction
Contrainte de partition
La contrainte de partition exprime le fait qu’il n’existe aucun personnel pouvant être à la fois
PNT et PNC (prédicat A), et qu’il n’existe pas non plus de personnel n’étant ni PNT ni PNC
(prédicat B).
Le prédicat A se programme à l’aide de déclencheurs (triggers) sur les tables PNT et PNC.
Concernant les ajouts dans la table PNT et la modification du numéro (numPers), le déclencheur
devra s’assurer qu’il n’existe pas d’enregistrement PNC ayant le même numéro.
Tableau 3.15 Héritage multiple
Schéma logique
Script SQL2
PNC[numPers#, indice, prime,
dateStage]
Personnel[numPers, nomPers]
PNT[numPers#, brevet,
validiteLicence, dateStage]
CREATE TABLE Personnel
(numPers NUMBER, nomPers VARCHAR(20),
CONSTRAINT pk_Personnel PRIMARY KEY(numPers))
CREATE TABLE PNC
(numPers NUMBER,
indice NUMBER,
prime NUMBER(8,2),dateStage DATE,
CONSTRAINT pk_PNC PRIMARY KEY(numPers),
CONSTRAINT fk_PNC_Personnel FOREIGN KEY(numPers)
REFERENCES Personnel(numPers))
CREATE TABLE PNT
(numPers NUMBER, brevet VARCHAR(10),
validiteLicence DATE, dateStage DATE,
CONSTRAINT pk_PNT PRIMARY KEY(numPers),
CONSTRAINT fk_PNT_Personnel FOREIGN KEY(numPers)
REFERENCES Personnel(numPers))
Précédent

- 208/316

Suivant