一、講解
? ? ? ?首先說明 鍵字=碼字,所以 主鍵=主碼=主關(guān)鍵字,候選鍵=候選碼=候選關(guān)鍵字...
所謂關(guān)系鍵,指的是一個表中的一個(或一組)屬性,用來標識該表的每一行或與另一個表產(chǎn)生聯(lián)系。
話不多說,上圖:

相信這個圖已經(jīng)畫得很清晰了,下面逐一解釋:
1、碼=超鍵:能夠唯一標識一條記錄的屬性或?qū)傩约?/p>
標識性:一個數(shù)據(jù)表的所有記錄都具有不同的超鍵
非空性:不能為空
有些時候也把碼稱作“鍵”
2、候選鍵=候選碼:能夠唯一標識一條記錄的最小屬性集
標識性:一個數(shù)據(jù)表的所有記錄都具有不同的候選鍵
最小性:任一候選鍵的任何真子集都不能唯一標識一個記錄(比如在成績表中(學(xué)號,課程號)是一個候選鍵,單獨的學(xué)號,課程號都不能決定一條記錄)
非空性:不能為空
候選鍵是沒有多余屬性的超鍵
舉例:學(xué)生ID是候選碼,那么含有候選碼的都是碼。
少部分地方也有叫超級碼的,但是見得不多
3、主鍵=主碼:某個能夠唯一標識一條記錄的最小屬性集(是從候選碼里人為挑選的一條)
唯一性:一個數(shù)據(jù)表只能有一個主鍵
標識性:一個數(shù)據(jù)表的所有記錄都具有不同的主鍵取值
非空性:不能為空
人為的選取某個候選碼為主碼
4、主屬性 ?包含在任一候選碼中的屬性稱主屬性。簡單來說,主屬性是候選碼所有屬性的并集
? ? ??非主屬性 ?不包含在候選碼中的屬性稱為非主屬性。?非主屬性是相對于主屬性來定義的。
5、外鍵(foreign key):子數(shù)據(jù)表中出現(xiàn)的父數(shù)據(jù)表的主鍵,稱為子數(shù)據(jù)表的外鍵。
6、全碼:當所有的屬性共同構(gòu)成一個候選碼時,這時該候選碼為全碼。(教師,課程,學(xué)生)假如一個教師可以講授多門課程,某門課程可以有多個教師講授,學(xué)生可以聽不同教師講授的不同課程,那么,要區(qū)分關(guān)系中的每一個元組,這個關(guān)系模式R的候選碼應(yīng)為全部屬性構(gòu)成 (教師、課程、學(xué)生),即主碼。
7、代理鍵:當不適合用任何一個候選鍵作為主鍵時(如數(shù)據(jù)太長等),添加一個沒有實際意義的鍵作為主鍵,這個鍵就是代理鍵。(如常用的序號1、2、3)
8、自然鍵:自然生活中唯一能夠標識一條記錄的鍵(如身份證)
二、例子
下面舉例說明
課本上的定義過于籠統(tǒng),下面我用一張學(xué)生成績信息表給大家詳細的說一下:
學(xué)生成績信息表中有(學(xué)號、姓名、性別、年齡、系別、專業(yè)等)
超鍵/碼:
? 由于學(xué)號能確定一個學(xué)生,因此學(xué)生表中含有學(xué)號的任意組合都為此表的超鍵。如:(學(xué)號)、(學(xué)號,姓名)、(學(xué)號,性別)等
?若我們假設(shè)學(xué)生的姓名唯一,沒有重名的現(xiàn)象。
??????學(xué)號唯一,所以是一個超鍵
??????姓名唯一,所以是一個超鍵
?????(姓名,性別)唯一,所以是一個超鍵
?????(姓名,年齡)唯一,所以是一個超鍵
?????(姓名,性別,年齡)唯一,所以是一個超鍵
候選鍵:
???學(xué)號唯一,而且沒有多余屬性,所以是一個候選鍵
???姓名唯一,而且沒有多余屬性,所以是一個候選鍵
??(姓名,性別)唯一,但是單獨姓名一個屬性就能確定這個人是誰,所以性別這個屬性就是多余屬性,所以(姓名,性別)不是候選鍵
??(姓名,年齡),(姓名,性別,年齡)同上,也不是候選鍵
主鍵:
??主鍵就是候選鍵里面的一個,是人為規(guī)定的,例如學(xué)生表中,我們通常會讓“學(xué)號”做主鍵,學(xué)號能唯一標識這一個元組。
外鍵:
? ?外鍵就很簡單了,假如我們還有一個教師表,每個教師都有自己的編號,假設(shè)老師編號在教師表中是主鍵,在學(xué)生表中它就是外鍵。
三、練習
做一道練習題鞏固一下(假設(shè)名字可能有重復(fù)):

參考答案:
1.答案:
(1)候選關(guān)鍵字2個:(學(xué)號),(身份證號)
(2)主關(guān)鍵字:(學(xué)號)
(3)主屬性2個:學(xué)號,身份證號
(4)非主屬性2個:姓名,系別
2. 答案:
(1)候選關(guān)鍵字1個:(學(xué)號,課程號)
(2)主關(guān)鍵字:(學(xué)號,課程號)
(3)主屬性2個:學(xué)號,課程號
(4)非主屬性1個:成績
(5)外部關(guān)鍵字:學(xué)號(引用學(xué)生信息表中的學(xué)號),課程號(引用課程信息表中的課程號)
3.答案:
(1)候選關(guān)鍵字1個:(課程號)
(2)主關(guān)鍵字:(課程號)
(3)主屬性1個:課程號
(4)非主屬性2個:課程名,學(xué)分?