Bonsoir,
@ informaticienne_2009
Je fais figurer votre dernier MCD, histoire d’y voir plus clair.
Je constate que les cardinalités 0,1 ont disparu, voilà une excellente chose.
Aspect temporel des choses
Vous avez mis en œuvre une entité-type Horaire, très bien. Mais, contrairement à ce que le MCD souhaite exprimer, on risque encore de se retrouver avec plein de professeurs présents en même temps dans la même salle, pour des matières diverses. En effet, on peut très bien instancier SEANCE de la façon suivante (contenu de la table SQL correspondante, clé primaire soulignée) :
1 2 3 4
|
SeanceId SalleId SeanceDate Horaire ProfId MatiereId ...
se1 sa1 dt1 h1 pf1 ma1
se2 sa1 dt1 h1 pf2 ma2 |
Autrement dit, il est nécessaire de modéliser la règle de gestion suivante :
A une date donnée, dans un créneau horaire donné, dans une salle donnée, il ne peut y avoir au plus qu’une séance.
=>
1 2 3 4
|
SalleId SeanceDate Horaire ProfId MatiereId ...
sa1 dt1 h1 pf1 ma1
sa1 dt1 h1 pf2 ma2 <- Situation impossible |
On se rend compte à cette occasion que, si psychologiquement parlant SEANCE peut être une entité-type (bien qu’on puisse avoir un peu de mal à se la représenter concrètement), à y réfléchir, ça n’est sémantiquement parlant qu’une association-type mettant en relation une salle, une date et un créneau horaire et à laquelle participent des professeurs, etc. Bien sûr, le problème est que si de SEANCE on fait une association-type, il faudra définir d’autres associations-types permettant de la mettre en relation avec les autres entités-types du MCD (Groupe, Professeur, Matière, DetailSeance) : Merise ne le permettant pas (hélas !), il faut trouver autre chose, et en venir, par exemple, à transformer SEANCE en entité-type, ce que vous avez du reste fait. Mais, du fait de sa véritable nature associative, SEANCE est identifiée par le triplet {Salle, Date, Créneau horaire}, d’où la représentation, en l’occurrence avec Power AMC :
J’explique. Tout d’abord, l’identifiant SeanceId (Id dans votre MCD) a disparu, puisque SEANCE n’est fondamentalement qu’une association-type, or avec Merise, une association-type n’a pas d’identifiant propre. Néanmoins, puisque de SEANCE nous avons fait une entité-type, il faut quand même qu’elle ait un identifiant. En vertu de la règle de gestion précédente, cet identifiant est fonction du triplet {Salle, Date, Créneau horaire}. On dote donc SEANCE des attributs correspondants, disons SeanceDate, SeanceHeureDebut, mais pour faire entrer l’identifiant de l’entité-type SALLE dans la ronde, on utilise les possibilités offertes par l’AGL : la convention avec Power AMC (dont je me sers ici) est de mettre la cardinalité 1,1 entre parenthèses. Cette fois-ci, l’identifiant réel de SEANCE est bien :
{SalleId, SeanceDate, SeanceHeureDebut}.
C’est un peu hors sujet, mais je précise qu’eu niveau SQL il faudra prévoir un trigger pour garantir le non chevauchement des heures de début et de fin de séance.
Envoyé par
f-leb
J’envisagerais alors plutôt une association ternaire « enseigner » entre Matiere, Prof et Classe ...
Ceci me paraît bel et bon, mais j’irais bien un petit peu plus loin dans la réflexion. En effet, du point de vue du MCD, un groupe est un sous-ensemble d’une classe. On peut supposer que les matières enseignées à un groupe font nécessairement partie des matières enseignées à la classe dont fait partie le groupe.
Questions :
Existe-t-il un motif invalidant cette supposition ?
Peut-on tenir le même raisonnement pour les professeurs, à savoir, les professeurs affectés à un groupe peuvent-ils être des professeurs étrangers à la classe dont le groupe est un sous-ensemble ?
Envoyé par
f-leb
… quant à la taloche qui peut maintenant vous mener droit au procès, elle n’a toujours pas d’équivalent numérique…
Quoique...
J’espère que les grillades n’ont pas brûlé pendant que nous échangions.
A suivre.
Partager