ERP有前臺也有后臺,前臺有各種菜單,后臺有各種數(shù)據(jù)對象。
數(shù)據(jù)對象主要有:表,觸發(fā)器,存儲過程,函數(shù)和視圖。
表的數(shù)量基本跟ERP的菜單和功能的數(shù)量成正比,而其他數(shù)據(jù)對象各有各的功能。
下面將金蝶、用友、SAP的8款 ERP DEMO數(shù)據(jù)庫,整理了一下,做了這張圖。
8款ERP分別是 SAP ECC6、金蝶云星空、用友U9C、用友U8、金蝶K3、金蝶KIS旗艦、用友T+、金蝶KIS商貿(mào)。
從上圖可以看出,SAP ECC6 表的數(shù)量高達6.8萬張,跟其他完全不是一個數(shù)量級,這個數(shù)字確實能說明 SAP 的功能之多,另外我也在后臺統(tǒng)計了一下 SAP 的事務(wù)代碼,數(shù)量有超過73萬個。
除SAP遙遙領(lǐng)先外,表的數(shù)量多少,依次分別是云星空>U9C>U8>K3> KIS旗艦版>T+>KIS商貿(mào)。
當(dāng)然不同的ERP,因為是否支持 多組織,多賬簿,多語言 等先天架構(gòu)的不同,表的絕對數(shù)量多少不一定代表模塊和功能更多。
如果單組織的軟件,表數(shù)量和多組織的軟件表數(shù)量差不多或者接近,那往往說明單組織的模塊和菜單會更多,比如 U8 和 U9C。
U8,K3 和KIS旗艦版 觸發(fā)器數(shù)量相當(dāng),SAP、云星空 ,U9C和T+ 則幾乎沒有觸發(fā)器。
這種情況是由于不同的ERP系統(tǒng)架構(gòu)和設(shè)計理念導(dǎo)致的。一些ERP系統(tǒng)可能更傾向于在數(shù)據(jù)庫層面使用觸發(fā)器來實現(xiàn)業(yè)務(wù)邏輯或者數(shù)據(jù)約束,因此會有較多的觸發(fā)器。而其他系統(tǒng)可能采用不同的技術(shù)(比如通過微服務(wù)在程序端處理)或者設(shè)計模式來實現(xiàn)相同的功能,因此觸發(fā)器的數(shù)量相對較少。
那么他們可以做觸發(fā)器嗎?答案是可以。 比如 T+ 或者云星空 ,如果希望內(nèi)外網(wǎng)訪問時,自動適配不同的權(quán)限,可以通過增加觸發(fā)器來實現(xiàn)。
觸發(fā)器是數(shù)據(jù)庫管理系統(tǒng)中的一種特殊類型的存儲過程,它們會在特定的數(shù)據(jù)庫事件發(fā)生時自動執(zhí)行相應(yīng)的操作。觸發(fā)器通常用于實現(xiàn)以下功能:
1. 數(shù)據(jù)約束:觸發(fā)器可以用于在數(shù)據(jù)插入、更新或刪除時執(zhí)行一些額外的檢查或操作,以確保數(shù)據(jù)的完整性和一致性。例如,可以使用觸發(fā)器來檢查某些條件是否滿足,然后決定是否允許進行數(shù)據(jù)的修改操作。
2. 數(shù)據(jù)審計:觸發(fā)器可以用于記錄數(shù)據(jù)庫中的操作,例如在數(shù)據(jù)被修改時自動記錄修改前后的數(shù)值或者記錄修改操作的時間和執(zhí)行者等信息,用于數(shù)據(jù)審計和追溯。
3. 業(yè)務(wù)邏輯實現(xiàn):觸發(fā)器可以用于執(zhí)行一些與業(yè)務(wù)邏輯相關(guān)的操作,例如在某個表的數(shù)據(jù)發(fā)生變化時,自動觸發(fā)其他相關(guān)表的更新或者通知其他系統(tǒng)進行相關(guān)操作。
4. 數(shù)據(jù)復(fù)制和同步:在一些數(shù)據(jù)庫復(fù)制和同步的場景中,觸發(fā)器可以用于在一個數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,自動觸發(fā)另一個數(shù)據(jù)庫的相應(yīng)操作,以實現(xiàn)數(shù)據(jù)的同步和復(fù)制。
總之,觸發(fā)器在數(shù)據(jù)庫管理系統(tǒng)中扮演著重要的角色,能夠幫助實現(xiàn)數(shù)據(jù)約束、數(shù)據(jù)審計、業(yè)務(wù)邏輯實現(xiàn)以及數(shù)據(jù)復(fù)制和同步等功能。
其中數(shù)據(jù)約束比如,可以實現(xiàn)缺料不允許下達任務(wù)單,銷售訂單不同的利潤系數(shù)控制需要由不同的人員去審核,數(shù)量和單價不允許改大等等,凡是能夠定出邏輯,取到數(shù)據(jù)的,通過觸發(fā)器都能實現(xiàn)控制。
數(shù)據(jù)審計,比如 K3 標準功能是沒有BOM的修改記錄的,但是通過觸發(fā)器可以實現(xiàn)改前改后的數(shù)據(jù)完整記錄,然后通過報表來顯示變更的記錄。
業(yè)務(wù)邏輯實現(xiàn),比如自定義開發(fā)的單據(jù),審核時自動更新其它的基礎(chǔ)資料(模具出入庫審核后,更新模具檔案的狀態(tài)和地址等)。
數(shù)據(jù)的復(fù)制和同步,這個在不同的系統(tǒng)中進行集成或者相同系統(tǒng)不同賬套之間數(shù)據(jù)拋轉(zhuǎn)會經(jīng)常用到。
從上圖可以看出,U8,U9C 大量用了存儲過程,分別達到了4500和2600個,所以后臺跟蹤這兩個系統(tǒng)的邏輯時,經(jīng)常會遇到 存儲過程層層嵌套 ,邏輯會比較復(fù)雜。
K3 和KIS旗艦版 存儲過程1000多,相對比較少,因為通常一個 事務(wù) 一個存儲過程搞定,跟蹤起來 邏輯比較容易 理順一些。
存儲過程是一組預(yù)編譯的SQL語句和邏輯操作,可以在數(shù)據(jù)庫中保存并重復(fù)使用。存儲過程的作用包括:
1. 提高性能:存儲過程可以在數(shù)據(jù)庫服務(wù)器上執(zhí)行,減少了網(wǎng)絡(luò)傳輸和服務(wù)器端的解釋和執(zhí)行時間,從而提高了性能。
2. 簡化復(fù)雜操作:存儲過程可以包含復(fù)雜的業(yè)務(wù)邏輯和數(shù)據(jù)操作,可以簡化客戶端應(yīng)用程序的代碼和邏輯。
3. 維護數(shù)據(jù)完整性:存儲過程可以用于實現(xiàn)數(shù)據(jù)的驗證和完整性約束,確保數(shù)據(jù)的一致性和正確性。
4. 安全性控制:存儲過程可以對數(shù)據(jù)庫的訪問進行控制和限制,提高了數(shù)據(jù)的安全性。
5. 重用性:存儲過程可以在多個應(yīng)用程序中重復(fù)使用,提高了代碼的重用性和可維護性。
6. 事務(wù)管理:存儲過程可以包含事務(wù)管理的邏輯,確保數(shù)據(jù)庫操作的原子性、一致性和隔離性。
總之,存儲過程可以提高數(shù)據(jù)庫操作的效率、簡化業(yè)務(wù)邏輯、提高數(shù)據(jù)安全性,是數(shù)據(jù)庫開發(fā)中非常重要的一部分。
我本人就經(jīng)常用存儲過程來寫報表和實現(xiàn)一些比較復(fù)雜的邏輯,當(dāng)然存儲過程也可以跟觸發(fā)器聯(lián)合使用,來實時實現(xiàn)某些功能,或者跟數(shù)據(jù)庫job聯(lián)用,來實現(xiàn)定時執(zhí)行某些功能。
除了U8和U9用了200多的函數(shù),其余都很少用函數(shù),為什么?
我想主要是因為函數(shù)只有一個返回值,如果大批量執(zhí)行時,性能比較差,所以通常能用存儲過程來實現(xiàn)的,就不會去用函數(shù)。
函數(shù)是一段可重復(fù)使用的代碼,用于執(zhí)行特定的任務(wù)并返回一個值。在數(shù)據(jù)庫中,函數(shù)通常用于執(zhí)行特定的計算、數(shù)據(jù)轉(zhuǎn)換或邏輯操作。函數(shù)的作用包括:
1. 數(shù)據(jù)處理:函數(shù)可以用于執(zhí)行各種數(shù)據(jù)處理操作,例如數(shù)學(xué)計算、字符串處理、日期處理等。
2. 邏輯判斷:函數(shù)可以包含邏輯判斷的操作,根據(jù)輸入?yún)?shù)的不同返回不同的結(jié)果。
3. 數(shù)據(jù)轉(zhuǎn)換:函數(shù)可以用于執(zhí)行數(shù)據(jù)類型轉(zhuǎn)換或格式化,將數(shù)據(jù)轉(zhuǎn)換成特定的格式或類型。
4. 重用性:函數(shù)可以在不同的查詢或程序中重復(fù)使用,提高了代碼的重用性和可維護性。
5. 簡化復(fù)雜操作:通過函數(shù),可以將復(fù)雜的邏輯和計算封裝起來,簡化了用戶或應(yīng)用程序的操作。
6. 提高性能:函數(shù)可以在數(shù)據(jù)庫服務(wù)器端執(zhí)行,減少了數(shù)據(jù)傳輸和服務(wù)器端解釋執(zhí)行的時間,從而提高了性能。
總之,函數(shù)是數(shù)據(jù)庫中非常重要的一部分,它可以用于執(zhí)行各種數(shù)據(jù)處理、邏輯判斷和數(shù)據(jù)轉(zhuǎn)換操作,提高了代碼的重用性和可維護性。
我用函數(shù)常見的場景是 單個物料可用庫存計算,助記碼生成,字符串拼接和拆分等等。
SAP 和U8 都大量使用了視圖,數(shù)量分別達到9000多和4000多,云星空,K3 和KIS旗艦版 都是幾百個。
U8 之所以這么多視圖,是因為有很多的嵌套,經(jīng)常一個視圖套著另外好幾個視圖,比如表頭和表體分別做了視圖,然后合起來又做了一個或多個視圖。
視圖是數(shù)據(jù)庫中的虛擬表,它是基于一個或多個實際表的查詢結(jié)果集。視圖的作用包括:
1. 數(shù)據(jù)安全性:視圖可以隱藏底層表的細節(jié),只暴露給用戶或應(yīng)用程序需要的數(shù)據(jù),從而提高了數(shù)據(jù)的安全性。
2. 簡化復(fù)雜查詢:通過視圖,可以將復(fù)雜的查詢邏輯封裝在視圖中,簡化了用戶或應(yīng)用程序?qū)?shù)據(jù)的訪問和操作。
3. 數(shù)據(jù)獨立性:視圖可以提供邏輯上的數(shù)據(jù)獨立性,當(dāng)?shù)讓颖斫Y(jié)構(gòu)發(fā)生變化時,只需修改視圖而不影響用戶或應(yīng)用程序的訪問。
4. 重用性:視圖可以被多個用戶或應(yīng)用程序共享和重復(fù)使用,提高了代碼的重用性和可維護性。
5. 簡化權(quán)限管理:通過視圖,可以對用戶或應(yīng)用程序的訪問權(quán)限進行更精細的控制,從而簡化了權(quán)限管理的工作。
總之,視圖是數(shù)據(jù)庫中非常重要的一部分,它可以提高數(shù)據(jù)的安全性、簡化查詢操作、提高數(shù)據(jù)獨立性和重用性,是數(shù)據(jù)庫開發(fā)中常用的技術(shù)手段。
比如K3的物料會有很多不同的頁簽,每個頁簽都在不同的表里,然后會有一個總的物料視圖,把各種表聯(lián)合起來,這樣查詢時直接查詢物料視圖t_icitem即可,會比較方便,不需要每次都去10多個表里分別查詢。
總結(jié):其實ERP的各種數(shù)據(jù)對象、函數(shù)、觸發(fā)器和存儲過程,如果用得好,各種ERP都還有大量的深入應(yīng)用空間,可以通過它們把各級管理人才的經(jīng)驗與系統(tǒng)結(jié)合,優(yōu)化流程,提高效率,減少浪費 。
點晴模切ERP更多信息:http://moqie.clicksun.cn,聯(lián)系電話:4001861886
該文章在 2024/6/27 9:46:50 編輯過