最近我們遇到的情況如下:SQL服務器引用的外鍵非主鍵列
我們正在設計一個數據庫和預測數據將在6個月內顯著增長到數百萬的記錄。我們希望每一行都應該有一個Guid作爲唯一ID,它允許我們稍後將數據移動到OLAP/Archive數據庫,在Identity和Guid鍵的許多參數之後,我們提出了Guid作爲唯一ID。但是,Guid作爲主鍵總是一個壞主意,因此我們有表的主鍵是一個標識列。設計看起來像下面
用戶:
| Id (PK, Identity) |
| UserId (Guid, Unique-constraint, non-clustered index) |
| Name |
| Email |
| ... |
注意:
| Id (PK, Identity) |
| NoteId (Guid, Unique-constraint, non-clustered index) |
| UserId (Guid, Foreign Key to Users(UserId) |
| Title |
| Text |
| ... |
如果將數據移動到存檔我們並不需要關心的身份密鑰了。
這個設計有什麼問題嗎?表現如何?請給我建議,謝謝。
這應該沒問題。如果外鍵引用Users.Id,性能可能會更好(並且您始終可以將其轉換爲對存檔中的Users.UserId的引用),但這並不重要。 – Serge