如何将分支逻辑保存到数据库中?

时间:2011-03-11 20:50:32

标签: branch logic survey

我们正在构建一个供内部使用的调查引擎。我想知道如何将问题分支逻辑保存到数据库中?以前做过这个的任何机构还是有关数据库架构的任何想法?

如果用户回答了答案,我们需要根据添加到问题中的逻辑跳过下一个问题。每个问题都可以添加多个逻辑。

例如:

Question: Is it Sunny, Raining or Cloudy?
Answer: Raining.
The next question should be based on the previous answer.
if(Raining)
{
}

if(Sunny)
{
}

if(Cloudy)
{
}

如何将上述内容保存到数据库并从那里开始?

有什么好主意吗?

1 个答案:

答案 0 :(得分:5)

您基本上希望将decision tree保留在数据库中。您希望将每个问题存储为一个节点,并且为了规范化数据库的利益,将边缘存储在一个单独的表中,该表中涉及依赖于其他问题(有向边)的问题,并在适当时走路。

编辑:一个简单的设计可以是两个表:问题和边缘。问题只有idquestion text。边缘可以是answered_question_idnext_question_idanswer。第一个表格是不言自明的。第二个表格列出了,如果问题answered_question_id被提出并回答了与answer相等或匹配的问题,请转到问题next_question_id