gpt4 book ai didi

mysql - 民意调查 Web 应用程序的数据库结构建议

转载 作者:行者123 更新时间:2023-11-29 14:03:38 24 4
gpt4 key购买 nike

我正在设计一个民意调查应用程序,用户可以在其中创建一个或多个民意调查,其中包含问题和每个问题的预定义答案,到目前为止没有问题,我认为最简单的方法是使用 3 个表:

投票表:

id title description

问题表:

id poll_id question

答案表:

id question_id answer

问题是,用户可以在民意调查的提问流程上选择不同的行为,例如正常的民意调查将从问题 1 到问题 N(N 是最终问题),但在我的情况下,用户可能会希望如果用户选择问题 4 的答案 2 则跳转到问题 7 并忽略它们之间的其余部分。

我对如何在数据库中存储这种行为有点困惑,有什么建议吗?

最佳答案

看起来您需要类似的东西:

enter image description here

看看这里的键的构造:

  • 问题位于 identifying与 POLL 的关系以及生成的自然键不仅提供唯一性,还提供排序:QUESTION_NO 可以单调递增,同时保持相同的 POLL_ID。
  • 通过 POSSIBLE_ANSWER 中的 ANSWER_NO 实现等效效果。
  • 对于任何给定问题,用户最多可以选择一个答案。这就是为什么 ANSWER_NO 位于 ACTUAL_ANSWER 主键外部的原因。
  • 另一方面,USER_ID 保存在 ACTUAL_ANSWER PK 中,以允许多个用户选择相同的答案。
  • 理论上,{POLL_ID, QUESTION_TEXT} 上的 QUESTION_TABLE 中应该有一个键,以防止两个不同的问题在同一个民意调查中具有相同的文本。但是,QUESTION_TEXT 可能很长,并且可能会实现为 BLOB,而大多数 DBMS 无法对其进行索引或通过键进行约束。 POSSIBLE_ANSWER.ANSWER_TEXT 也存在类似的困境。

如果用户跳过问题,只需省略相应的 ACTUAL_ANSWER。

关于mysql - 民意调查 Web 应用程序的数据库结构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14705569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com