超鍵、候選鍵、主鍵區別?


超鍵(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){姓名、專業} 
可能大家不知道如何來選擇。如果這個題目我們可以正確的解答,那么對於超鍵以及候選鍵和主鍵的概念已經有很深刻的認識了。 
看下概念: 
超鍵:在關系中能惟一標識元組的屬性集稱為關系模式的超鍵。 
候選鍵:不含有多余屬性的超鍵稱為候選鍵。也就是在候選鍵中,若要再刪除屬性就不是鍵了。 
主鍵:用戶選作元組標識的一個候選鍵稱為主鍵。 
u<6{mzh=|M 
透過概念,我們可以了解到,超鍵包含着候選鍵,候選鍵中包含着主鍵。主鍵一定是惟一的。為什么呢?因為他的爺爺超鍵就是惟一的。 
我們分析一下上面的題目,abcde5個答案都可以作為超鍵,他們組合在一起的集合可以用來惟一的標識一條數據記錄(實體)。 
請注意我們的要求:候選鍵。候選鍵要求是不能包含多余屬性的超鍵,我們看一下答案b。在答案b中,如果我們不使用姓名也可以惟一的 
標識一條數據實體,可以說姓名字段在這里是多余的。那么很明顯,b選項包含了多余字段屬性。那么這題答案應該選擇b

那么其他的4個選項都可以作為候選鍵,假設很幸運,a)學號 被選擇作為用戶正在使用的候選鍵來惟一標識元組了,那么他很幸運的 
獲得了主鍵的稱號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM