Table问卷设计
Table design for questionaire
我们正在开发一个应用程序,它会向用户提出各种问题,这些问题可以有分支,所以它们不会 运行 直接排列。例如,如果以下是问题的结构以及它们可以流向的位置:
如果用户回答“是”,问题 2 有一个分支,我们转到 3 并在 7 结束,否则我们继续进行 4、5、6、7。我想出了一个 table 设计,但如果该设计可行或者是否有更好的构造方法,我想得到反馈。
将有一个问题 table,其中包含 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,以防用户希望能够返回并重新回答问题,目前他们只想继续前进。
如果只有 yes/no 个问题可能有不同的下一个问题,我建议在问题 table 中添加 2 列,当答案是 是时指定下一个问题 ID (或默认,当它不是 yes/no 问题时)和下一个问题 ID,当答案是 否 时。保留之前的答案 ID 在我看来是多余的,因为您可以轻松地将整个问题路径保存在应用程序本身的内存中。
但是,如果以后的某个时候你也会有多项选择题,而下一题将取决于答案(即类别和子类别),那么我建议您也添加一个答案 table,并在问题 table 和答案 table.
中为下一个问题 ID 保留一列
如果下一个问题 id 不依赖于答案,则将其保留在问题 table 中。如果依赖于答案,则将null
放在问题table的下一个问题id列中,并在答案table中保留下一个问题id。
这将为您提供最大的灵活性和足够简单的数据结构。
我们正在开发一个应用程序,它会向用户提出各种问题,这些问题可以有分支,所以它们不会 运行 直接排列。例如,如果以下是问题的结构以及它们可以流向的位置:
如果用户回答“是”,问题 2 有一个分支,我们转到 3 并在 7 结束,否则我们继续进行 4、5、6、7。我想出了一个 table 设计,但如果该设计可行或者是否有更好的构造方法,我想得到反馈。
将有一个问题 table,其中包含 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,以防用户希望能够返回并重新回答问题,目前他们只想继续前进。
如果只有 yes/no 个问题可能有不同的下一个问题,我建议在问题 table 中添加 2 列,当答案是 是时指定下一个问题 ID (或默认,当它不是 yes/no 问题时)和下一个问题 ID,当答案是 否 时。保留之前的答案 ID 在我看来是多余的,因为您可以轻松地将整个问题路径保存在应用程序本身的内存中。
但是,如果以后的某个时候你也会有多项选择题,而下一题将取决于答案(即类别和子类别),那么我建议您也添加一个答案 table,并在问题 table 和答案 table.
中为下一个问题 ID 保留一列
如果下一个问题 id 不依赖于答案,则将其保留在问题 table 中。如果依赖于答案,则将null
放在问题table的下一个问题id列中,并在答案table中保留下一个问题id。
这将为您提供最大的灵活性和足够简单的数据结构。