Mysql 轮询web应用程序的数据库结构建议
我正在设计一个民意调查应用程序,用户在其中创建一个或多个民意调查,其中包含每个问题的问题和预定义答案,到目前为止没有问题,我认为最简单的方法是使用3个表: 民意调查表:Mysql 轮询web应用程序的数据库结构建议,mysql,sql,Mysql,Sql,我正在设计一个民意调查应用程序,用户在其中创建一个或多个民意调查,其中包含每个问题的问题和预定义答案,到目前为止没有问题,我认为最简单的方法是使用3个表: 民意调查表: id title description 问题表: id poll_id question 答案表: 我的问题是什么 问题是,用户可能会在投票的提问流程上选择不同的行为,例如,正常的投票将从问题1转到问题N(即最后的问题N),但在我的情况下,如果用户选择问题4的答案2,则用户可能希望跳到问题7,忽略其余问题 对于如何在数据库
id title description
问题表:
id poll_id question
答案表:
我的问题是什么
问题是,用户可能会在投票的提问流程上选择不同的行为,例如,正常的投票将从问题1转到问题N(即最后的问题N),但在我的情况下,如果用户选择问题4的答案2,则用户可能希望跳到问题7,忽略其余问题
对于如何在数据库中存储这种行为,我有点困惑,有什么建议吗
Answer > NextQuestion table
AnswerID NextQuestionID
根据您的回答,下一个问题定义如下看起来您需要类似的东西: 请看此处键的构造:
- 该问题与POLL有关,生成的自然键不仅提供唯一性,还提供顺序:在保持相同POLL\u ID的情况下,QUESTION\u NO可以单调增加
- 等效效果由可能答案中的答案“否”实现
- 对于任何给定的问题,用户最多可以选择一个答案。这就是为什么答案“否”在实际答案主键的之外的原因
- 另一方面,用户ID保存在实际的答案PK中,以允许多个用户选择相同的答案
- 理论上,在{POLL_ID,QUESTION_TEXT}上的QUESTION_表中应该有一个键,以防止两个不同的问题在同一个轮询中具有相同的文本。然而,问题_文本可能很长,并且可能被实现为BLOB,大多数DBMS无法通过键索引或约束BLOB。对于可能的答案,也存在类似的困境
如果用户跳过了一个问题,只需省略相应的实际答案。我可以建议您从业务类开始,然后反向到持久层。走另一条路可能会让你穿上笔直的夹克。