UML 2 pour les bases de données
224
© Éditions Eyrolles
Associations un-à-un
Examinons les différentes possibilités qu’offre SQL3 pour implanter une association un-à-un
entre deux classes C1 et C2. Nous recensons deux familles de possibilités.
Solutions 1 et 2 Définition d’un attribut REF ou FOREIGN KEY dans le type qui décrit C1. Cet
attribut pointe vers le type qui décrit C2. La deuxième solution est symétrique à la première.
Solution 3 Définition d’un type qui contient deux attributs REF ou FOREIGN KEY vers les types
décrivant C1 et C2.
En utilisant deux attributs REF dans la dernière solution, on obtient la solution universelle, qui
convient à tous les types d’associations.
Afin de maintenir la cohérence des cardinalités maximales 1, il conviendrait de définir une
contrainte UNIQUE sur chaque référence. Pour les attributs de type FOREIGN KEY, l’opération est
possible. En revanche, pour les attributs de type REF, ce n’est pas toujours permis par le SGBD.
L’exemple suivant concerne l’association un-à-un entre Stage et Etudiant.
Notation UML
Script SQL3
Adoptons la première solution d’implantation. La multiplicité minimale 1 côté Stage se
traduit à l’aide d’une contrainte de type NOT NULL sur la référence. Oracle permet en outre de
limiter la portée par la directive SCOPE IS ou de poser une contrainte de clé étrangère REFERENCES (voir tableau 3-25).
Figure 3-26 Association un-à-un UML
0..1
Stage
Etudiant
nstage
theme
netu
nom
age
Effectue
1
224
© Éditions Eyrolles
Associations un-à-un
Examinons les différentes possibilités qu’offre SQL3 pour implanter une association un-à-un
entre deux classes C1 et C2. Nous recensons deux familles de possibilités.
Solutions 1 et 2 Définition d’un attribut REF ou FOREIGN KEY dans le type qui décrit C1. Cet
attribut pointe vers le type qui décrit C2. La deuxième solution est symétrique à la première.
Solution 3 Définition d’un type qui contient deux attributs REF ou FOREIGN KEY vers les types
décrivant C1 et C2.
En utilisant deux attributs REF dans la dernière solution, on obtient la solution universelle, qui
convient à tous les types d’associations.
Afin de maintenir la cohérence des cardinalités maximales 1, il conviendrait de définir une
contrainte UNIQUE sur chaque référence. Pour les attributs de type FOREIGN KEY, l’opération est
possible. En revanche, pour les attributs de type REF, ce n’est pas toujours permis par le SGBD.
L’exemple suivant concerne l’association un-à-un entre Stage et Etudiant.
Notation UML
Script SQL3
Adoptons la première solution d’implantation. La multiplicité minimale 1 côté Stage se
traduit à l’aide d’une contrainte de type NOT NULL sur la référence. Oracle permet en outre de
limiter la portée par la directive SCOPE IS ou de poser une contrainte de clé étrangère REFERENCES (voir tableau 3-25).
Figure 3-26 Association un-à-un UML
0..1
Stage
Etudiant
nstage
theme
netu
nom
age
Effectue
1
