天天看點

超鍵、候選鍵、主鍵的差別

超鍵(super key):在關系中能唯一辨別元組的屬性集稱為關系模式的超鍵

候選鍵(candidate key):不含有多餘屬性的超鍵稱為候選鍵

主鍵(primary key):使用者選作元組辨別的一個候選鍵程式主鍵

比如一個小範圍的所有人,沒有重名的,考慮以下屬性

身份證 姓名 性别 年齡

身份證唯一,是以是一個超鍵

姓名唯一,是以是一個超鍵

(姓名,性别)唯一,是以是一個超鍵

(姓名,性别,年齡)唯一,是以是一個超鍵

----這裡可以看出,超鍵的組合是唯一的,但可能不是最小唯一的

身份證唯一,而且沒有多餘屬性,是以是一個候選鍵

姓名唯一,而且沒有多餘屬性,是以是一個候選鍵

----這裡可以看出,候選鍵是沒有多餘屬性的超鍵

考慮輸入查詢友善性,可以選擇 身份證 為主鍵

也可以 考慮習慣 選擇 姓名 為主鍵

----主鍵是選中的一個候選鍵

一題搞懂什麼是候選鍵 

看下題目先 

在SQL Server資料庫中,有一個學生資訊表如下所示,在該表中不能作為候選鍵的屬性集合為( ) (選擇一項) 
學号      姓名  性别 年齡  系别  專業 
20020612 李輝   男   20  計算機 軟體開發 
20060613 張明   男   18  計算機 軟體開發 
20060614 王小玉 女   19  實體   力學 
20060615 李淑華 女   17  生物   動物學 
20060616 趙靜   男   21  化學   食品化學 
20060617 趙靜   女   20  生物   植物學 

a){學号} 
b){學号、姓名} 
c){年齡、系别} 
d){姓名、性别} 
e){姓名、專業} 
           

可能大家不知道如何來選擇。如果這個題目我們可以正确的解答,那麼對于超鍵以及候選鍵和主鍵的概念已經有很深刻的認識了。 

看下概念: 

超鍵:在關系中能惟一辨別元組的屬性集稱為關系模式的超鍵。 

候選鍵:不含有多餘屬性的超鍵稱為候選鍵。也就是在候選鍵中,若要再删除屬性就不是鍵了。 

主鍵:使用者選作元組辨別的一個候選鍵稱為主鍵。 

透過概念,我們可以了解到,超鍵包含着候選鍵,候選鍵中包含着主鍵。主鍵一定是惟一的。為什麼呢?因為他的爺爺超鍵就是惟一的。 

我們分析一下上面的題目,abcde5個答案都可以作為超鍵,他們組合在一起的集合可以用來惟一的辨別一條資料記錄(實體)。 

請注意我們的要求:候選鍵。候選鍵要求是不能包含多餘屬性的超鍵,我們看一下答案b。在答案b中,如果我們不使用姓名也可以惟一的 辨別一條資料實體,可以說姓名字段在這裡是多餘的。那麼很明顯,b選項包含了多餘字段屬性。那麼這題答案應該選擇b。那麼其他的4個選項都可以作為候選鍵,假設很幸運,a)學号 被選擇作為使用者正在使用的候選鍵來惟一辨別元組了,那麼他很幸運地 獲得了主鍵的稱号