Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Confusion(s) sur la position des Cardinalités (respectivement Multiplicités) dans les MCD de MERISE (resp. dans les diagrammes de classe UML)

1 réponse
Avatar
Christian
Bonjour,

Il me semble qu'il y a des choix opposés dans les représentations des
cardinalités/multiplicités dans :
- les diagrammes de classe UML
- les Modèle Conceptuels de Données (MCD) de MERISE

Voici un exemple : je modélise des "Commandes" et des "Lignes de commandes"
dans un logiciel de facturation.

En UML, j'aurais deux CLASSES "Commande" et "Ligne de commande"
En MERISE se seront deux ENTITES.

Dans l'un et l'autre de ses langage il y a une ASSOCIATION entre les deux.

**** En UML on peut représenter cela par (référence : 'Le tout en poche
UML" de Martin Fowler - Campus Press - p69):

'Commande'--1----------------------------------------*-(ligne)-'Ligne de
Commande'
(ligne) est le nom du ROLE de la 'Ligne de commande' dans la 'Commande'
La MULTIPLICITE des rôles correspond au nombre d'objets succeptibles de
participer à une association.
'*' signifie que de 0 à n lignes de commandes sont associés à une commande
'1' signifie que une seule commande est associée à une ligne de commande.
Notons que dans le diagramme le '1' est du coté de 'Commande', et le '*' du
coté de la ligne.

*** Dans un MCD de MERISE on peut le représenter par (référence : je
m'inspire de l'exemple que l'on trouve à l'adresse suivante
http://sqlpro.developpez.com/Merise/SGBDRmerise1.html#MERISE24) :

'Commande'--1,n-----------(appartient)----------------1,1--'Ligne de
commande'

Cela signifie qu'une 'ligne de commande' appartient à une et une seule
'commande' mais qu'une commande contient de 1 à n lignes de commandes.

*** Mes questions :

Mes représentation sont-elles justes ?
Sinon où me suis-je trompé ? Il me semble pourtant avoir suivi les principes
des exemples cités en référence.
Si oui, il me semble que selon la représentation on inverse la position des
cardialités/multiplicités.
Pour moi cela est une source de confusion permanente. Je ne sais pas de quel
coté des associations mettre les cardinalitéss/multiplicités.

Quelqu'un peut-il me donner une explication claire sur ce sujet et une
méthode non ambigue pour me débrouiller avec les cardinalités/multiplicités
(en particulier avec leur position dans les diagrammes) ?

Par avance merci,

Christian

1 réponse

Avatar
Mathieu Roger
Christian a écrit :
Bonjour,

Il me semble qu'il y a des choix opposés dans les représentations des
cardinalités/multiplicités dans :
- les diagrammes de classe UML
- les Modèle Conceptuels de Données (MCD) de MERISE

Voici un exemple : je modélise des "Commandes" et des "Lignes de commandes"
dans un logiciel de facturation.

En UML, j'aurais deux CLASSES "Commande" et "Ligne de commande"
En MERISE se seront deux ENTITES.

Dans l'un et l'autre de ses langage il y a une ASSOCIATION entre les deux.

**** En UML on peut représenter cela par (référence : 'Le tout en poche
UML" de Martin Fowler - Campus Press - p69):

'Commande'--1----------------------------------------*-(ligne)-'Ligne de
Commande'
(ligne) est le nom du ROLE de la 'Ligne de commande' dans la 'Commande'
La MULTIPLICITE des rôles correspond au nombre d'objets succeptibles de
participer à une association.
'*' signifie que de 0 à n lignes de commandes sont associés à une commande
'1' signifie que une seule commande est associée à une ligne de commande.
Notons que dans le diagramme le '1' est du coté de 'Commande', et le '*' du
coté de la ligne.

*** Dans un MCD de MERISE on peut le représenter par (référence : je
m'inspire de l'exemple que l'on trouve à l'adresse suivante
http://sqlpro.developpez.com/Merise/SGBDRmerise1.html#MERISE24) :

'Commande'--1,n-----------(appartient)----------------1,1--'Ligne de
commande'

Cela signifie qu'une 'ligne de commande' appartient à une et une seule
'commande' mais qu'une commande contient de 1 à n lignes de commandes.

*** Mes questions :

Mes représentation sont-elles justes ?



apparemment oui, sauf qu'elles ne sont pas tout à fait équivalentes :
si on remplace le * dans le diagramme UML par un 1,* ce serait déjà plus
pareil

Sinon où me suis-je trompé ? Il me semble pourtant avoir suivi les principes
des exemples cités en référence.
Si oui, il me semble que selon la représentation on inverse la position des
cardialités/multiplicités.
Pour moi cela est une source de confusion permanente. Je ne sais pas de quel
coté des associations mettre les cardinalitéss/multiplicités.




rassurez vous, vous n'êtes vraissemblablement pas le seul, c'est
notament le cas pour moi aussi

Quelqu'un peut-il me donner une explication claire sur ce sujet et une
méthode non ambigue pour me débrouiller avec les cardinalités/multiplicités
(en particulier avec leur position dans les diagrammes) ?




Tout ce que je peux vous expliquer c'est un sens caché possible pour ces
deux notations, une sorte de pourquoi, qui m'a éclairé sur ce phénomène
bisarre.

En UML on considère chaque rôle d'une associations comme une "fonction"
qui renvoie éventuellement plusieurs éléments et on contraint la
cardinalité de l'ensemble des éléments résultat par cette fonction,
ainsi dans votre exemple :

si c est une commande alors #ligne(c) >= 0
si lL est une ligne de commande #inverse(ligne)(L) = 1


Par contre en Merise, et c'est aussi le cas en entité-relation, tout se
passe comme si on traitait une association comme une "table
relationnelle" et dans ce cas les cardinalité indiquent combien de
couples dans la table sont constituées d'un élément donné de l'ensemble
d'entités :

dans la table appartient il y a entre 1 et n (non borné) couples
différents qui contiennent une référence à une commande donnée, et il y
a exactement un seul couple dans cette table qui contient une référence
à ligne donnée


Alors forcément la notation change puisqu'on ne compte pas vraiement la
même chose, par contre ces deux façons de noter sont équivalentes dans
le cas des relations binaires (association).

Au final, il me semble qu'entre les deux notations il y a juste une
inversion de la position des cardinalités.

Certains préfèrent l'une à l'autre, c'est apparement une question de
point de vue sur les choses.

La solution Merise est peut-être plus générale, car elle s'applique
facilement à des relations d'arité > 2.

Mathieu