如何在數據庫中正確實現業務邏輯
我正在搜尋如何禁用觸發器,並且似乎在 MariaDB 下是不可能的。
我的問題是,當你導入數據時如何管理。我有一個數據庫,其中幾乎所有業務邏輯都在其中,帶有觸發器和儲存過程。可能有一些由觸發器和儲存過程自動生成的記錄,這些記錄稍後由使用者填寫,如果我導入數據庫轉儲或導入 csv 文件,我不知道如何管理它。
我確定問題是我沒有看到明顯的問題,並且我的數據模型中存在一些問題,但是因為我是從這個項目開始的,所以我及時修改了需要的內容,了解最佳實踐考慮到。
我的問題是,當我們想要在數據庫內部實現應用程序的業務邏輯時,需要考慮一些最佳實踐嗎?
我希望我解釋正確。
這是我想到的一個小例子:在已部署的數據庫上,有一條記錄將從觸發器創建,然後,這條記錄由使用者修改。導入 sqldump 時,由於存在此記錄,sql dump 將無法嘗試插入此現有記錄。
最佳實踐…
數據庫是儲存數據的地方。它是“真理的源泉”。
該應用程序是 * 解釋數據 * “業務邏輯” * 格式化和漂亮打印輸出 * 清理儲存到數據庫中的數據的地方。
擁有一個“數據庫層”通常是明智的(尤其是在更複雜的系統中),其中“業務”資訊與“數據庫”資訊相互轉換。在數據庫端,有“INT”和“FLOAT”;在業務方面,數字事物還有其他術語。商家可能會說“儲存這個”;該層可以將其轉換為一個
INSERT
,或將列拆分為兩個表,或規範化加插入,或INSERT .. ON DUPLICATE KEY UPDATE ..
,或INSERT IGNORE
,或INSERT
加增匯總表,或…是的,其中一些事情可以通過“級聯約束”
TRIGGERs
等來完成FOREIGN KEY
。但我寧願將所有邏輯放在一個地方。我發現觸發器的程式碼很笨拙。我發現 FK 的能力有限。