【问题标题】:Applying the decision tree in the database在数据库中应用决策树
【发布时间】:2015-03-18 17:32:47
【问题描述】:

说明:

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

案例一: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) 但问题 的问题必须是基于决策树的序列?

请在以下链接here查看决策树。

说明:

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

谢谢

【问题讨论】:

    标签: php mysql database decision-tree


    【解决方案1】:

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

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

    等等……

    然后您可以根据所述的故障/问题执行 SQL 查询。结果为您提供了新问题的指示。在哪里再次查询下一步。

    【讨论】:

    • 我已经尝试过喜欢它并且效果很好。但是,如果有新的问题和新的解决方案呢?是否删除表中的所有记录并将其放置在新的决策树中?
    • 根据你的树会有多少变化,你可以调整表格条目。如果您将ifTrueDecisionId 更新为不同的decisionId,则您已经创建了一个不同的分支。您也可以考虑添加TreeId 列。这样您就可以将所有决策与特定树相关联。因此,如果您有多个或一个新的.. 您不会松散对旧的参考
    【解决方案2】:
    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*。

    【讨论】:

    • 感谢您的回答。我会尽力。但是,我同意 mvbrakel 的回答。
    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 2015-09-09
    • 2012-12-20
    • 2018-12-02
    • 1970-01-01
    • 2011-10-21
    • 2018-06-23
    • 2021-04-29
    相关资源
    最近更新 更多