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):能唯一標識表(關系)中行(元組)的列(屬性),則稱該屬性為候選鍵,也稱 候選關鍵字 或 候選碼;由此來看候選鍵可以不只一個,還看一看得出的就是主鍵同時它也是候選鍵。


免責聲明!

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



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