java - 业务规则数据建模

标签 java database-design data-modeling modeling

我这里有一个设计问题。我正在尝试对规则表进行建模。

我的示例规则如下: 给定一个数据行,我将检查配置的所有规则,如果任何列名与值规则匹配,则将命中。

例如

enter image description here

现在在传入数据行中,如果国家/地区列将美国作为值,我将遇到规则 1003。

以这种方式设计我的规则表可以帮助我轻松地将任何列(数据行的一部分)添加到规则中。我的用户可以查看规则并自行管理。

现在这里的问题是优先级列。每当需要添加具有优先级的新规则时,我需要更新之后所有行的优先级。 例如,在上面的示例中,我需要在优先级 3 处添加一些内容: 下面我需要更新两条规则。 enter image description here

随着表变大,将无法管理不断更新所有行。这让我觉得必须有更好的解决方案。

我需要优先级列,因为需要定义需要选择规则的顺序。

有人可以建议对于这个用例来说什么是更好的规则模型吗?

PS 由于我的执行环境,我无法使用 drools 或任何规则引擎。

谢谢

最佳答案

我有一些建议可以减少进行更多必要更新的问题

优先级列中的值必须是连续的吗?如果没有,请使用具有大量间隙的值(例如 100、200、300...)设置初始规则集,这不会影响排序,并且可以在空格中添加任何新规则。

任何排他的规则子集都可以共享相同的优先级值,例如只有一项“国家/地区”规则会匹配,因此无需依次评估它们(当然,您应该在这里考虑性能,如果 90% 的国家/地区规则与“美国”匹配,那么评估这一规则仍然有意义首先)。

当前设计除了更新问题之外还存在一些其他限制。例如如果将来您想以不同于美国股票的方式对待英国股票,您将如何制定这些规则?

关于java - 业务规则数据建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618044/

相关文章:

java - 仅更新 hibernate/Spring MVC 中的非空/非空字段

Java 不编译 $CLASSPATH 下的 .class 文件

mysql - MySQL 或其他数据库中是否有 cron 的内置替代方案?

mysql - 如何保护 mysql 数据库免受任何人的侵害

mysql - 在一个表中有三个主键,其中两个是外键是否有意义?

database - 数据建模问题

java - Smack XMPP android 连接时崩溃

database - 如何链接 VS2010 数据库项目和 LINQ to SQL

MySQL Composite PK 与 Nullable FK

java - 在 Java 中获取应用程序的基本 url