听说学术界对关系数据库中的决策表研究很多。我还知道业务规则引擎使用决策表,许多 BPMS 也使用它们。 我想知道今天人们是否在他们的关系数据库中使用决策表?
最佳答案
决策表是一组条件和操作。条件可以非常简单,您可以用简单的“将列与该值匹配”字符串来表示它。或者条件可能非常复杂。类似地,一个 Action 可以像“将这个值移动到一个列”一样简单。或者该操作可能涉及多个部分或步骤,或者 - 好吧 - 任何东西。
SELECT 或 WHERE 子句中的 CASE 函数是决策表。这是关系数据库中决策表的第一个示例。
您可以有一个“转换”表,其中包含具有旧值和替换值的列。然后,您可以编写一小段代码,如下所示。
def decision_table( aRow ):
result= connection.execute( "SELECT replacement_value FROM transformation WHERE old_value = ?", aRow['somecolumn'] )
replacement= result.fetchone()
aRow['anotherColumn']= result['replacement_value']
决策表的每一行都有一个“匹配这个旧值”和“移动这个替换值”的定义。
必须在某处评估决策表的“条件”部分。您的应用程序将发生这种情况。您将从数据库中获取条件值。您将在某些函数中使用这些值来查看规则是否为真。
决策表的“ Action ”部分必须在某处执行;同样,您的应用程序会做一些事情。您将从数据库中获取操作值。您将使用这些值来插入、更新或删除其他值。
一直在使用决策表;它们一直存在于关系数据库中。每个表都需要一个高度定制的数据模型。它还需要一个独特的条件函数和 Action 过程。
它不能很好地概括。如果需要,您可以将 XML 存储在数据库中并调用一些规则引擎来解释和执行 BPEL 规则。在这种情况下,规则引擎执行条件和操作处理。
如果需要,您可以将 Python(或 Tcl 或其他东西)存储在数据库中。严重地。您将用 Python 编写条件和操作。您将从数据库中获取它并运行 Python 代码片段。
很多选择。没有“学术”。事实上,基本条件 - 行动的东西一直在做。
关于database - 你能在关系数据库中使用决策表吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/130789/