【发布时间】:2021-03-27 12:12:12
【问题描述】:
我有一个带有实体的数据库表 X:
| idX | Name |
|---|---|
| 1 | example 1 |
| ... | example .. |
| n | example n |
我想让我的客户根据X 的实体创建不同的逻辑表达式。例如,拥有主键 1,2,3,4 他们应该能够创建表达式:(1 OR 2) AND (3 OR 4) 与 GUI。该表达式稍后可用于验证某些逻辑。
因此,我创建了一个表 Operator,其中包含 AND、OR 等逻辑运算符:
| idOperator | Operator |
|---|---|
| 1 | & (AND) |
| 2 | | (OR) |
表XLogic:
| idXLogic | idX (nullable) | idOperator (nullable) | idXLogicLeft (nullable) | idXLogicRight (nullable) |
|---|
使用此表,我可以添加上面的示例:
| idXLogic | idX (nullable) | idOperator (nullable) | idXLogicLeft (nullable) | idXLogicRight (nullable) |
|---|---|---|---|---|
| 1 | 1 | null | null | null |
| 2 | 2 | null | null | null |
| 3 | 3 | null | null | null |
| 4 | 4 | null | null | null |
| 5 | null | 2 | 1 | 2 |
| 6 | null | 2 | 3 | 4 |
| 7 | null | 1 | 5 | 6 |
idXLogic=7 的行代表逻辑表达式:(idX=1 OR idX=2) AND (idX=3 OR idX=4)。这是表示这种基于逻辑表达式的好主意还是有更好的方法?
【问题讨论】:
标签: database-design relational-database data-modeling logical-operators