在設計數據庫和備份數據的時候是否使用外鍵一直很糾結。先說一下外鍵的優缺點吧
優點:保證數據的完整性和一致性和可靠性,能做到一次修改所有使用外鍵的數據對應的信息都改變的作用
缺點:數據表增多,增加開發難度。降低(Insert、Update、Delete)速度
取代外鍵的方法:觸發器、程序
訂單一般是我們設計最多的數據了。下面以訂單舉個類子
訂單一般會有客戶、訂單狀態、產品、供應商等信息。
這些屬性都有外鍵以及各自的描述信息,如果訂單上只存在有這些信息的外鍵。會有以下幾個問題。
1. 查詢/新增/修改/刪除信息的時候需要涉及這些屬性對應的表
2. 做記錄備份的時候需要將對應的描述信息也進行備份。
這樣在做訂單的操作的時候性能就會相對比較慢。
在做訂單備份的時候是否有必要備份這些外鍵屬性。因為備份了意義不是很大,因為屬性信息修改了,記錄的描述信息是不能修改的。這樣查詢出來的描述應該怎么處理,都是需要考慮的問題。但作為檢索條件,我們只能取用最新的屬性記錄,根據Key去檢索。或者作為歷史記錄我們是否應該用key值去檢索。感覺客戶的需求才是決定設計的關鍵。