我们正在开发一个应用程序,它将向用户提出各种问题,这些问题可以有分支,因此它们不会以一个直接的顺序运行。例如,如果下面是一个问题的结构,并且它们可以流到哪里:

问题2有一个分支,如果用户回答是的,我们移动到3,结束在7,否则我们工作我们的方式下降4,5,6,7。我已经想出了一个表格设计,但希望得到反馈,如果设计将工作,或如果有更好的方式来构造这一点。
将会有一个包含Id (键)和文本列的试题表。树本身将表示为:
QuestionId | PreviousId | NextId | Branch Condition
1 0 2 NULL
2 1 3 Yes
2 1 4 No
3 2 7 NULL
4 2 5 NULL
5 4 6 NULL
7 3 0 NULL
7 6 0 NULL它的工作方式,一旦一个问题被回答,系统将检查当前问题的分支条件是什么,如果null只是移动到nextId。否则,找到用户选择的答案,然后转到相关的nextId。我们只期望Y/N问题分支。
我目前保留的previousId,如果用户想要返回并重新获取问题的能力,目前他们只想继续前进。
发布于 2015-06-19 09:32:33
如果只有是/否问题可能有不同的下一个问题,我建议在问题表中添加2列,当答案为Yes (或默认情况下,它不是“是/否”问题时),并在回答为No时指定下一个问题id。在我看来,保留前面的答案id似乎是多余的,因为您可以很容易地将应用程序本身中的整个问题路径保存在内存中。
然而,,如果在将来的某个时候,您也将有多个选择题,而下一个问题将取决于答案(即类别和子类别),那么我建议您也添加一个答案表,并在问题表和答案表中为下一个问题id保留一个列。
如果下一个问题id不依赖于答案,那么将其保存在问题表中。如果它依赖于答案,那么将null放在问题表的下一个问题id列中,并将下一个问题id保留在答案表中。这将为您提供最大的灵活性和足够简单的数据结构。
https://stackoverflow.com/questions/30922137
复制相似问题