繁体   English   中英

设计数据驱动的逻辑系统

[英]Designing a data-driven logic system

我正在开发一种税收计算系统,该系统可根据一组提供的标准应用各种税收。
该信息经常更改,因此我试图创建一种将所有这些逻辑规则存储在数据库中的方法。

可以想像,征税涉及很多复合逻辑。
例如,仅当A为true,B小于100且C等于7时才适用税收。

我当前的设计太糟糕了。
我有一些数据库列用于非常常见的条件过滤,例如位置和纳税年度。
对于更复杂的逻辑,我有一列包含JavaScript,并且在代码中运行解释器以过滤结果。 性能和可维护性很差。

我想通过使逻辑完全由数据驱动来改进此设计,但是在弄清楚如何在关系数据库中正确表示此逻辑时遇到了麻烦。 在数据库中对此逻辑建模的好方法是什么?

我已经为生产成本生成应用程序解决了类似问题一年多了。 同样,它会根据设计以及其他库存考虑因素(例如数量,批量购买选项,零件供应商,电气额定值等)来接受产品设计数据输入和负载。结果是直接材料,人工和成本的清单。

我从一开始就知道,我需要的是某种查询语言而不是计算语言,它必须是脚本编写的,而不是编译的。 但是我还没有找到一个完美的解决方案:

方法1-SQL我创建了代表我的对象的表和代表属性的列,然后在item_rules表中手动键入所有SQL SELECT语句。 我要做的是先将对象保存到数据库中,然后再执行

rules = SELECT * FROM item_rules
foreach(rules as _rule)
{
   count = SELECT COUNT(*) FROM (_rule[select_statement]) as T1
   if(count > 1) itemlist.add(_rule[item_that_satisfy_rule])
}

它的作用是将item_rules表中的每个规则带到表中现在存在的我的对象上。 例如SELECT * FROM my_object,其中A = 5并且B> 10。 如果我成功捡起它,我得到一个正数,然后知道我应该将相应的规则项目包括在我的项目列表中。

方法2-NCALC我没有以SQL格式存储查询,而是找到了NCALC开源表达式解析库。 NCALC接受字符串表达式和选项变量并计算结果。 字符串表达式可以以纯文本格式存储在文件系统上。

方法3-EXCEL EXCEL实际上是用于执行数据查找的非常好的软件。 您可以在excel中创建公式,然后将应用程序中的数据输入excel,然后让excel运行公式以提供结果。 优点是许多人都知道如何使用excel,因此不同的人可以维护它。

但是就像我说的那样,这些都不适合我。 我只是在分享,希望我们能得到更好的建议。

如果要使用Jake的方法,那么也可以使用Dynamic Sql。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM