web-dev-qa-db-ja.com

学校データベース設計図

学校用のデータベースを設計したいのですが、システムの出力は次のようになります: The system Output

それで、私はこのデータベースを設計します Database Design

それをより良くするかもしれないどんなヒントまたはメモが​​ありますか。前もって感謝します

2
user3423060

あなたのコメントから、Personはこのシステムに関係している人に関する一般的な情報を表します。生徒、教師、その他の学校の従業員。 Personにある情報は、Student(名前、住所、DOB)で繰り返す必要はありません。

生徒の現在の学年/クラス(幼稚園から高校)をStudentに追加します。それをStudentClassと呼びましょう。後で使用します。

また、MarkTypeおよびMarkを使用するには、中間テーブルが必要になる場合があります。 (出力のヘッダーに示されているように)各アイテムの利用可能な合計ポイントを示すために何かが必要だと思います。 MarkTypeはそのままで意味があります。特定の試験、クイズ、宿題などを示すテーブルとしてMarkを用意します。したがって、次のものが必要です。

  • MarkID(主キー)
  • MarkType
  • SubjectId
  • MarkValue-この特定のアイテムに値するポイント(たとえば、10ポイント)。

次に、StudentMarksを取得します。

  • StudentMarkId(主キー)
  • MarkId
  • StudentId
  • Mark-この生徒がこの特定のアイテムで獲得したポイント(たとえば、1人の生徒が10点のうち9点を獲得し、他の生徒は5点しか獲得しない場合があります)。

私はまた、TermSubjectを分離する傾向があります。同様に、インストラクターが異なれば、割り当ての組み合わせも異なり、特定の割り当てに別のインストラクターとは異なる値を割り当てることができます。 2つの新しいテーブルを作成します。

Instructor:-InstructorId(主キー)-PersonIDPersonへの外部キー。名前、アドレス、DOBはここにあります)-...(特定のインストラクターに固有のその他の情報、彼らが教えている主題、または彼らが教えている期間/年に関係なく)

Course:-CourseId(主キー)-SubjectId-TermId-InstructorId

TermIdSubjectから削除され、CourseIdSubjectIdMarkを置き換えます。

別のメモ:学生をコースに具体的に結び付けることは意味があるかもしれません。それを呼び出すことができます...

CourseRoster:-StudentCourseId(主キー)-StudentId-CourseId-StudentCurrentClassStudentClassの値この学生がこのクラスにいた時間)。

その場合、StudentIdStudentCourseIdStudentMarksに置き換えます。

これにより、特定のコースの特定の学生がマークしていない試験/クイズ/課題があったかどうかを特定することもできます。

更新:あなたのコメントに基づいて、生徒の現在の「クラス」(Kから高校まで)、および特定のコースを受講したときのクラスを追跡するためのフィールドをいくつか追加しました。ハードコードされた値で構成されます(米国では、幼稚園に加えて大学入学前の12年間の教育があるため、「K」と「1」-「12」はここで機能します)、Classテーブルは実際には何らかの理由で明示的なクラスを確立する必要がある場合でも、Classテーブルが必要になります。私はそれを逆にします-1つのクラスに複数の学生がいるので、ClassIDStudentテーブルに入れます。注:各Classを特定のTermに関連付けることも検討してください。

1
RDFozz