webdevqa.jp.net

学校管理システムのデータベースの正規化

私は学校の管理システム用のシステムを作成していて、添付のデータベーススキーマを考え出します。

Database diagram

システムの仕組みは次のとおりです。

  1. 学校には多くの生徒と教師がいます。また、多くのコース(科目)を教えています。学年レベルには、多くのコースを割り当てることができます。これらのコースは、その特定の学年の生徒に割り当てられます。
  2. 学生のレベルは学年とセクションに分類されます。生徒は5年生でもかまいませんが、5年生の生徒数が多い場合は、セクションに分かれています。例:グレード5セクションA、グレード5セクションB。
  3. 学生はユニークな教室に配置されます。教室は全体を通してユニークです。 2010年の5年生のセクションAのClassroomは、2011年の5年生のセクションAのClassroomとは異なります。
  4. 生徒には保護者が割り当てられます。保護者は、学校に複数の生徒を持つことができます。
  5. 1つ以上の教室を教師に割り当てることができます。
  6. 生徒の出席は、教師によって毎日行われます
  7. 試験にはさまざまな種類があります。試験結果は各科目(コース)ごとに保存されます。

私はデータベースの正規化の初心者であり、データベースが正常に見えるかどうかにかかわらず、誰かが私にいくつかのヒントを与えることができればうれしいです。

編集:

また、ログインのポイントは1つだけです。上記の場合、ユーザーはログイン時にドロップダウンリストからユーザーのタイプを選択する必要があります。そのドロップダウンの選択は、システムにログインするためにそれぞれのテーブルにクエリするために使用されます。もう1つの方法は、user_id, email, password, last_login_date, last_login_ipを格納するがstudent, parent, teacherなどの他の詳細をそれぞれのテーブルに格納する共通のuserテーブルを使用することです。それで、それを実装するための好ましい/正しい方法は何ですか?

15
WebNovice

GRADE_SECTIONSはまったくモデル化していません。

学校には、夏休みごとに解体と建設の大規模なプログラムがない限り、教室は同じです。毎年変化するのはassignmentsです。したがって、現在のようにSECTIONSとCLASSROOMSをマージするのではなく、CLASSROOMSを別のGRADE_SECTIONエンティティに割り当てる必要があります。

生徒はCLASSROOMSではなくGRADE_SECTIONSに割り当てられる必要があります。

COURSESには、多数のEXAM_RESULTSではなく多数のEXAMSが必要です。数学とロシア語を学ぶ学生がフランスの試験を受けることができるのは、意味がありません。

7
APC