2016-12-07 56 views
1

我想知道什麼是唯一鍵和SQL Server複合主鍵的區別。獨特的差異和複合主鍵之間的SQL服務器

根據W3C學校:

UNIQUE約束唯一標識數據庫表中的記錄。

UNIQUE和PRIMARY KEY約束條件都爲一列或一組列的唯一性提供了保證。

PRIMARY KEY約束自動具有在其上定義的UNIQUE約束。

請注意,每個表可以有多個UNIQUE約束,但每個表只能有一個PRIMARY KEY約束。

我們可以用這個創建複合主鍵:

CREATE TABLE Persons 
(
P_Id int NOT NULL, 
LastName varchar(255) NOT NULL, 
FirstName varchar(255), 
Address varchar(255), 
City varchar(255), 
UNIQUE (P_Id) 
) 

對於複合主鍵語法:

CREATE TABLE Persons 
(
P_Id int, 
C_Id int, 
LastName varchar(255) NOT NULL, 
FirstName varchar(255), 
Address varchar(255), 
City varchar(255), 
Primary Key (P_Id,C_Id) 
); 
+0

什麼空的? – jarlh

+0

的可能的複製[主鍵和唯一密鑰之間差(http://stackoverflow.com/questions/9565996/difference-between-primary-key-and-unique-key) – TheGameiswar

回答

0

正如你自己說的,獨特和主之間的唯一區別關鍵在於表格上可能只有一個主鍵,而它可以有更多的唯一鍵。
此外,主鍵的值可能不爲空。
兩個獨特 - 和主鍵可以由多個列(由鍵)的。

順便說一下,在您的示例中,您在P_Id列上有一個唯一鍵,並且包含該列的組合主鍵。
這沒有意義。
我會建議在該P_Id列上只創建一個簡單的主鍵。

0

複合鍵多於一列的形成

主鍵防止與同一鍵列值該表中的第二行。

主鍵可以由單列和多列組成。所以主鍵也可以定義爲一個組合鍵。

4

UNIQUE約束唯一標識數據庫表中的記錄。這爲一列或一組列的唯一性提供了保證。我們可以用這個來定義(點)一行。

一個主鍵在默認情況下的唯一約束。

雖然在某些表中,將不會有任何具有唯一值的列來定義行。在這種情況下使用複合鍵。在這種情況下,兩列或更多列組合在一起,以便該組合是唯一的。