關於阿里巴巴開發手冊"不得使用外鍵與級聯,一切外鍵概念必須在應用層解決"的疑惑


原文地址:http://www.codes51.com/itwd/4517194.html

問題: 關於阿里巴巴開發手冊”不得使用外鍵與級聯,一切外鍵概念必須在應用層解決”的疑惑
描述:
原文如下:

【強制】不得使用外鍵與級聯,一切外鍵概念必須在應用層解決。
說明:以學生和成績的關系為例,學生表中的 student id 是主鍵,那么成績表中的 student id
則為外鍵。如果更新學生表中的 student id ,同時觸發成績表中的 student id 更新,即為
級聯更新。外鍵與級聯更新適用於單機低並發,不適合分布式、高並發集群 ; 級聯更新是強阻
塞,存在數據庫更新風暴的風險 ; 外鍵影響數據庫的插入速度。

請問各位數據庫是每個表都增加一個業務的編碼字段做關聯還是直接通過id關聯呢?
我的看法是:如果是小項目單庫的話用id關聯更方便,自動有主鍵索引,如果是分布式數據庫項目每個表都建一個業務編碼字段,通過業務編碼字段關聯,但是這樣需要手動建索引提高查詢效率.因為沒有大項目的數據庫經驗,所以想問一下大中型的項目數據庫業務關聯是直接通過id關聯還是增加一個業務編碼字段關聯呢?

解決方案1:
試試通過id關聯,只是不在數據庫上去約束

解決方案2:
就是不讓用外鍵唄。 這個應該大多互聯網項目 都不用外鍵了吧。我09年開始做互聯網的項目,就沒用過外鍵了。 至於為什么,樓上回答的好啊, 業務變動,修改數據庫的成本很高。最重要的原因 文中說的也很清楚,分布式、高並發集群環境下,容易產生更新風暴。外鍵影響數據庫的插入速度
不用外鍵后, 各個數據表的關系維護,通過應用程序來解決。

解決方案3:
數據庫表的關聯,應該按照表的內部id做關聯,不推薦用業務編碼做主鍵。
業務規則的變化是不可預測的,如果因為業務規則的變化導致數據庫結構大的變動,甚至還要做數據更新,我認為是失敗的設計方案。

以上介紹了“ 關於阿里巴巴開發手冊”不得使用外鍵與級聯,一切外鍵概念必須在應用層解決”的疑惑”的問題解答,希望對有需要的網友有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM