课程考试场景的数据库设计,能够跟踪考试类型

时间:2012-07-18 21:20:57

标签: sql database postgresql database-design django-models

假设我们有课程的表格和多项选择题(MCQ)普通问题(NQ)的两个表格。< / p>

每门课程都有几个MCQ和NQ。我应该跟踪他们的数字,以便向学生展示,也可以用于统计目的。

我如何连接它们?我应该在问题和课程之间使用中间表(比如考试标签)来跟踪每个考试类型,但是朋友告诉我使用序列(例如在Postgres中)等。< / p>

你推荐什么?

3 个答案:

答案 0 :(得分:1)

每个MCQ和NQ可以出现多个课程吗?如果是这样,您需要一个映射表,其中包含问题和课程的外键。如果任何给定的问题只能由一个课程使用,只需让它在课程表中保留课程的外键即可。

我没有看到序列在这种情况下的适用性......

答案 1 :(得分:1)

您将需要另一个将来自课程表和问题表的外键的表,然后如果您想要做的就是跟上计数,请添加另一个可以递增的列。为每种类型的测试问题都有一个关联表。

答案 2 :(得分:1)

Sequence只是一个单调递增数字的生成器。我不知道它在这里是如何应用的(除了用于生成代理PK值)。

您需要的可能类似于:

enter image description here

注意:我只讨论了此模型中的问题 - 存储答案需要额外的数据结构。

enter image description here符号表示类别(又称继承,子类,泛化层次等)。有3 main strategies用于在物理数据库中实现它。有关详细信息,请查看ERwin Methods Guide中的“子类型关系”一章。