Bonsoir sudtek,
En préambule, un retour sur les carronds.
Les associations d’associations (donc à terme les carronds) soulèvent parfois des réactions vives, car c'est tabou. En tout cas c’est un moyen d’assouplir des règles trop rigides, j’en veux pour preuve les carronds MAU, MAC et MACU. Pour faire plus sérieux, vous pouvez au besoin utiliser le terme entité-type associative à la place de carrond, à la manière de Ted Codd, fondateur du Relationland.
Cas des carronds MAC et MAU
Je ne sais pas comment votre IUT présente ses programmes, aussi ferai-je référence à ceux de l’IUT de Sceaux que j’ai récupérés sur la toile, en supposant que les principes d’organisation sont à peu près les mêmes que les vôtres. Si l’on y regarde de plus près (cf. le PDF page 5), une UE ressemble bigrement à un simple regroupement de modules et l’on pourrait considérer ceux-ci comme des entités faibles relativement aux UE ( characteristics chez Codd), ce qui permet de simplifier la modélisation :
MCD
MAU et MAC sont en l’occurrence des intermédiaires dont on peut se dispenser...
A noter que le volume horaire intègre l’entité-type MACU dont le prédicat est le suivant :
Pour l’année A et la catégorie C, le module M de l’UE U a le volume horaire V.
MLD

Envoyé par
sudtek
Certaines classes ne sont pas ouvertes tous les ans s’il y a un manque d’effectif ou de budget.
Du coup je suis partie dans l’idée de faire « 2 listes » :
AC_LISTECLASSES (anneUniversitaire, CODECLASSE) pour enregistrer doublets des classes existantes/ouvertes pour une année donnée.
AE_LISTEINSCRITS {anneUniversitaire, CODECLASSE, IDELEVE} pour enregistrer les élèves dans la liste des classes existantes → pas d’inscription d’élevés dans des classes fantômes.
Effectivement, si telle année telle ou telle classe n’est pas ouverte, il est nécessaire de définir les paires {classe, année} des classes pouvant accueillir des élèves (CLASSE_ANNEE est un carrond) :
[CLASSE]----0,N----[(CLASSE_ANNEE)]----0,N----[ANNEE]
Au fil des ans, l’élève Raoul change de classe : on pourra voir le cas de son redoublement quand les choses seront stabilisées. En tout cas, à moins d’être doué du pouvoir de bilocation, un élève ne peut pas faire partie de deux classes distinctes la même année : lors du passage au MLD, la clé primaire de la table dérivée du carrond EAK ci-dessous devra être débarrassée de l’attribut ClasseId :
[ELEVE]----0,N----[(EAK)]----0,N----[(CLASSE_ANNEE)]

Envoyé par
sudtek
Au départ dans les toutes 1res versions de ce MCD j’avais dans l’idée d’affecter les UE à une classe et d’affecter les élèves au classes sauf que certains élèves n’ayant pas valider des UE de l’année N-1 doivent les repasser durant l’année N (en formation initiale) ;
Si je comprends bien, une UE ne concerne qu’une seule classe, et si j’ai mal compris, on verra à aménager le MCD ci-dessous (UE ne concernant qu’un type de formation ? Autre scénario ?). Quoi qu’il en soit, on ne peut pas évacuer des règles de gestion comme celle-ci, ça mine les fondations. Pour le moment je pars sur la représentation suivante :
[CLASSE]----1,N----(R)----1,1----[UE]
Je n’ai pas tout suivi ce que vous avez écrit sur la notation des élèves, mais pour le moment, de façon naïve, je pars sur la représentation suivante : un carrond NOTATION connectant les carronds EAK et MACU :
[(EAK)]----0,N----[(NOTATION)]----0,N----[(MACU)]
Pour effleurer le thème des UE non validées, j’ajoute pour la forme une entité-type REBELOTE, accrochée à NOTATION, avec l’idée que si un élève est noté l’année N, REBELOTE fera référence à l’année N-1. Cela dit, ça ne répond sans doute pas au besoin, aussi faudrait-il que vous précisiez exactement les règles régissant les validations.
MCD (provisoire...)
MLD (PowerAMC)
La contrainte CK_NOTATION se lit ainsi :
La projection sur les attributs EleveId, Annee, ClasseId de la jointure naturelle de NOTATION et UE doit être incluse dans EAK.
Le but est que l’on ne note pas un élève pour des modules d’UE qui ne font partie des UE de la classe dont il fait partie au fil des années.
N.B. Dans le cas de l’IUT de Sceaux, les codes permettant d’identifier les UE les modules et les catégories sont significatifs : je suppose que vous avez un système du même genre, auquel cas il faudrait prévoir les attributs ad-hoc dans les entités-types UE, MODULE et CATEGORIE, ce que je n’ai pas (encore) fait ci-dessus.
Courage !
Partager