我正在尝试为学生数据库建模,但我不确定如何表示学生、所进行的评估和学生成绩。下面是场景的描述:
几个学生提供一门或多门科目,这些科目有一项或多项评估。您将如何代表学生、所提供的科目、所进行的评估以及学生所接受的评估结果?我附上了我到目前为止所做的设计的副本。
- 我的意图是设计一个数据库,让查询学生、科目、评估
和评估结果变得可能和容易。
我正在尝试为学生数据库建模,但我不确定如何表示学生、所进行的评估和学生成绩。下面是场景的描述:
几个学生提供一门或多门科目,这些科目有一项或多项评估。您将如何代表学生、所提供的科目、所进行的评估以及学生所接受的评估结果?我附上了我到目前为止所做的设计的副本。
恕我直言,您应该在拥有评估结果的学生、科目和评估之间建立三元关系。这在学生可以有许多科目进行同一评估的情况下是必要的。
否则,如果评估有很多科目,但给定学生只有一个科目,您有不同的选择:
这应该取决于您通常查询这些表的方式(评估 A 的所有科目,评估 A 的所有科目 X 的所有学生,评估 A 的科目 X 的所有结果等......
这有几种方法可以解决,但为什么你不使用 Student*----*Subject 关系来关联评估。因为评估与这种关联直接相关。因此,如果没有学生和学科之间的关系,它就没有意义。
您可以将has_and_belongs的派生表称为Students和Subject之间的多个关系,Assessment具有以下字段(没有地方服从您将这个关联称为student_subjects):
评估
编号:PK
学生ID:FK
主题ID:FK
评估结果
created_at, TIMESTAMP
假设学生在学年期间可以进行多次评估,您可以在此表的其他字段中保存第 1 阶段、第 2 阶段或 Exam1、Exam2 等。
时间戳将为您提供一种了解学生对某个科目的最后结果的方法。
这只是我的观点,如果有什么我没有看到,请纠正我。