簡體   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