9

我们正在构建一个供内部使用的调查引擎。我想知道如何将问题分支逻辑持久化到数据库中?之前有没有人做过这件事,或者对数据库的架构有什么想法?

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

例如:

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)
{
}

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

有什么好主意吗?

4

1 回答 1

7

您本质上是希望将决策树持久化到数据库中。您希望将每个问题存储为一个节点,并且为了规范化数据库的利益,将边存储在一个单独的表中,该表与依赖于其他问题(有向边)的问题相关,并酌情行走。

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

于 2011-03-11T20:54:51.787 回答