UML 2 pour les bases de données
134
© Éditions Eyrolles
Transformation de l’héritage multiple
Les trois décompositions que nous avons étudiées peuvent s’appliquer à l’héritage multiple.
Chaque association présente dans la hiérarchie pourra être traduite par distinction, de manière
descendante ou de manière ascendante. Nous discuterons des avantages et des inconvénients
de chaque décomposition dans le chapitre suivant (SQL).
Ainsi, pour le schéma 2-35, il est possible de combiner différentes décompositions pour le
même graphe d’héritage. Dans notre exemple, nous choisissons d’utiliser la décomposition
par distinction pour le premier niveau d’héritage, et la décomposition ascendante (push-up)
pour le second niveau d’héritage. Les relations finales sont notées en gras.
Agrégations UML
Alors que l’agrégation partagée de UML se traduit au niveau logique comme une simple association, il n’en est pas de même pour la composition. L’exemple 2-36 décrit le schéma relationnel déduit d’une composition (on suppose que l’attribut a identifie la classe composante
et que l’attribut c identifie la classe composite).
La clé primaire des relations déduites des classes composantes doit contenir l’identifiant de la
classe composite (quelles que soient les multiplicités).
Figure 2-35 Décomposition d’une association d’héritage multiple
Personnel
numPers
nomPers
PNT
brevet
validiteLicence
distinction
PNC
indice
prime
PNT[numPers#, brevet, validiteLicence]
Stagiaire
dateStage
push-up
Personnel[numPers, nomPers]
PNC[numPers#, indice, prime]
PNT[numPers#, brevet, validiteLicence,
dateStage]
PNC[numPers#, indice, prime, dateStage]
{incomplete,disjoint}
Précédent

- 141/316

Suivant