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

Sea*_*ean 7 logic branch 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)
{
}
Run Code Online (Sandbox Code Playgroud)

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

有什么好主意吗?

yan*_*yan 5

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

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