Foreign-Key

外鍵和主鍵問題

  • January 26, 2016

我到處都在尋找我的問題的答案,但它們似乎讓我感到困惑。外鍵可以成為同一張表中的主鍵嗎?外鍵可以是另一個表中的主鍵嗎?

外鍵可以採用重複的值嗎?

讓我們從定義開始,然後進入差異。

鍵 每個表只能有一個主鍵。它是候選鍵之一。候選鍵是由唯一標識行的一列或一組列組成的鍵。在 SQL Server 中,沒有任何值可以為 NULL,但我不能肯定地說在其他 DBMS 中是這樣。

外鍵 外鍵是relate兩個表組合在一起的一列或一組列。通常這稱為父/子關係。因此,例如一個子表將有一個Parent_Id引用該Parent表的列。relational這種關係是RDBMS(關係數據庫管理系統)部分的基石之一。一個表上可以有多個外鍵,實際上一個外鍵甚至可以將一個表與它本身關聯起來。

比較 如您所見,它們之間確實沒有任何關係。組成的列Primary Key可以是在一個Foreign Key甚至多個中使用的相同的列,Foreign Keys但它們不必是。該Parent表必須與其中之一相關,Candidate Keys但不一定是Primary Key

我懷疑這是重複的,但我找不到它

通常是另一個表,甚至一些定義說明另一個表

重複值是 FK 的常態

FK指向另一個(或同一張表)的PK是常見的配置。在 MSSQL 中,它可以是具有唯一約束(而不是 PK)的列。該行必須是唯一標識的。

這是單個表的範例

假設每個員工只有一個老闆

最上面的人為他們工作-自己

BossID 將是同一張表中的 FK

是 如果有多個人為該老闆工作,則 BossID 將重複

EmpID  (PK) 
BossID (FK EmpID)

多個引用同一客戶的發票表

InvoiceID  (PK) 
CustomerID (FK Customer.ID)

引用自:https://dba.stackexchange.com/questions/127368