数据库建模挑战

时间:2013-05-21 12:16:31

标签: database database-design

我正在尝试为学生数据库建模,但我不确定如何代表学生,评估和学生成绩。以下是该场景的描述:

有几个学生提供一个或多个科目,这些科目有一个或多个评估。您如何代表学生,提供的科目,评估和学生评估的结果?我附上了我迄今为止所做设计的副本。

  • 我的意图是设计一个数据库,查询学生,科目,评估,
    并且评估结果可以轻松实现。

Full-size image

enter image description here

2 个答案:

答案 0 :(得分:0)

恕我直言,你应该在拥有评估结果的学生,科目和评估之间建立三元关系。如果学生可以有多个科目进行相同的评估,则这是必要的。

否则,如果评估有许多科目,但只有一个针对特定学生,则您有不同的选择:

  • 你可以保留三元。
  • 您可以将主题ID和结果存储在学生评估关系表中
  • 或学生ID并导致主题 - 评估表。

    这应取决于您通常会查询这些表格的方式(评估A的所有科目,评估A的科目X的所有学生,评估A的科目X的所有结果等等...

  • 答案 1 :(得分:0)

    这有几种方法可以解决,但为什么你不使用学生* --- *主题关系将评估与。因为评估与这种关联直接相关。因此,没有学生和学科之间的关系就没有意义。

    您可以将has_and_belongs中的派生表调用到学生和主题之间的多种关系,使用以下字段进行评估(没有任何地方可以服从您这个关联来调用student_subjects):

    评估

    ID:PK

    student_id数据:FK

    subject_id:FK

    assessment_result

    created_at,TIMESTAMP

    想象一下,学生可以在学年期间进行多次评估,您可以在此表的其他字段中保存第1阶段,第2阶段或Exam1,Exam2等。

    时间戳将为您提供一种方式来了解学生对某个科目的最后结果。

    这只是我的观点,如果有什么我没有看到的话,请纠正我。