1. 程式人生 > 實用技巧 >SQL中的主鍵,候選鍵,外來鍵,主碼,外碼

SQL中的主鍵,候選鍵,外來鍵,主碼,外碼

1、碼=超鍵:能夠唯一標識一條記錄的屬性或屬性集。

  標識性:一個數據表的所有記錄都具有不同的超鍵
  非空性:不能為空
  有些時候也把碼稱作“鍵”

2、候選鍵=候選碼:能夠唯一標識一條記錄的最小屬性集

  標識性:一個數據表的所有記錄都具有不同的候選鍵
  最小性:任一候選鍵的任何真子集都不能唯一標識一個記錄(比如在成績表中(學號,課程號)是一個候選鍵,單獨的學號,課程號都不能決定一條記錄)
  非空性:不能為空
  候選鍵是沒有多餘屬性的超鍵
  舉例:學生ID是候選碼,那麼含有候選碼的都是碼。
  少部分地方也有叫超級碼的,但是見得不多

3、主鍵=主碼:某個能夠唯一標識一條記錄的最小屬性集(是從候選碼里人為挑選的一條)

  唯一性:一個數據表只能有一個主鍵
  標識性:一個數據表的所有記錄都具有不同的主鍵取值
  非空性:不能為空
  人為的選取某個候選碼為主碼

4、主屬性 包含在任一候選碼中的屬性稱主屬性。簡單來說,主屬性是候選碼所有屬性的並集

  非主屬性  不包含在候選碼中的屬性稱為非主屬性。 非主屬性是相對於主屬性來定義的。

5、外來鍵(foreign key):子資料表中出現的父資料表的主鍵,稱為子資料表的外來鍵。

6、全碼:當所有的屬性共同構成一個候選碼時,這時該候選碼為全碼。(教師,課程,學生)假如一個教師可以講授多門課程,某門課程可以有多個教師講授,學生可以聽不同教師講授的不同課程,那麼,要區分關係中的每一個元組,這個關係模式R的候選碼應為全部屬性構成 (教師、課程、學生),即主碼。

7、代理鍵:當不適合用任何一個候選鍵作為主鍵時(如資料太長等),新增一個沒有實際意義的鍵作為主鍵,這個鍵就是代理鍵。(如常用的序號1、2、3)

8、自然鍵:自然生活中唯一能夠標識一條記錄的鍵(如身份證)