UML 2 pour les bases de données
226
© Éditions Eyrolles
La dernière solution correspond à la solution universelle.
Dans l’exemple 3-27, choissisons de dériver l’association Detachement par la première
solution, et l’autre avec la deuxième solution.
Notation UML
Script SQL3
Pour traduire l’association Detachement, la référence refSani est placée dans le type fils
(pilote_type) et une contrainte de clé étrangère est définie au niveau de la table Pilote. La
multiplicité 1 du côté Sanitaire est programmée à l’aide d’une contrainte NOT NULL. Une
collection de références est utilisée pour l’association Operation (voir tableau 3-25).
À propos des collections
L’utilisation d’une collection peut privilégier l’accès aux données au niveau de la table qui la
contient. Il n’est en général pas possible de définir des contraintes de clé étrangère au niveau
d’une référence dans une collection.
Dans notre exemple, l’extraction des missions d’entraînement pour un pilote donné sera plus
aisée que l’obtention de la liste des pilotes concernés par une mission d’entraînement.
Si on utilise la solution universelle, il convient de définir une contrainte UNIQUE sur la référence
qui répertorie la classe affectée de la multiplicité *. Oracle ne permet pas de définir une telle
contrainte sur un attribut REF.
Figure 3-27 Associations un-à-plusieurs UML
Pilote
Sanitaire
Entrainement
numpil
nom
grade
codent
dateEnt
region
codesan
organisme
Detachement
Operation
0..*
0..1
0..*
1
Précédent

- 232/316

Suivant