Foreign-Key
外鍵和主鍵問題
我到處都在尋找我的問題的答案,但它們似乎讓我感到困惑。外鍵可以成為同一張表中的主鍵嗎?外鍵可以是另一個表中的主鍵嗎?
外鍵可以採用重複的值嗎?
讓我們從定義開始,然後進入差異。
主 鍵 每個表只能有一個主鍵。它是候選鍵之一。候選鍵是由唯一標識行的一列或一組列組成的鍵。在 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)