首先數據庫的外鍵是數據庫提供的一種完整性約束。在許多數據庫的書上也會介紹到,然而對於外鍵這個完整性性約束究竟應該在數據庫端實現,還是在項目業務端實現很多人有着不同的意見。
在查看了很多大牛的文章后我總結出來如下:
個人開發(小型應用)、數據庫讀寫資源充足(數據庫並發低),集中式數據庫系統,則應該使用外鍵保障數據的完整性,減少開發端的負擔,有利於數據庫開發與程序開發的分離。
團隊開發(大型應用)。數據庫的讀寫成為瓶頸(數據庫並發高),分布式數據庫系統(分割式存儲數據),(如阿里巴巴)則應該在項目業務端實現,團隊合作開發模塊化突出,通過在業務端設置外鍵可以減小項目開發時有外鍵帶來的各種不便。同時外鍵的分布式的數據庫存儲,數據庫中表的分割也使得在數據庫端實現外鍵比較復雜,而在業務端通過代碼實現則更靈活。