1. 程式人生 > >聊聊:資料庫中為什麼不推薦使用外來鍵約束

聊聊:資料庫中為什麼不推薦使用外來鍵約束

參考文獻:database.51cto.com/art/201811/587914.htm


    想起大學剛畢業的時候,在一家做保險系統二次開發的公司做軟體工程師,那時候我接觸到了他們系統的資料庫,查看了下他們系統使用到的表,並瞭解到他們表之間的關係,發現根本沒有任何一處地方用到外來鍵約束,而且身邊的元老都強烈要求不要使用外來鍵,我當時就很納悶,這就和我在大學學的資料庫知識點有點出入了。後來在程式碼coding的時候,兩張表之間的關係操作,我們都在應用層完成,久而久之,這樣給我的感覺就是資料庫變得沒那麼複雜,資料表之間非常獨立,而且也非常的清晰每張表是有什麼作用。

    今天瀏覽到了這篇文章,也算加深我對資料庫在使用外來鍵約束上一些見解。外來鍵約束雖然保證了表間資料的關係“始終完整“,然而在很多公司上,都不太建議在資料庫中使用外來鍵約束,因為這樣一方面,增加資料庫的複雜性,也會給資料庫帶來效能上的消耗,如果能在應用層解決,或許很多碼農也願意去寫多幾行程式碼去完成表間資料完整性的判斷,也不會去增加底層資料庫的複雜性

    總結:

        外來鍵約束帶來的優點

      1. 保證資料的完整性和一致性

      2. 級聯操作方便

      3. 將資料完整性判斷託付給資料庫完成,減少了程式的程式碼量

        

        外來鍵約束帶來的缺陷

      1. 效能問題

      2. 併發問題

      3. 擴充套件性問題

      4. 技術問題