Création d'une basé de donnée gestion d'une école

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Création d'une basé de donnée gestion d'une école

Par diallo  -  1 reponse  -  Le 10/11/2018 23:28  -  Editer  - 

Bonjour
Actuellement je veux créer une application de gestion d'une école, une application qui me permettra de gérer les notes éditer des bulettin de notes avec le classement de l'élève mais je suis coincé sur le modèle :
Voici le modèle que j'utilise
Classe--->Éleve--->bulettin---->matière
Dans élevé(id_classe,id_eleve nom,filiation)
Bulletin (id_élève, id_matière, date,notes,...

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 11/11/2018 10:18  -  Haut de page  - 

Bonjour,
pour élaborer la structure de la base de données pour une application, il est toujours recommandé d'établir un modèle conceptuel de données. Pour faire ça, on part généralement d'un cahier des charges d'où on extrait un certain nombre de mots-clés.

Dans la liste de ces mots-clés ainsi obtenus, on distingue des entités indépendantes et des propriétés de ces entités.

Partant de là, la première question est la suivante : est-ce qu'il y a un cahier des charges ? Sinon, je recommande très vivement d'en faire un qui décrire le plus complètement possible l'application envisagée. Ce sera un outil de travail nécessaire pour ne pas partir en vrille.

À partir ce ce cahier des charges, on va donc identifier des entités et on établira les relations entre les différentes entités identifiées. On pourrait par exemple trouver la liste d'entités suivantes :

  • École
  • Classe
  • Enseignant
  • Élève
  • Matière
  • Note

Il y en aura peut-être d'autres, il faut établir cette liste en ayant comme perspective le fonctionnement de l'application sur le long terme, c'est à dire en ne voyant pas uniquement l'utilisation au quotidien, mais en envisageant aussi les changements induits par le passage d'une année scolaire à la suivante. Dans les éléments que je n'ai pas inscrit dans la liste, on pourrait sans doute ajouter les absences, lorsqu'un enseignant est malade, la gestion des remplaçants, la gestion des congés du personnel de l'école, enseignant ou non, etc, etc..

Ensuite, pour chaque entité, on va établir les liens en définissant ce qu'on appelle les cardinalités. Ainsi, Une école compte 1 à n classes, et dans l'autre sens, une classe appartient à une et une seule école. Cette vérification est importante puisqu'elle va confirmer ou non qu'on a bien affaire à deux entités distinctes et non à une seule et même entité portant deux noms différents. Ça va également permettre de définir les relation et donc lés clés étrangères. Dans certains cas, ce ne sera pas très évident, mais ce sera d'autant plus important de se rendre compte de cette difficulté si on ne veut pas à terme se retrouver dans une impasse technique et construire une usine à gaz. Par exemple, si on établit les liens entre Enseignant et Classe : un enseignant enseigne dans 1 à n classes, une classe reçoit l'enseignement de 1 à n enseignants : on voit ici que nous aurons une relation dans les deux sens et qu'il faudra alors avoir en quelque sorte une entité intermédiaire qui comportera des propriétés distinguant le lien à un moment donné, par exemple, cette année, l'enseignant enseigne à la classe A, et la classe A reçoit l'enseignement des enseignants X, Y et Z, mais l'année suivante, l'enseignant A est muté sur la classe B, et la classe A reçoit les enseignants R, S et Y. Notre entité intermédiaire aura donc en propriété l'année scolaire considérée.

Un autre cas pas nécessairement simple à gérer : le lien Enseignant et Matière, certains enseignants pouvant enseigner plusieurs matières, Ensuite, les notes : elles correspondent généralement à un exercice dans une matière, à une date donnée et à un élève donné.

Je recommande l'utilisation d'un outil comme MySQL-Workbench pour créer un modèle de données. Cet outil ne permet pas de créer un modèle conceptuel, mais directement le modèle physique de données. Ça rend le tout plus visuel et facile à comprendre.

Et n'hésitez pas à passer du temps sur ce modèle, c'est beaucoup plus important que le code qui suivra : si le modèle est bancal, gardez à l'esprit que tôt ou tard, les évolutions de l'application seront impossibles sans devoir refaire tout ou partie de ce modèle et bien entendu réécrire tout le code correspondant. Donc passer beaucoup de temps sur cette conception n'est en aucun cas du temps perdu.

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !