我有一个带有实体的数据库表X
:
idX | 名称 |
---|---|
1 | 示例1 |
示例 | |
n | 示例n |
使用元素表建模逻辑表达式是一种非常复杂的方法。表达式可能涉及包含子表达式的圆括号,您必须了解表达式元素的顺序。要拥有一个完全灵活的表达式持久性机制,该机制基于将元素存储在第三个正常形式的关系表集中,您需要为自己设置大量的复杂性。
有一些库可以根据将表达式存储为字符串来进行表达式求值,可能表达式中的一些标记在运行时会被变量值或求值为值的函数替换。如果使用这样的库,则可以将表达式存储为单个字符串。您可能希望使用库的lexer特性(如果有(来确认语法是否有效。
我能想到的将表达式保存在规范化数据库中的唯一好理由是,您需要对在何处使用的表达式元素进行一些报告或分析。即使在这种情况下,也可以将表达式本身存储为字符串,并保留一组相对简单的表(可能像一个交集表一样简单(,记录在哪些表达式中使用了哪些表达式元素。