【问题标题】: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)
{
}

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

有什么好主意吗?

【问题讨论】:

  • 逻辑是否应该存储在数据库中?也许只是存储问题和答案的数据,然后在应用程序中有说明数据库应该有什么的逻辑。
  • 是的,我们需要将逻辑存储在数据库中。

标签: branch logic survey


【解决方案1】:

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

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

【讨论】:

  • 您好严,感谢您的意见。您能否提供一个示例架构。
  • 您好严,再次感谢您的意见。我会试试看。
猜你喜欢
  • 2019-02-25
  • 2015-08-19
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多