如何将分支逻辑持久化到数据库中?
Posted
技术标签:
【中文标题】如何将分支逻辑持久化到数据库中?【英文标题】:How to persist branching logic into database? 【发布时间】:2011-07-13 18:52:42 【问题描述】:我们正在构建一个供内部使用的调查引擎。我想知道如何将问题分支逻辑持久化到数据库中?有没有人做过这件事,或者对数据库的架构有什么想法?
如果用户回答了答案,我们需要根据添加到问题中的逻辑跳到下一个问题。每个问题可以添加多个逻辑。
例如:
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】:您实际上是希望将decision tree 持久化到数据库中。您希望将每个问题存储为一个节点,并且为了规范化数据库的利益,将边存储在一个单独的表中,该表与依赖于其他问题(有向边)的问题相关,并酌情行走。
编辑:一个简单的设计可以是两个表格:问题和边缘。问题只有id
和question text
。边可以是answered_question_id
、next_question_id
和answer
。第一个表是不言自明的。第二个表格列出了如果提出问题 answered_question_id
并以等于或匹配 answer
的内容回答,则转发到问题 next_question_id
下一个。
【讨论】:
您好严,感谢您的意见。您能否提供一个示例架构。 您好严,再次感谢您的意见。我会试试看。以上是关于如何将分支逻辑持久化到数据库中?的主要内容,如果未能解决你的问题,请参考以下文章