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