超鍵(英語:superkey),有的文獻稱“超碼”,是在數據庫關係模式設計中能夠唯一標示多元組的屬性集。
包含所有屬性的集叫做明顯超鍵。
候選鍵或候選碼(英語:candidate key)是某個關係變量的一組屬性所組成的集合,它需要同時滿足下列兩個條件:
滿足第一個條件的屬性集合稱爲超鍵,因此我們也可以把候選鍵定義爲“最小超鍵”,也就是不含有多餘屬性的超鍵。
候選鍵的重要性是它們能夠在關係中唯一標識出不同的元組,因此超鍵也是在設計數據庫模式時需要指定的最重要的約束之一。由於在關係模型中,每個關係都是一個集合(沒有重複的元素),所以每個關係都至少有一個候選鍵(因爲所有屬性組合必然是個超鍵)。但是在某些關係型數據庫中表也能代表多重集,所以在每個關係中都顯式地定義至少一個候選鍵是一條很重要的設計原則。數據庫管理系統通常都需要將每個關係中的某個候選鍵定義爲主鍵,亦即這個候選鍵是區分不同元組時首選的識別方式,例如外鍵通常就是引用主鍵而非其他候選鍵。
主鍵,又稱主碼(英語:primary key或unique key)。數據庫表中對儲存數據對象予以唯一和完整標識的數據列或屬性的組合。一個數據列只能有一個主鍵,且主鍵的取值不能缺失,即不能爲空值(Null)。
從技術的角度來看,primary key和unique key有很多相似之處。但還是有以下區別:
- 作爲primary key的域/域組不能爲Null。而unique key可以。
- 在一個表中只能有一個primary key,而多個unique key可以同時存在。
- 更大的區別在邏輯設計上。primary key一般在邏輯設計中用作記錄標識,這也是設置primary key的本來用意。而unique key只是爲了保證域/域組的唯一性。
外鍵(英語:foreign key,中國大陸譯作外碼,臺灣譯作外來鍵),又稱外部鍵。其實在關聯式資料庫中,每個資料表都是由關聯來連繫彼此的關係,父資料表(Parent Entity)的主鍵(primary key)會放在另一個資料表,當做屬性以建立彼此的關聯,而這個屬性就是外來鍵。
比如,學生跟老師之間是教學的關聯,學生資料表會有個屬性叫指導老師(FK),而這個值就是對應到老師資料表的老師代號(PK),學生的指導老師就是外來鍵。
資料庫理論中, 超鍵、候選鍵與主鍵之間的關係:
• 候選鍵是超鍵的一種:不含有多餘屬性的超鍵
• 某個候選鍵被選為主鍵
參考鏈接: