我正在尝试在 Oracle 表上应用一些业务规则(包含和排除规则)并根据规则更新状态列。稍后将根据状态列的值从该表中提取文件。现在企业想要使用 UI 配置规则。所以规则将是动态的。
我计划在临时表中存储用户可能希望使用业务规则的所有可能列。在规则 UI 中,将显示此临时表中的所有列。然后我打算创建一个存储过程来从规则表中获取规则并使用动态更新语句来更新状态列。动态 SQL 会对此有好处吗?
规则表:
Id、RuleName、RuleDesc、ColumnName、运算符、值、连接器、ConnectOperator、RulePrecedence
连接器 - 要连接到规则说
#1 Code=1001
#2 state='FL'
在第一条规则中,用户可以将 #2 作为 Connector 并且 ConnectOperator 可以是“和/或”
或者我可以使用 C# 代码,将表中的所有行提取到对象中,然后使用 LINQ 查询根据规则过滤行并更新表。也许使用 NHibernate 作为 ORM,因为 Oracle 是底层数据库。但不确定Oracle的性能是否会好。要处理的行数可以在 500K 左右
我也很困惑,如果数据库将是存储规则的最佳位置,或者还有其他方式,但可以肯定的是用户想要配置和创建规则,并且规则可以引用可能属于不同表的列(这就是我想要的原因将所有可能的列存储在暂存表中,尽管我知道它有限制,如果业务想要在此暂存中不存在的列上创建规则,那么此架构将不起作用)
有什么建议我应该如何处理这个设计?