0

我正在尝试为学生数据库建模,但我不确定如何表示学生、所进行的评估和学生成绩。下面是场景的描述:

几个学生提供一门或多门科目,这些科目有一项或多项评估。您将如何代表学生、所提供的科目、所进行的评估以及学生所接受的评估结果?我附上了我到目前为止所做的设计的副本。

  • 我的意图是设计一个数据库,让查询学生、科目、评估
    和评估结果变得可能和容易。

全尺寸图像

在此处输入图像描述

4

2 回答 2

0

恕我直言,您应该在拥有评估结果的学生、科目和评估之间建立三元关系。这在学生可以有许多科目进行同一评估的情况下是必要的。

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

  • 你可以保留三元。
  • 否则,您可以将主题 ID 和结果存储在学生 - 评估关系表中
  • 或学生 ID 和结果在科目 - 评估表中。

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

  • 于 2013-05-21T14:17:41.300 回答
    0

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

    您可以将has_and_belongs的派生表称为Students和Subject之间的多个关系,Assessment具有以下字段(没有地方服从您将这个关联称为student_subjects):

    评估

    编号:PK

    学生ID:FK

    主题ID:FK

    评估结果

    created_at, TIMESTAMP

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

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

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

    于 2013-05-21T14:21:16.713 回答