Mysql

如何在數據庫中正確實現業務邏輯

  • July 27, 2016

我正在搜尋如何禁用觸發器,並且似乎在 MariaDB 下是不可能的。

我的問題是,當你導入數據時如何管理。我有一個數據庫,其中幾乎所有業務邏輯都在其中,帶有觸發器和儲存過程。可能有一些由觸發器和儲存過程自動生成的記錄,這些記錄稍後由使用者填寫,如果我導入數據庫轉儲或導入 csv 文件,我不知道如何管理它。

我確定問題是我沒有看到明顯的問題,並且我的數據模型中存在一些問題,但是因為我是從這個項目開始的,所以我及時修改了需要的內容,了解最佳實踐考慮到。

我的問題是,當我們想要在數據庫內部實現應用程序的業務邏輯時,需要考慮一些最佳實踐嗎?

我希望我解釋正確。

這是我想到的一個小例子:在已部署的數據庫上,有一條記錄將從觸發器創建,然後,這條記錄由使用者修改。導入 sqldump 時,由於存在此記錄,sql dump 將無法嘗試插入此現有記錄。

最佳實踐…

數據庫是儲存數據的地方。它是“真理的源泉”。

該應用程序是 * 解釋數據 * “業務邏輯” * 格式化和漂亮打​​印輸出 * 清理儲存到數據庫中的數據的地方。

擁有一個“數據庫層”通常是明智的(尤其是在更複雜的系統中),其中“業務”資訊與“數據庫”資訊相互轉換。在數據庫端,有“INT”和“FLOAT”;在業務方面,數字事物還有其他術語。商家可能會說“儲存這個”;該層可以將其轉換為一個INSERT,或將列拆分為兩個表,或規範化加插入,或INSERT .. ON DUPLICATE KEY UPDATE ..,或INSERT IGNORE,或INSERT加增匯總表,或…

是的,其中一些事情可以通過“級聯約束”TRIGGERs等來完成FOREIGN KEY。但我寧願將所有邏輯放在一個地方。我發現觸發器的程式碼很笨拙。我發現 FK 的能力有限。

引用自:https://dba.stackexchange.com/questions/144756