我们正在开发一个应用程序,它会询问用户各种问题,这些问题可以有分支,因此它们不会按顺序运行。例如,如果以下是问题的结构以及它们可以流向的地方:
问题2有一个分支,如果用户回答是,我们移动到3并在7结束,否则我们向下工作4,5,6,7。我想出了一个桌面设计,但想要得到反馈,如果设计可行或者有更好的方法来构建它。
将会有一个问题表,其中包含Id(Key)和Text列。树本身将表示为:
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问题的分支。
之前的II我一直保留,如果用户希望能够返回并重新提问,目前他们只想继续前进。
答案 0 :(得分:1)
如果只有是/否的问题可能会有不同的下一个问题,我建议在问题表中添加2列,当答案为是时,指定下一个问题ID(或者当答案是否时,默认情况下,当它不是是/否问题时)和下一个问题ID。保持以前的答案ID似乎是多余的,因为您可以轻松地将应用程序本身的整个问题路径保留在内存中。
然而,如果将来某个时候你也会有多项选择题,下一个问题将取决于答案(即类别和子类别),那么我建议你添加一个答案表,并在问题表和答案表中保留下一个问题ID的列
如果下一个问题ID不依赖于答案,则将其保留在问题表中。如果它取决于答案,则将null
放在问题表的下一个问题ID列中,并将下一个问题ID保留在答案表中。
这将为您提供最大的灵活性和足够简单的数据结构。