SqlServer數據庫外鍵的困惑


在設計數據庫和備份數據的時候是否使用外鍵一直很糾結。先說一下外鍵的優缺點吧

優點:保證數據的完整性和一致性和可靠性,能做到一次修改所有使用外鍵的數據對應的信息都改變的作用

缺點:數據表增多,增加開發難度。降低(Insert、Update、Delete)速度

取代外鍵的方法:觸發器、程序

訂單一般是我們設計最多的數據了。下面以訂單舉個類子

訂單一般會有客戶、訂單狀態、產品、供應商等信息。

這些屬性都有外鍵以及各自的描述信息,如果訂單上只存在有這些信息的外鍵。會有以下幾個問題。

1. 查詢/新增/修改/刪除信息的時候需要涉及這些屬性對應的表

2. 做記錄備份的時候需要將對應的描述信息也進行備份。

這樣在做訂單的操作的時候性能就會相對比較慢。

在做訂單備份的時候是否有必要備份這些外鍵屬性。因為備份了意義不是很大,因為屬性信息修改了,記錄的描述信息是不能修改的。這樣查詢出來的描述應該怎么處理,都是需要考慮的問題。但作為檢索條件,我們只能取用最新的屬性記錄,根據Key去檢索。或者作為歷史記錄我們是否應該用key值去檢索。感覺客戶的需求才是決定設計的關鍵。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM