【发布时间】:2015-09-04 11:48:27
【问题描述】:
我们正在开发一个应用程序,它会向用户提出各种问题,这些问题可以有分支,因此它们不会按顺序运行。例如,如果以下是问题的结构以及它们可以流向的位置:
如果用户回答“是”,则问题 2 有一个分支,我们移至 3 并在 7 处结束,否则我们将继续向下 4、5、6、7。我想出了一个表格设计,但想获得反馈,如果该设计可行,或者是否有更好的方法来构建它。
会有一个 Question 表,其中包含 Id(键)和 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 问题出现分支。
我现在保留的previousId,以防用户希望能够返回并重新提出问题,目前他们只想继续前进。
【问题讨论】:
-
您可能希望保持表结构简单,而是使用某种工作流引擎框架来确定下一个回答的问题应该是什么。类似于其中之一:manageability.org/blog/stuff/workflow_in_java/view
-
这些问题总是是/否,还是也有多项选择题?我曾经写过类似的东西,但有多个答案问题
-
您真的需要PreviousId 吗?听起来你在复制数据
-
@ZoharPeled 开放式问题和 Y/N。但是分支只会在 Y/N 时发生。
-
@JamesZ 我要删除的 PreviousId,但保留它以防用户决定他们也想遍历树,例如,如果他们想返回并更改并回答。
标签: sql sql-server sql-server-2008 database-design