在關係模型中,候選鍵又稱候選碼(英語:candidate key),是某個關係變數的一組屬性所組成的集合,它需要同時滿足下列兩個條件:
1.這個屬性集合始終能夠確保在關係中能唯一標識元組。
2.在這個屬性集合中找不出合適的真子集能夠滿足條件。
滿足第一個條件的屬性集合稱為超鍵,因此我們也可以把候選鍵定義為"最小超鍵",即不含有多餘屬性的超鍵。
基本介紹
- 中文名:候選鍵
- 外文名:Candidate key
- 別稱:候選碼
- 套用學科:資料庫
定義,集合,二維表,相關概念,套用,
定義
集合
如果關係模式R(u)的屬性集合K ∈u 的候選鍵。
(1)R(u)的任何一個關係實例的任意兩個元素在屬性集合K上的值部不相同————唯一性
(2)K的任何真子集都不滿足條件 ————最小性
通俗點,候選鍵在每一行數據里的值都不相同,可以說成是候選的主鍵。
二維表
候選鍵是唯一標識表中每一行的鍵。候選鍵可以是單列鍵,也可以是複合鍵。
例如下列學生表中“學號”或“圖書證號”都能唯一標識一個元組,則“學號”和“圖書證號”都能唯一地標識一個元組,則“學號”和“圖書證號”都可作為學生關係的候選鍵。
學號 | 姓名 | 性別 | 年齡 | 圖書證號 | 所在系 |
S3001 | 張明 | 男 | 22 | B20050101 | 外語 |
S3002 | 李靜 | 女 | 21 | B20050102 | 外語 |
S4001 | 趙麗 | 女 | 21 | B20050301 | 管理 |
而在選課表中,只有屬性組“學號”和“課程號”才能唯一地標識一個元組,則候選鍵為(學號,課程號)。
學號 | 課程號 |
S3001 | C1 |
S3001 | C2 |
S3002 | C1 |
S4001 | C3 |
一個關係可以有多個候選鍵,可以從中選擇一個作為查詢、插入或刪除元組操作編了,被選用的候選鍵稱為主關鍵字,或簡稱主鍵,是DBMS用於唯一標識表中每一行的候選鍵。
相關概念
從超鍵的定義來解釋什麼是候選鍵。
超鍵(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){姓名、專業}
20020612 李輝 男 20 計算機 軟體開發
20060613 張明 男 18 計算機 軟體開發
20060614 王小玉 女 19 物理 力學
20060615 李淑華 女 17 生物 動物學
20060616 趙靜 男 21 化學 食品化學
20060617 趙靜 女 20 生物 植物學
a){學號}
b){學號、姓名}
c){年齡、系別}
d){姓名、性別}
e){姓名、專業}
候選鍵要求是不能包含多餘屬性的超鍵,那么很明顯,a選項不包含了多餘欄位屬性,能夠唯一標識元組。那么這題答案應該選擇a,那么其他的4個選項都不能作為候選鍵。