UML 2 pour les bases de données
138
© Éditions Eyrolles
Associations plusieurs-à-plusieurs
Les possibilités que nous retenons sont les suivantes :
Une association plusieurs-à-plusieurs entre deux entités (classes) peut se modéliser de deux
manières dans un modèle objet :
• avec deux classes, dont l’une contenant une collection de références ;
• avec une troisième classe contenant éventuellement une collection de références.
Il est aussi possible de privilégier chaque attribut de l’association [SOU 04]. L’exemple que nous
utilisons est celui des affrètements d’avions par des compagnies à une date donnée (figure 2-30).
Les schémas basés sur deux classes décrits à la figure 2-41 consistent à définir dans la classe
privilégiée (au niveau de l’accès aux données) une collection de références composée des attributs dateaff et d’une référence vers la classe à mettre en association.
On choisira d’utiliser une collection de références si on désire privilégier l’accès par telle ou
telle autre classe. Dans le cas inverse, la solution mettant en œuvre trois classes sans collection doit être préférée.
Les autres solutions consistent à définir une troisième classe. Dans notre exemple, la troisième
classe est Affreter. Elle contient tantôt la collection avions, tantôt la collection compagnies. Ces collections sont composées des attributs de l’association (ici dateaff) et d’une
référence (ou de plusieurs si l’association est n-aire) vers la classe à mettre en association.
Figure 2-41 Transformation avec une collection de références
R7
Compagnie[ncomp, nomcomp, affretements{@ref_avion, dateaff}]
Avion[immat, typeav]
ou
Avion[immat, typeav, affretements{@ref_compagnie, dateaff}]
Compagnie[ncomp, nomcomp]
138
© Éditions Eyrolles
Associations plusieurs-à-plusieurs
Les possibilités que nous retenons sont les suivantes :
Une association plusieurs-à-plusieurs entre deux entités (classes) peut se modéliser de deux
manières dans un modèle objet :
• avec deux classes, dont l’une contenant une collection de références ;
• avec une troisième classe contenant éventuellement une collection de références.
Il est aussi possible de privilégier chaque attribut de l’association [SOU 04]. L’exemple que nous
utilisons est celui des affrètements d’avions par des compagnies à une date donnée (figure 2-30).
Les schémas basés sur deux classes décrits à la figure 2-41 consistent à définir dans la classe
privilégiée (au niveau de l’accès aux données) une collection de références composée des attributs dateaff et d’une référence vers la classe à mettre en association.
On choisira d’utiliser une collection de références si on désire privilégier l’accès par telle ou
telle autre classe. Dans le cas inverse, la solution mettant en œuvre trois classes sans collection doit être préférée.
Les autres solutions consistent à définir une troisième classe. Dans notre exemple, la troisième
classe est Affreter. Elle contient tantôt la collection avions, tantôt la collection compagnies. Ces collections sont composées des attributs de l’association (ici dateaff) et d’une
référence (ou de plusieurs si l’association est n-aire) vers la classe à mettre en association.
Figure 2-41 Transformation avec une collection de références
R7
Compagnie[ncomp, nomcomp, affretements{@ref_avion, dateaff}]
Avion[immat, typeav]
ou
Avion[immat, typeav, affretements{@ref_compagnie, dateaff}]
Compagnie[ncomp, nomcomp]
