首先說明 “鍵”字=“碼”字,所以 主鍵=主碼=主關鍵字,候選鍵=候選碼=候選關鍵字…
所謂關係鍵,指的是一個表中的一個(或一組)屬性,用來標識該表的每一行或與另一個表產生聯繫。
話不多說,上圖:
相信這個圖已經畫得很清晰了,下面逐一解釋:
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個:課程名,學分
如有疑問請在評論區留言,如有幫助麻煩右上角點個贊~~蟹蟹(*▽*)