gpt4 book ai didi

c# - 设计数据驱动的逻辑系统

转载 作者:行者123 更新时间:2023-11-30 12:33:28 31 4
gpt4 key购买 nike

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

如您所想,征税涉及很多复合逻辑。
例如,只有当 A 为真、B 小于 100 且 C 等于 7 时,税收才适用

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

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

最佳答案

我已经为制造成本生成应用程序处理这个类似问题一年多了。同样,它需要输入大量产品设计数据并基于设计,以及其他库存考虑因素,例如数量、批量采购选项、零件供应商、电气额定值等。结果是直接 Material 、人工和成本的列表。

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

方法 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 WHERE A=5 AND B>10。如果我成功拿起它,我会得到一个正计数,然后我知道我应该将相应的规则项目添加到我的项目列表中。

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

方法 3 - EXCELEXCEL实际上是一个非常好的数据查询软件。您可以在 excel 中创建公式,然后将应用程序中的数据输入 excel,然后让 excel 运行公式以给出结果。优点是会用excel的人多,不同的人维护。

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

关于c# - 设计数据驱动的逻辑系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257314/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com