MySQL Key值(PRI, UNI, MUL)的含義、超鍵(super key)、候選鍵(candidate key)、主鍵(primary key)

一、

PRI主鍵約束;

UNI唯一約束;

MUL可以重複。

參考:http://www.cnblogs.com/licheng/archive/2010/10/16/1852938.html

二、

超鍵(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)學號 被選擇作爲用戶正在使用的候選鍵來惟一標識元組了,那麼他很幸運的獲得了主鍵的稱號(主鍵->候選鍵)。

進一步理解===>

1、主鍵(primary key)吧:一張表(關係)的一個列(屬性)或多個列可以作爲主鍵,但是前提是讓這個列作主鍵,這個列就能保證該列下的各個行(元組)的值不能相同,比如 說用姓名屬性作主鍵的話,那麼這個主鍵就不一定可以,如果有兩個人是同樣的名字的話,就不能做到該屬性下的各個元組數據的值不同,如果用阿拉伯數字作主鍵 就是一個很好的選擇。
2、外鍵(foreign key):一張表(關係)的列(屬性)它同時存在表1和表2中,它不是表1的主鍵,而是表2的主鍵,就可以說他是表1的外鍵。
3、候選鍵(Candidate Key):能唯一標識表(關係)中行(元組)的列(屬性),則稱該屬性爲候選鍵,也稱 候選關鍵字 或 候選碼;由此來看候選鍵可以不只一個,還看一看得出的就是主鍵同時它也是候選鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章