我討厭再次提出「數據庫與代碼中的業務邏輯」這個經典問題,但我需要一些具體的理由來說服一個老的開發團隊,他們認爲代碼中的業務邏輯更好,因爲它更多可維護,高於一切。我曾經在數據庫中有很多業務邏輯,因爲我相信這是單點訪問。如果我是唯一一個改變它的人,維護很容易。根據我的經驗,當項目變得越來越大和複雜時,問題就出現了。數據庫存儲過程的源代碼控制並不像新IDE那樣先進,編輯也沒有。代碼中的業務邏輯可以比數據庫更好地擴展,這是我在最近的經驗中發現的。數據庫層中的業務邏輯
所以,就在計算器搜索,我發現從它的尊貴會員完全相反的理念:
https://stackoverflow.com/search?q=business+logic+in+database
我知道沒有絕對的任何情況,但對於給定的asp.net的解決方案,這將使用sql服務器或oracle,爲一個不是特別高的流量站點,爲什麼我會把邏輯放在數據庫中?
感謝您的回答 - 雖然我的意思是業務邏輯,但我更多地指的是非常具體的業務邏輯,例如「該員工是否允許爲該部門增加費用」......參考完整性和觸發器可以幫助我保護孤立的數據和保存外鍵,但它不會幫助我做像我提到的檢查。哪裏應該這樣? –
@Cade我完全同意你的看法,只不過如果你隱藏太多或者做了太多的視圖,Sprocs很容易變得幾乎不可管理。我已經看到重構視圖之上的視圖和用於管理一切的存儲過程的情況。好的設計可能會阻止很多這種情況,這就是爲什麼三層和n層架構被髮明出來的原因。嘗試並避免很多這些問題。 –
@ M.R。關於員工和部門的情況很可能是數據庫外部的情況。另一方面,如果可能有多個應用程序可能正在執行插入操作(例如來自SSIS包的訂單,Web前端和Windows服務),則很可能您希望數據庫執行該操作,或者通過某種應用程序服務器或Web服務強制所有用戶。 –