一文搞懂候選碼、主碼、全碼、外碼、主屬性、主鍵、主關鍵字、非主屬性

首先說明 “鍵”字=“碼”字,所以 主鍵=主碼=主關鍵字,候選鍵=候選碼=候選關鍵字…

所謂關係鍵,指的是一個表中的一個(或一組)屬性,用來標識該表的每一行與另一個表產生聯繫

話不多說,上圖:

相信這個圖已經畫得很清晰了,下面逐一解釋:

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

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

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

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

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

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

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

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

6、外鍵(foreign key):子數據表中出現的父數據表的主鍵,稱爲子數據表的外鍵。

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

8 、代理鍵:當不適合用任何一個候選鍵作爲主鍵時(如數據太長等),添加一個沒有實際意義的鍵作爲主鍵,這個鍵就是代理鍵。(如常用的序號1、2、3)

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

二、例子

課本上的定義過於籠統,下面我用一張學生成績信息表給大家詳細的說一下:

學生成績信息表中有(學號、姓名、性別、年齡、系別、專業等)

超鍵/碼:
   由於學號能確定一個學生,因此學生表中含有學號的任意組合都爲此表的超鍵。如:(學號)、(學號,姓名)、(學號,性別)等

若我們假設學生的姓名唯一,沒有重名的現象。
   學號唯一,所以是一個超鍵
   姓名唯一,所以是一個超鍵
   姓名,性別)唯一,所以是一個超鍵
   (姓名,年齡)唯一,所以是一個超鍵
   (姓名,性別,年齡)唯一,所以是一個超鍵

候選鍵:

   學號唯一,而且沒有多餘屬性,所以是一個候選鍵
   姓名唯一,而且沒有多餘屬性,所以是一個候選鍵
   (姓名,性別)唯一,但是單獨姓名一個屬性就能確定這個人是誰,所以性別這個屬性就是多餘屬性,所以(姓名,性別)不是候選鍵
   (姓名,年齡),(姓名,性別,年齡)同上,也不是候選鍵

主鍵:
   主鍵就是候選鍵裏面的一個,是人爲規定的,例如學生表中,我們通常會讓“學號”做主鍵,學號能唯一標識這一個元組。

外鍵:
   外鍵就很簡單了,假如我們還有一個教師表,每個教師都有自己的編號,假設老師編號在教師表中是主鍵,在學生表中它就是外鍵

三、練習

做一道練習題鞏固一下(假設名字可能有重複):

參考答案:

1.答案:

(1)候選關鍵字2個:(學號),(身份證號)
(2)主關鍵字:(學號)
(3)主屬性2個:學號,身份證號
(4)非主屬性2個:姓名,系別
2. 答案:

(1)候選關鍵字1個:(學號,課程號)
(2)主關鍵字:(學號,課程號)
(3)主屬性2個:學號,課程號
(4)非主屬性1個:成績
(5)外部關鍵字:學號(引用學生信息表中的學號),課程號(引用課程信息表中的課程號)
3.答案:

(1)候選關鍵字1個:(課程號)
(2)主關鍵字:(課程號)
(3)主屬性1個:課程號
(4)非主屬性2個:課程名,學分


如有疑問請在評論區留言,如有幫助麻煩右上角點個贊~~蟹蟹(**)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章