數據庫該不該用外鍵呢?


從以下幾個方面來分析該不該上外鍵約束

 

1、項目業務邏輯的複雜度

業務邏輯其實是一個項目最根本的東西,是項目的一個核型,它就像一條主線,貫穿於項目的始末。所以當業務邏輯非常複雜的時候,有很多都存在關聯。這個時候外鍵恰恰幫我們理清了他們之間的關係,同時在項目中使用外鍵更容易保證數據的完整性與一致性。由於關係的複雜,我們已經沒有辦法使用程序來100%保證數據的完整性與一致性了。相反,如果業務邏輯不復雜,關係很明瞭,那麼我們在程序裏就可以保證完整性與一致性了,當然也沒有必要用外鍵的了。

 

2、項目計劃進行的時間

程序員的流動性是很大的,也許一個項目開發到一半的時候,整個項目組除了項目經理外程序員都全部換人了,如果文檔沒有及時跟上,或是交接的時候不明確,那對於項目來說是很危險的。對於那些半路殺進來的程序員,雖然有經驗的程序員會在編碼的時候思考完整性的問題,但是由於各種原因,他們沒有辦法100%的通過程序保證數據的完整性與一致性。有經驗的尚且如此,所以這個時候外鍵就爲項目的完整性把好了最後一道關卡,無論他們對項目是否熟悉,在完整性與一致性的問題上面,數據庫自身已經做好了充分的準備。相反,項目如果週期很短,人員變動也很小,那就可以撇開這個因素,從其他方面考慮是否需要使用外鍵。

 

3、安全性與完整性

這個問題其實最好理解,如果項目對數據有着非常苛刻的安全性、完整性與一致性的要求,那必然要用外鍵,可能會缺失一部分性能,即使是這樣也是值得的,這樣從最大程度上滿足了項目的需求,這纔是關鍵。

 

4、性能

上面第三點已經討論的性能的問題了。對於大型的系統,如果每天有百萬級的數據操作,這個時候如果使用外鍵,那性能就變成了致命的問題。外鍵就是一種約束,我們每操作一次insert、update或是delete的時候都要通過這個約束來驗證數據是否完整一致。這個時候性能上的缺失可能是幾小時甚至是幾十個小時。



文章轉載自:   數據庫該不該用外鍵    http://www.studyofnet.com/news/757.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章