web-dev-qa-db-fra.com

Normalisation de la base de données pour le système de gestion scolaire

Je crée un système pour un système de gestion d'école et propose le schéma de base de données attaché.

Database diagram

Voici comment fonctionne le système:

  1. Une école compte de nombreux élèves et enseignants. Il a également de nombreux cours (matières) enseignés. Un niveau peut avoir plusieurs cours assignés. Ces cours seront à leur tour attribués aux étudiants de cette classe particulière.
  2. Les niveaux d'élèves sont classés en catégories et en sections. Un élève peut être en 5e année, mais si les élèves de 5e année sont nombreux, ils sont divisés en sections. Par exemple: 5e année, section A, 5e année, section B.
  3. Les élèves sont placés dans des salles de classe uniques. Une salle de classe sera unique partout. La classe de la section A de 5e année de 2010 sera différente de la classe de la section A de 5e année de 2011.
  4. Les élèves se voient attribuer des parents. Un parent peut avoir plus d'un élève à l'école.
  5. Une ou plusieurs salles de classe peuvent être attribuées à un enseignant.
  6. L'assiduité des élèves est prise par leur professeur au quotidien
  7. Il y aura plusieurs types d'examens. Les résultats des examens sont stockés pour chaque matière (cours).

Je suis un débutant dans la normalisation de base de données et je serais heureux si quelqu'un pouvait me donner des indices si la base de données semble correcte ou non.

ÉDITER:

De plus, il n'y aura qu'un seul point de connexion. Dans le cas ci-dessus, lors de la connexion, un utilisateur devra sélectionner le type d'utilisateur dans une liste déroulante. Cette sélection déroulante sera utilisée pour interroger la table respective pour se connecter au système. Une autre alternative consiste à utiliser une table user commune, qui stockera le user_id, email, password, last_login_date, last_login_ip mais stockera d'autres détails dans des tableaux respectifs tels que student, parent, teacher. Alors, quelle est la façon préférée/correcte de le mettre en œuvre?

15
WebNovice

Vous ne modélisez pas GRADE_SECTIONS du tout.

À moins que votre école n'ait un programme massif de démolition et de construction à chaque vacances d'été, les salles de classe seront les mêmes. Ce sont les missions qui changent chaque année. Donc, CLASSROOMS doit être affecté à une entité GRADE_SECTION distincte, au lieu de fusionner SECTIONS et CLASSROOMS comme vous le faites maintenant.

Les étudiants doivent être affectés à GRADE_SECTIONS et non à CLASSROOMS.

LES COURS devraient avoir de nombreux EXAMS plutôt que de nombreux EXAM_RESULTS. Cela n'a tout simplement pas de sens qu'un examen de français puisse être passé par des étudiants apprenant les mathématiques et le russe.

7
APC