什么应该是在线投票应用程序的数据库架构

时间:2014-12-04 08:25:33

标签: database normalization

我想开发一个应用程序,其中由管理员发布事件/问题,用户将投票或回答。这里的问题可以是三种不同的类型,每种类型可以有不同的选项.Admin可以查看有关每个问题的报告 E.g

  • WHQuestion:什么是正确的结婚年龄? (1)> 20(2)= 20(3)20
  • 投票:谁是最好的队长(1)ABC(2)PQR等等......
  • YesNoQuestion:Dhoni是一位优秀的队长吗? (1)是(2)否

所以我在这里对数据库模式和表感到困惑。我应该如何管理它们?

1 个答案:

答案 0 :(得分:1)

所有问题都是多项选择,只有一个或零个正确答案。所以:一个问题,一些答案,一个可选的正确答案。

  • 问题 question_no ,文字
  • 回答 question_no,answer_no ,文字

至于如何存储每个问题的答案是否正确,有两种选择:

  1. 将answer_no存储在问题记录中。我认为这是更好的选择。具有延迟约束的dbms(因此问题记录可以引用答案记录,反之亦然)将是一件好事。如果没有正确答案,则answer_no为空。
  2. 在答案表中有一个标记,然后将每个问题的一个答案标记为正确,将其他答案标记为不正确。如果每个问题可能有多个正确答案,这将是合适的。然而,对于一个正确答案,这将是两者中更糟糕的选择。为了保证数据的一致性,您可以应用一些特殊的检查,这可能有点复杂(例如,函数索引可以保证唯一性)。对于没有正确答案,您可以为所有答案存储相同的值甚至为空。但是,你必须看到答案才能发现这是一个投票问题。同样,选项1是更好的选择,您可以在问题记录中立即看到它。