Database 关系数据模型中的逻辑表达式规则

Database 关系数据模型中的逻辑表达式规则,database,database-design,database-schema,Database,Database Design,Database Schema,我有一个逻辑表达式 比如说c=a+b*d 在关系数据模型设置中可以实现这一点吗? 我不想在varchar字段中硬编码规则 我正在考虑将规则链接起来。规则引擎中的一些东西,但是我想纯粹使用关系数据库来实现。这样的表达式是一个树。您的示例(以树表示)是 = c + a * b d 树的叶子是原始符号a,b,…,而(子)树的根是操作符 一个简单的关系数据库结构来表示这样的树是 node(id, operator, left_co

我有一个逻辑表达式

比如说
c=a+b*d

在关系数据模型设置中可以实现这一点吗? 我不想在varchar字段中硬编码规则


我正在考虑将规则链接起来。规则引擎中的一些东西,但是我想纯粹使用关系数据库来实现。

这样的表达式是一个树。您的示例(以树表示)是

=
   c
   +
      a
      *
         b
         d
树的叶子是原始符号a,b,…,而(子)树的根是操作符

一个简单的关系数据库结构来表示这样的树是

node(id, operator, left_component_id, right_component_id, primitive)
其中,对于子树,将填充组件节点的运算符和外键,而对于基元,将填充最后一个属性

如果运算符的算术性(即参数计数)很高甚至是无限的,则模式将变得更复杂。你需要一张单独的桌子

argument(id, node_id, position, component_id)
它携带被引用节点的参数


这些方案为您提供了关系数据库的全部功能。例如,您可以查询有多少表达式的第一个参数是“a”。另一方面,一个简单的表达式将以这种方式分散在许多数据库记录中。如果不需要数据库的机制来检查表达式的内部结构,可以将整个表达式作为字符串存储在一条记录中。

非常感谢您提供的详细信息。