您能否为测验问题和答案推荐数据库设计,以便提供可扩展数量的问题类型?

时间:2010-11-24 19:35:06

标签: database-design

迄今为止的示例问题类型:

  • 多项选择单一答案(想想单选按钮)

  • 多项选择多重答案(想想复选框)​​

  • 匹配(现在有许多可能选择的排列)

我希望将它们存储在一个数据库结构中,以后可以用于这些以及更多类型的问题,所以我正在考虑一种方法让它成为......可扩展的?

现在我有(你的建议不必受此约束):

  • 问题表
  • 答案表
  • ChosenAnswers表
  • 用户表

一个问题可以有很多答案。 一个用户/问题对可以有很多ChosenAnswers。

然而,据我所知,我不能很好地使用匹配,而且我也不是100%确信它可以轻松地用于多个答案,很容易意味着在计算时需要最少的逻辑人员总分等

任何人都可以想到一种设计,它可以让我使用所有这三种类型的测验问题以及添加未来的问题吗?如果你愿意,我需要一些灵感,一种范式转换......

未来问题类型的一个例子可能是“按适当的顺序排列这些事物列表”等等。

考虑到所有这些不同的可能问题类型,必须有一种方法,无论多么复杂,同时仍然让我使用一种相当直接的方式计算测验的总分数用于报告目的,所以类推。

如果有任何我缺少的细节,请在这里的评论中告诉我,但最好还是假设我甚至没有考虑过你正在考虑的细节,因为我把我所拥有的一切都放在了问题已经存在,但我会根据要求增加清晰度。

3 个答案:

答案 0 :(得分:8)

在下面的设计中,我们将在问题表中使用一系列标志来指出它是什么类型的问题。我们还指出了问题的严重程度。答案表通过外键链接到问题表。 complet测试表将保存所进行的complet测试的结果。每个用户只允许进行一次不完整的测试。在不完整的测试表中,我们将问题链接回问题表(我错过了关系线),这将链接到可能的答案,我们记录用户在不完整测试表的字符串列中给出的答案。 / p>

alt text

答案 1 :(得分:2)

单个答案就像带有约束的多个答案,因此可以很容易地将它们存储在同一个表中。所以你已经为这两者做了什么。

但是,我建议不要试图合并太多,因为如果你需要添加其他类型的问题,你最终可能不得不重构你的范例,这不仅会让老类型感到头痛,而且更多,或同样多,为新型工作。也就是说,为匹配类型问题添加特殊表。

您始终可以使用视图合并结果。这样,单个类型易于维护,但组合结果也很容易生成。让数据库处理复杂性,而不是你自己的聪明。 (如果您不同意这一点,您也可以编写自定义引擎而不是首先使用SQL。:-))

答案 2 :(得分:0)

您可以轻松地将多重选择单一答案的“匹配”问题视为“匹配”

我会建议一个下拉框,而不是单选按钮。布局会更好。

如需更多灵感,请查看LON-CAPA是如何做到的。

祝你好运!