Database Reference
In-Depth Information
À titre d'exemple, les écritures suivantes décrivent la contrainte de partition (cas A) entre les
navigants et les commerciaux. La première règle, attachée à la classe
Navigant
, signiie
qu'un navigant ne peut pas être commercial. Notez l'utilisation de la fonction
allInstances
qui retourne pour un type donné l'ensemble de ses instances, incluant aussi les instances de
ses sous-classes.
context
Navigant
inv
Partition1 :
Commercial.allInstances.nup
®
excludes(self.nup)
La deuxième, attachée à la classe
Commercial
signiie, d'une manière symétrique, qu'un
commercial ne peut pas être navigant.
context
Commercial
inv
Partition2 :
Navigant.allInstances.nup->excludes(self.nup)
La troisième règle doit être attachée à la classe
Personnel
et signiie :
●
qu'un personnel est soit navigant, soit commercial (par le fait du
ou
exclusif). La fonction
oclIsKindOf
permet de tester la nature de la classe d'un type ;
●
que le numéro est l'identiiant (fonction
isUnique
).
context
Personnel
inv
Partition3 :
(
self.oclIsKindOf
(Navigant)
xor
self.oclIsKindOf
(Commercial))
and
(Personnel.
allInstances
.nup
→
isUnique
(c | c.nup))
Mise en pratique
Rendez-vous à l'exercice 1.10 « Les contraintes » pour écrire formellement les expressions
OCL ain d'enrichir différents schémas.
Règles de validation
La notation UML ne propose aucun moyen de s'assurer de la cohérence d'un diagramme de
classes. Cela est particulièrement pénalisant pour les diagrammes qui visent à modéliser une
base de données. Les règles que vous devrez adopter s'inspirent des règles de validation et de
normalisation introduites avec les modèles entité-association et la méthode Merise. La plupart
de ces règles datent du milieu des années 1970. Ces règles sont majoritairement basées sur les
dépendances fonctionnelles.
Il est aisé de transposer ces règles à vos diagrammes de classes UML de manière à obtenir
automatiquement un schéma relationnel de qualité, en limitant les risques d'erreurs de modé-
lisation lourdes de conséquences au niveau de la base de données.