【问题标题】:database modelling challenges数据库建模挑战
【发布时间】:2013-05-16 05:00:08
【问题描述】:

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

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

  • 我的意图是设计一个数据库,用于查询学生、学科、评估、
    并且评估结果是可能的和容易的。

Full-size image

【问题讨论】:

  • 题外话:您使用哪个应用程序来设计 ER 模型?
  • Salem 用我的方法查询你想要的数据非常简单,只要你只需要主题的 id 和学生的 id 就可以获得他所有的评估。

标签: database database-design


【解决方案1】:

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

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

评估

id:PK

student_id:FK

subject_id:FK

评估结果

created_at, TIMESTAMP

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

时间戳将为您提供一种方法来了解学生最后一次获得的科目成绩。

这只是我的观点,如果有我看不到的东西,请纠正我。

【讨论】:

    【解决方案2】:

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

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

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

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

  • 【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 2012-05-15
      相关资源
      最近更新 更多