我们正在构建一个供内部使用的调查引擎。我想知道如何将问题分支逻辑保存到数据库中?以前做过这个的任何机构还是有关数据库架构的任何想法?
如果用户回答了答案,我们需要根据添加到问题中的逻辑跳过下一个问题。每个问题都可以添加多个逻辑。
例如:
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)
{
}
如何将上述内容保存到数据库并从那里开始?
有什么好主意吗?
答案 0 :(得分:5)
您基本上希望将decision tree保留在数据库中。您希望将每个问题存储为一个节点,并且为了规范化数据库的利益,将边缘存储在一个单独的表中,该表中涉及依赖于其他问题(有向边)的问题,并在适当时走路。
编辑:一个简单的设计可以是两个表:问题和边缘。问题只有id
和question text
。边缘可以是answered_question_id
,next_question_id
和answer
。第一个表格是不言自明的。第二个表格列出了,如果问题answered_question_id
被提出并回答了与answer
相等或匹配的问题,请转到问题next_question_id
。