簡體   English   中英

多列主鍵還是唯一約束?

[英]Multi-Column Primary Key or Unique Constraint?

我有一個Country表,其中包括IDNameCode列。 所有這三列都應包含唯一值,並且不能為NULL

我的問題是,在ID列上創建主鍵,在NameCode列上創建唯一約束(我想在一個索引中)會更好,還是在其中包含NameCode列會更好?具有ID的主鍵? 又為什么呢? 具有多列主鍵是否會帶來潛在的負面影響或復雜性?

首先-是的,由三列組成的復合主鍵使其更討厭聯接到該表-想要聯接到Country表的任何其他表必須具有所有三列來建立聯接。

更重要的是-這是一樣的限制!

如果你對PK ID和兩個唯一約束CodeName分開,那么這是無效的:

ID    Code     Name
--------------------------
41    CH       Switzerland
341   CH       Liechtenstein
555   LIE      Liechtenstein

因為CHCodeLiechtensteinName都出現了兩次。

但是,如果你對所有三列的單人PK在一起-那么這是有效的 ,因為每行有數據的不同的元組 - ( 41CHSwitzerland )是一樣的( 341CHLiechtenstein ),因此,這些兩行是允許的。

如果將PK一次放在所有三列上,則唯一性只會擴展到整個元組 (所有三列)-每列分別可以具有 “重復項”。

所以它可以歸結為

  • 您真正需要什么(唯一性)
  • 您想要使其多么容易地加入此表格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM