我有一個相當簡單的問題關於自然/代理關鍵用法在一個明確定義的上下文,這往往體現自己,我要說明。複合主鍵和自然/代理鍵使用的影響
我們假設您正在爲使用SQL Server 2005作爲DBMS的產品設計數據庫模式。 爲了簡單起見,我們假設只涉及兩個實體,它們已被映射到2個表格Master,Slave。 假設:
- 我們可以有0..N單個碩士排奴隸條目;
- 列集(A,B,C,D) in Master是唯一候選人爲主鍵;
- Column B in Master is 隨時間變化;
- A,B,C,D是varchar,decimal和bigint列的mix。
問題是:你將如何設計這些表的鍵/約束/引用? 你願意(argumenting你的選擇):
- 實現對主複合自然鍵上(A,B,C,d),並從一個相關的複合外鍵,或
- 在主服務器上引入代理鍵 K,假設有一個IDENTITY(1,1)列,並在從服務器上有一個相關(單列)外鍵,在主服務器(A,B,C,D) ,或
- 使用不同的方法。
至於我,我會選擇2),主要是因爲假設3)和表現明智,但我想聽聽其他人的意見(因爲在這個話題上有一個公開的辯論)。
謝謝
編輯:Master中的列集(A,B,C,D)是**主鍵的唯一候選者** – 2011-05-24 12:37:41