超鍵(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)學号 被選擇作為使用者正在使用的候選鍵來惟一辨別元組了,那麼他很幸運地 獲得了主鍵的稱号