1. 程式人生 > >快速理解資料庫超鍵,候選鍵,主鍵

快速理解資料庫超鍵,候選鍵,主鍵

先了解下對這三種關鍵碼的定義如下:

鍵名 定義
超鍵 (super key) 在關係中能唯一標識元組的屬性或屬性集稱為關鍵模式的超鍵
候選鍵 (candidate key) 不含有多餘屬性的超鍵稱為候選鍵。也就是在候選鍵中在刪除屬性就不是鍵了。
主鍵(primary key) 使用者選作元組標識的候選鍵稱為主鍵。一般不加說明,鍵就是指主鍵。

即候選鍵是超鍵中選出來的,主鍵是從候選鍵中選出來的一組。

超鍵

  • 百科百科的解釋:在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。一個屬性可以為作為一個超鍵,多個屬性組合在一起也可以作為一個超鍵。
  • 如:在一個學生的表中,假設有“學號”、“姓名”、“相關資訊”、“生日”等欄位, 其中學號是唯一的,那麼(學號)是一個超鍵,同時(學號,姓名,生日)的組合也是唯一的,所以也可以為一個超鍵。但(學號,姓名,生日)也有時候不是唯一的,如果有學號、姓名、生日相同的情況,就會出錯,反正記住一點,就是這些屬性可以區別每一個學生的就是超鍵,也就是根據這些屬性可以唯一確定一名學生的,就是超鍵。
  • 假設我們有下面這樣一個學生資訊表:
學號 姓名 年齡 性別 專業
20161 李四 23 CS
20162 李五 24 MA
20163 李六 25 CA
20164 李七 23 AI
20165 李七 24 CS

通過觀察,選取能唯一確定一行的屬性組合有:

  • (學號)
  • (學號,*其他任何列屬性)
  • (姓名,年齡)
  • (姓名,性別)
  • (等等)
    通過選取的過程,我們可以理解這裡的超鍵在於可以區別每一個學生,超鍵的組合是唯一的,但可能不是最小唯一的。

候選鍵

候選鍵實在超鍵的基礎上定義的,在要求可以區分每一行的基礎上,同時是最小唯一的,即候選鍵中刪除任何一個屬性後就不能再區分每一行。
同樣是之前那個表

學號 姓名 年齡 性別 專業
20161 李四 23 CS
20162 李五 24 MA
20163 李六 25 CA
20164 李七 23 AI
20165 李七 24 CS

(學號)是超鍵,而且沒有其他多餘屬性所以是候選鍵。
(學號,姓名)是超鍵,但是去除姓名後也能區分每一行,所以姓名是多餘的,(學號,姓名)不是一個候選鍵。
(姓名,年齡)是超鍵,而且沒有多餘的 屬性,所以是一個候選鍵。
還有一些也可以做候選鍵,這裡不在贅述。所以,這裡可以看出,候選鍵是沒有多餘屬性的超鍵。

主鍵

為了查詢的方便性和便於表之間的連線,往往設定一組主鍵。主鍵是從候選鍵中選出來的一組,比如之前的表,我們可以以學號作為主鍵,也可以選擇(姓名,年齡)作為主鍵,或者旋轉其他的一個候選鍵。我們將我們最終選擇的一組幸運候選鍵稱為主鍵。