# Gnral Dveloppement > ALM > Modlisation > Schma > [MCD] Gestion d'un bulletin de notes

## leptitjej

Mesdames, Messieurs bonjour  toutes et tous.

Parcourant le forme depuis un petit temps maintenant sans pour autant tre trs actif j'ai pu noter que certains d'entre vous sont des vraies btes en conception de base de donnes  ::ccool:: 

J'aurais besoin de votre science afin de pouvoir m'aider. Dans le cadre de mon travail de fin d'tudes, j'ai dcid de dvelopper un module de type bulletin pour la plateforme de travail collaboratif Claroline ( http://www.claroline.net ). Pour se faire, je me base sur mon propre bulletin de type papier lors de mes tudes secondaires. Au point de vue SGBD c'est du MySQL et au point de vue dveloppement c'est du PHP (classique quoi  :;): ). Le fait dvelopper un module pour une application comprenant dj une base de donnes m'obligera  adapter celle-ci par rapport  celle que j'aurai conue moi mme, bref un rgal.. 

j'ai dj parcouru le forum  la recherche de postes pouvant m'tre utile dans ma tache. Le plus complet me semble tre celui-ci :

http://www.developpez.net/forums/d12...le-superieure/

- Le module comportera 3 parties :

1) Le directeur crera une structure de bulletin suivant certains critres (Nombres de priodes dvaluation, cours, pondration etc). Une fois cette structure gnre, elle sera utilise par les enseignants. Les branches/cours correspondront  celles/ceux de la plateforme Caroline

2) Les enseignants insreront les rsultats d'valuation (comme un bulletin papier).

3) Les lves consulteront leurs bulletins lorsque ceux-ci seront disponibles. 

Voici mon *analyse de cas* :

Aprs un brainstorming de mon bulletin papier, voici les diffrentes entits de base dont je pense avoir besoin (il doit probablement m'en manquer)

- *Anne scolaire*
- *Elve*
- *Enseignant* 
- *Directeur*
- *Classe*
- *Branche*
- *Cours*
- *Priode valuation*
- *Evaluation*
- *Structure bulletin*

Voici les relations que j'ai pu trouver entre les diffrentes entits :

- Un bulletin est gnr pour une Anne scolaire.
- Un lve est scolariser durant une anne scolaire.
- Un lve est inscrit dans une et une seule classe.
- Un lve obtient des rsultats d'valuation.
- Un lve suit un nombre de cours.
- Un enseignant dispense un ou plusieurs cours.
- Un enseignant est titulaire d'une et une seule classe
- Un enseignant remplit une valuation
- Un Directeur cre une structure de bulletin
- Un Directeur approuve ou non la russite final d'un lve.
- Une branche inclut un ou plusieurs cours.

Ca c'tait la partie pour se mettre en jambe ! Le gros du travail me semble-t-il est *la gestion des valuations et des moyennes* ! Pour se faire, il faut d'abord avoir une ide prcise de la structure du bulletin. Je m'explique :

 La structure du bulletin sera dfinie suivant les paramtres suivants :

- Nombre de priodes dvaluation (Par exemple 4 : Toussaint, Nol, Pques et Juin)
- Les branches et cours repris dans le bulletin (on va faire simple , toutes les branches ainsi que tous les cours repris dans ces dernires existant dans la plateforme Claroline car plus logique et facile  select).
- Dcider si pour une priode d'valuation s'il n'y a qu'un seul valuation (la moyenne des interrogations) ou s'il y a aussi des examens. Dans ce cas, il faut dcider de la pondration de ceux-ci.
- Dcider de la pondration des cours dans une branche (exemple Thorie 40% et pratique 60%).
- Dcider de la pondration d'une branche par rapport aux autres dans le but de faire une moyenne globale (le plus simple serait que chaque branche ait la meme pondration)




> Un exemple serait peut tre plus claire :
> 
> _Structure :_
> 
> Bulletin 2012-2013 :
> Branche (et cours) : lectricit (thorie et pratique), Programmation (Algorithme et C++)
> Priodes dvaluations : 4 (Toussaint, Nol, Pques et Juin)
> Pondration globale par cours (pour toute l'anne) : 400 (100 par priode durant 4 priodes)
> Priodes avec examens : 2 (Nol et juin)
> ...


C'est assez prise de tte et rien qu'en crivant ce poste je me rend compte que je dois modifier tout mon MCD  ::cry:: 

Vous trouverez en pice jointe ma premire bauche du MCD (png et .mcd) gnr avec Jmerise. Il y a probablement pas mal de fautes ou d'incohrences mais il faut bien commencer quelque part  ::): 

J'ai plus que probablement oubli de mentionner des dtails qui sont clairs pour moi mais probablement par pour quelquun qui dcouvre le sujet. Mon but n'tant absolument pas que le travail soit fait  ma place mais que l'on m'oriente vers la bonne direction quand cela est ncessaire.

Merci d'avance pour vos rponses.  :;): 

Bien  vous. 

Leptitjej

----------


## JPhi33

Bonsoir leptitjej,

Quelques remarques sur l'adquation entre les rgles de gestion et le MCD.




> - Un bulletin est gnr pour une Anne scolaire.


Ceci n'est pas modlis (il n'y a pas d'entit Bulletin)




> - Un lve est scolariser durant une anne scolaire.


Dans le MCD, un lve est scolaris durant au moins une anne scolaire (c'est  dire 1  n)




> - Un lve suit un nombre de cours.


Non modlis : il n'y a pas d'association entre les entits Elve et Cours




> - Un enseignant remplit une valuation


Non modlis : il n'y a pas d'association entre les entits Enseignant et Evaluation




> - Un Directeur cre une structure de bulletin


Dans le MCD, un directeur peut crer plusieurs structures de bulletin




> - Un Directeur approuve ou non la russite final d'un lve.


Non modlis : il n'y a pas d'association entre les entits Directeur et Elve




> - Une branche inclut un ou plusieurs cours.


Dans le MCD, une branche peut ne pas inclure de cours (0,n)

----------


## leptitjej

Merci de votre rponse, je vais me pencher sur vos remarques et actualiser le MCD  ::ccool:: 

Une petite question me un soucis cependant, quelqu'un pourra peut tre y repondre.

Au niveau des valuations :

Il y a plusieurs types d'valuations (pour un cours) :

- valuation priode (Somme des interrogations et examens s'il y en a)
- valuation Globale (moyenne des valuations de toutes les priodes)

Mais, une valuation n'est jamais qu'un rsultat par rapport  une note maximal fixe (ex : 15/20) et une pondration.

Au point de vue MCD, est-il plus intressant de ne garder qu'une seule entit valuation ou bien d'en crer une par type ?




> - Un bulletin est gnr pour une Anne scolaire.


En fait, le cycle de vie d'un bulletin est d'une anne scolaire. Au dbut de celle-ci, l'enseignant titulaire choisi une structure de bulletin qu'il va utiliser pour le bulletin de la classe dont il est titulaire.




> - Un lve est scolariser durant une anne scolaire.


Un lve peut tre scolariser pendant x annes dans un mme tablissement. Mais au niveau de son bulletin, il scolaris avec un type de bulletin pendant une anne scolaire. L'anne suivante, il change de titulaire et celui-ci peut dcider d'utiliser une autre structure de bulletin par exemple.




> - Un Directeur cre une structure de bulletin


Le directeur peut crer une ou plusieurs structures. C'est le titulaire qui choisira avec laquelle il souhaite travailler pour sa classe.



J'espre avoir t clair dans mon message  ::): 

Merci.

----------


## leptitjej

Voici la deuxime version de mon MCD, avec les explications en franais de toutes les associations entre chacune des entits. Je je demande par contre de plus en plus si je dois garder mon entit *StructureBulletin*. Il me semble qu'en ajoutant les attributs ncessaires dans les diffrentes entits concernes par la structure du bulletin, je devrais pouvoir y arriver  ::): 

Je pense tout de mme que ce n'est pas assez complet pour pouvoir stocker toutes les informations dont j'ai besoin. Mais dans l'immdiat je ne vois pas trop ce que je pourrais rajouter.

Voici les explications des associations (relations) :




> 1)	Elve :
> 
> -	Un lve est inscrit dans une et une seule classe durant une anne scolaire. Lanne suivante il change de classe sauf en cas de redoublement.
> -	Un lve est valu  via une ou plusieurs valuation.
> -	Un lve est scolaris durant au moins une anne scolaire.
> -	Un lve est associ  un bulletin (par anne scolaire).
> 
> 2)	Classe :
> 
> ...


Toute remarque est la bienvenue, je suis sur qu'il doit y avoir des lments faux ou manquant.

Edit : aprs rflexion, je me dis que les attributs "moyenne" dans l'entit bulletin ne sont pas ncessaire. en effet les moyenne peuvent se calculer via l'entit valuation et les pondration des autres entits concernes. Je vais essayer de calculer toutes les moyennes qu'il me faut avec le schma actuel  ::): 

Merci d'avance de vos rponses  ::ccool::

----------


## leptitjej

J'aurais une question de smantique pour l'attribution de mes cardinalits car ce n'est jamais vident de savoir si la manire dont on imagine les choses est la bonne !

Mon gros soucis est de savoir si je dois considr mes cardinalits sur mon MCD en considrant mon bulletin sur un cycle de vie d'une anne scolaire ou bien sur x annes et donc les cardinalits ne sont plus les mmes du tout. je m'explique. Dans ce cas la, je pars toujours avec l'ide suivante : 

*Durant une anne scolaire, pour un bulletin....*

- Une seule structure de bulletin peut tre utilise





> Exemple mon entit *PeriodeEval* : 
> 
> Est ce que je dois la considrer comme unique ? Due au fait qu'elle  une date de dbut et de fin, je pourrais la considr comme unique. Est ce que cette entit ne peut tre associe qu' un seul bulletin ? Et je devrais donc rcrer des nouvelles priodes d'valuations pour chaque bulletin que je souhaite crer. Ou alors est ce que dans la logique je pourrais associer cette mme entit  un autre bulletin (durant la mme anne scolaire par un autre enseignant pour une autre classe par exemple) ?


Cette question remet un tas de cardinalits en cause (1..N  la place de 1..1) et cela provoque pas mal de changements pour mon MLD et donc ma base de donnes...

Je ne sais pas trop quelle logique adopter. Help please  ::cry:: 

Merci d'avance de vos rponses

----------


## JPhi33

> Mon gros soucis est de savoir si je dois considr*er* mes cardinalits sur mon MCD en considrant mon bulletin sur un cycle de vie d'une anne scolaire ou bien sur x annes


Vu l'investissement humain et matriel que requirent la modlisation et la ralisation d'une application informatique, il est en gnral souhaitable que sa dure de vie soit la plus longue possible. Dans ton cas, il serait judicieux qu'elle dpasse la dure d'une anne scolaire.

L'investissement humain et matriel n'est pas le seul critre. La 2e anne il est dj possible de rutiliser des structures de bulletin (par exemple). C'est autant de temps de saisie gagn.

Attention, l'impact de cette approche (plusieurs annes scolaires) sur le MCD ne se limite pas aux cardinalits. Il faut repenser le modle. Juste un exemple : l'association lve - classe.

Dans le MCD actuel, l'association est :
[ Elve ]--1,1----( Inscrire )----1,n--[ Classe ]Ce qui se traduit par :
R01. Un lve est inscrit dans une et une seule classe (durant une anne scolaire).

Si le MCD porte sur plusieurs annes scolaires, la rgle devient :
R01. Un lve est inscrit dans une et une seule classe durant une anne scolaire.La diffrence est subtile (mais suffisante) pour modliser diffremment. On pourra cependant prfrer une autre formulation :
R01. Chaque anne scolaire, un lve ne peut tre inscrit que dans une et une seule classe.La modlisation devient alors :


```

```

Ce qui signifie :
R01a. Un lve peut s'inscrire  plusieurs annes scolaires.
R01b. Pour une anne scolaire, plusieurs lves peuvent tre inscrits.
R01c. Lorsqu'un lve est inscrit pour une anne scolaire, il est affect  une seule classe.
Ce n'est qu'un exemple mais il montre que le MCD doit tre repens pour que la base de donnes puisse vivre plus que le temps d'une anne scolaire.

----------


## leptitjej

Merci de votre rponse , 

Ceci clair pas mal la vision  adopter pour les cardinalits ! il faut voir dans la perspective gnrale (c'est a  dire sur plusieurs annes et non sur un cycle d'une anne scolaire). Je vais retravailler mon MCD et prciser un exemple concret de bulletin (plus dtaill que dans le poste de dpart) afin d'tre bien comprhensible  ::):

----------


## leptitjej

J'ai repens mon nonc de dpart de mon bulletin avec un exemple complet cette fois-ci afin d'tre certain de ce qu'il me faut. Celui-ci comprend les diffrents paramtres ainsi que l'exemple de ce  quoi il devrait ressembler  la fin d'un anne scolaire. Toutes les valeur renseignes dans les lignes et colonnes "Total..." ont t calcules  base des notes de matires.
Ces informations sont disponibles en fichiers attachs  :;): 

A base de cela, j'ai tent une nouvelle version MCD plus "light" que la dernire et avec quelques modifications :

- Utilisation d'une association rcursive sur une entit BrancheMatiere. en effet, une branche est compose d'une ou plusieurs matires et leur structure est la mme.
- Suppression de l'entit directeur qui n'est pas vraiment ncessaire.
- Suppression de certaines entits qui donneront lieu  des attributs sur certaines associations (pour les pondrations et les note). 

Que pensez vous de cette version ? semble-t-elle,  votre avis, suffisante pour grer le bulletin comme il est prsent dans l'exemple ?

Encore un point sur lequel j'aurais besoin qu'on mclaire. Je souhaite que l'enseignant qui cre le bulletin dcide lors de la cration de celui-ci sa structure : Le nombre de priodes, le choix des branches/matires reprises dans le bulletin ainsi que la pondration de ces dernires. Dois-je prvoir prvoir une entit  cet effet ?

Encore une fois, il se peut que ma logique des cardinalits ne soit pas parfaite. N'hsitez surtout pas  me corriger.

Merci.

----------


## leptitjej

En fait je me rend compte que mon MCD prcdent ne me servira pas dans la pratique car mon but est de crer un module pour une application web (claroline) existante ayant sa propre base de donnes (MySQL). Dans celle-ci il y a dj pas mal de tables qui me serviront. Je suis donc "oblig" d'ajouter des entit et associations (qui deviendront des tables a cause de leur cardinalit).




> Ces tables sont : 
> 
> - *user* : correspond a l'entit utilisateur et contient un champ type (enseignant ou lve) donc la gnralisation est gre.
> - *class* : correspond  l'entit classe. 
> - *category* : correspond a l'entit branche.
> - *cours* : correspond  l'entit matire.
> - *rel_class_user* : contient les clefs primaires des tables class et user comme clefs secondaires. je l'ai donc schmatiser par une association N to N (qui traduite cre une table)
> - *rel_course_class* : contient les clefs primaires des tables cours et class comme clefs secondaires. je l'ai donc schmatiser par une association N to N (qui traduite cre une table)
> - *rel_cours_category* : contient les clefs primaires des tables cours et category comme clefs secondaires. je l'ai donc schmatiser par une association N to N (qui traduite cre une table)
> - *rel_cours_user* : contient la clef primaire de user et le CODE d'un cours (qui est un champ renseign ds la table cours). cette table contient les informations des lves suivant et est reprsente par une association sur le MCD.


J'ai renomm les entits ainsi que clefs primaires de chacun afin d'avoir la mme orthographe que les tables existantes (ceci facilite le travail).

Le but final tant de faire un script SQL qui effectuera tous les changements au niveau de la base de donnes (lors du chargement du module). L'application Jmerise m'a gnr le MLD correspond ainsi que le code SQL. Cependant, celui-ci ne gnre pas les index donc les relations entre les nouvelles tables et celles existantes ne sont pas faites  ::cry::  et je suis loin de maitriser le MySQL correctement (ce sera pour demain).

Le temps commence  me manquer pour ce projet et je suis bloqu tant que je ne suis pas sur que ma base de donnes est correcte  ::):  C'est pourquoi je sollicite votre aide. Le MCD et le MLD correspondant sont disponibles en attachs.

PS : connaitriez-vous une application permettant de faire du reverse engineering MySQL (Tables -> MLD) ?

Merci d'avance de votre rponse.

----------


## leptitjej

Bon fini les descriptions plus ou moins dtailles

Voici le MCD des tables ncessaires pour le module de la base de donnes existante de l'application Claroline. Il a t gnr via un soft de reverse engineering (MicroOLAP)  ::ccool::

----------

