在数据库中应用决策树

时间:2015-03-18 09:20:09

标签: php mysql database decision-tree

说明

我有一个寻找问题解决方案的案例。找到解决方案的规则如下:

  

案例1:IF T01 AND T02 AND T03 THEN S01

     

案例2:IF T04 THEN S02

     

案例3:IF T04 AND T05 AND T06 THEN S03

要显示有关此事的问题,请根据决策树进行设置。在问题1(T1)问的时候,然后有一个是或否答案。如果你有问题,选择'是'。如果它没有这个问题,那么选择答案'否'。然后询问下一个问题,直到找到解决方案(S)。

我的问题:

  1. 如何在数据库中应用规则或决策树?
  2. 是否有其他方法可以找到解决方案(S)但问题 问题必须是基于决策树的序列吗?
  3. 请参阅以下链接here上的决策树。

    标题

    T = trouble/problem; 
    S = solution; 
    Y = if answer is YES; 
    N = if answer is NO; 
    

    谢谢

2 个答案:

答案 0 :(得分:0)

这可以通过以下方式实现:

-----------------------------------------------------
| decisionId | ifTrueDecisionId | ifFalseDecisionId | 
=====================================================
| T01        | T02              | T04               |
-----------------------------------------------------
| T02        | T03              | S0                |
-----------------------------------------------------
| T03        | S1               | S0                |
-----------------------------------------------------
| T04        | T05              | S0                |
-----------------------------------------------------

依旧......

然后,您可以根据所述的问题/问题执行SQL查询。结果为您提供了新问题的说明。您再次查询下一步。

答案 1 :(得分:0)

SELECT
  ...,
  IF(T01,
    IF(T02,
      IF(T03,
        S01,
        S0
      ),
      S0
    ),
    IF(T04,
      IF(T05,
        IF(T06,
           S03,
           S0,
        ),
        S02
      ),
      S0
    )
  ) AS some_field_alias
...

根据http://oi59.tinypic.com/24cw9ye.jpg

使用此http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if

您可以在mysql查询中使用此逻辑。每个T *可以是子请求以及S *。

相关问题