7
我有一個表定義爲:使用計算列作爲主鍵的一部分是一個好主意嗎?
OrderID bigint NOT NULL,
IDA varchar(50) NULL,
IDB bigint NULL,
[ ... 50 other non relevant columns ...]
此表的自然主鍵是(訂單ID,IDA,IDB),但是這是不可能的,因爲IDA和IDB可以爲空(他們可以兩者都是空的,但它們從不同時定義)。現在我對這三列有一個獨特的限制。現在
,事情是我需要一個主鍵,使事務複製,並且我面臨兩個選擇:
- 創建標識列,並用它作爲主鍵
- 創建包含IDA或IDB的非空計算列C或如果兩列都爲空,則使用(OrderID,C)作爲我的主鍵。
第二可選接縫吸塵器作爲我的PK將是有意義的,而且是可行的(見msdn link),但因爲我從來沒有見過這種在任何地方進行,我在想,如果他們是一些缺點這種方法。