Bonsoir,
Envoyé par
alicc
comment interpréter les cardinalités des ASSOC > 2.
Mon opinion perso est que l'approche du bouquin UML est meilleure
Reprenons ce qu’écrit Cyril Gruau dans son article :
« La difficulté de concevoir une association ternaire (ou plus) directement est d’établir les bonnes cardinalités. Il est donc conseillé d’en passer par un schéma entités-associations dans lequel on ne trouve que des associations binaires, puis de repérer les entités remplaçables par des associations [...] »
Comme je l’ai déjà fait observer, cette approche n’est pas celle qui est habituelle et l’approche prédicative sous-tendue par l’exemple des commandes y est de facto sans objet. Dans la masse des travaux de conception auxquels j’ai participé, j’ai toujours vu les concepteurs raisonner directement en termes de relations et donc énoncer les règles de gestion sous forme prédicative. Pour reprendre spécifiquement l’exemple des projections de films (les paramètres d’un prédicat sont en l’occurrence film, salle, créneau horaire), on peut interpréter les cardinalités ainsi :
Pour une salle et un film donnés, on peut projeter selon plusieurs créneaux horaires,
Pour un film et un créneau horaire donnés, on peut projeter dans plusieurs salles,
Pour une salle et un créneau horaire donnés, on ne projette qu’un et un seul film.
Et pour cet exemple, l’approche qui a votre préférence vous permet de marquer un point : elle permet de mettre en évidence la contrainte qui veut que dans une salle donnée, à un instant donné on ne peut pas projeter plus d’un film.
Retenons donc que si l’on utilise la méthode Gruau, il faut aussi se servir de la preuve par neuf que représente la méthode qui a votre faveur.
Pour la petite histoire, en Merise la contrainte qui a été mise en évidence est modélisable au moyen d’une CIF (contrainte d’intégrité fonctionnelle, symbolisée par la flèche rouge) :
Par ailleurs, la ternaire se justifie-elle ? On doit pouvoir par exemple produire le diagramme de classes suivant :
Et si en Merise on utilise l’identification relative (symbolisée ici par la mise entre parenthèses de la cardinalité 1,1), à la représentation avec CIF on pourra préférer la représentation suivante (la ternaire disparaît là aussi) :
Le MLD dérivé de ces différents diagrammes est le suivant, où l’on voit bien que la ternaire n’y figure pas et, last but not least, que l’attribut NoFilm n’appartient pas à la clé {NoSalle, DateProjection, HeureDebut} de la table PROJECTION :
Envoyé par
alicc
Pourquoi mon choix ? Parce qu'il oblige à réfléchir en prenant en compte toutes les entités 'périphériques' concernées (et non 2 à 2).
Certes, mais on peut raisonner en considérant simultanément les 3 entités-types SALLE, FILM, CRENEAU et laisser passer la contrainte qui veut que pour une salle et un créneau horaire donnés, il n’y ait la projection que d’un seul film. Exemple :
Un film donné peut être projeté dans plusieurs salles selon plusieurs horaires,
A une heure donnée plusieurs films peuvent être projetés dans plusieurs salles,
Dans une salle donnée, il peut y avoir plusieurs films projetés selon plusieurs horaires.
Envoyé par
alicc
Mon avis est que ce sont principalement les associations "les plus centrales" qui doivent se voir affecter les attributs de type DATE, QUANTITE, PRIX (dans les applis business, je précise). En effet, c'est là que la granularité du modèle est la plus fine et la plus intéressante
En fait ce sont les règles de gestion des données qui imposent que les attributs figurent dans telle ou telle entité-type (ou association-type). Et surtout, c’est la normalisation (au sens coddien) qui permet de s’assurer de la qualité des structures des tables résultant du travail de modélisation (je me situe à ce propos au niveau relationnel).
Partager