本篇文章為大家帶來了關於mysql的相關知識,主要介紹了MySQL中關於超鍵和主鍵及候選鍵的區別說明,具有很好的參考價值,希望對大家有所幫助。
推薦學習:mysql影片教學
最近在看MySQL的書時遇到了一個問題:
既然已經有了主鍵這個概念,主鍵已經能夠滿足需求了,那為什麼還要有候選鍵這種東西?候選鍵的作用是什麼呢?給了它一個候選鍵的定義但是它真的沒有什麼亂用。
抱著刨根問底攔不住的心態我去網上搜了搜,看了看大神們的解釋,看得我還是有些懵懂,於是想在這裡梳理一下,幫助自己理解的更通透,也希望如果有理解錯的地方能有人指點一下 下面就是我的一些理解:
其實主鍵和超鍵還好一些,比如有這麼一個表:
表寫的有些糙,湊合來看吧。
在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。註定義中的“屬性集”,超鍵可以是一個很大的集合,只要他能確定是哪一行就行,因此'id','user','pwd','section','name'都可以是超鍵的集。
不含有多餘屬性的超鍵,例如在上面的超鍵中,'id'自己就可以獨自確定是哪一行,所以他自己可以是一個候選鍵,除去它以外的另外四個也可以是候選鍵,但是這五個放在一起因為有了多餘的列,他們就不是候選鍵。 (另外四個可以是候選鍵的原因是每一列都有可能有重複的內容)
在所有的候選鍵裡面找一個作為主鍵供使用,也就是說可以是id,也可以是另外四個的合體,也有可能是其他的選擇,只要能保證選擇的集合能唯一確定即可。
總結來說,候選鍵是超鍵的子集,主鍵是候選鍵的子集。
其實整理了這麼多以後我還是不明白候選鍵的作用到底是什麼,其實他可能就是作為一個候車廳一樣,車上只剩下一個座位,有幾個主鍵在候車廳裡坐著,告訴你:“我們幾個人都買票了,都有資格上車,你選誰上,我們誰就跟你去上車”,應該就是這樣。
候選鍵是超鍵的子集,主鍵是候選鍵中的一個。
考慮屬性集(身分證號,姓名,性別,年齡),假設無重名
a.其中超鍵有:
b.超鍵中的候選鍵
#c.選擇主鍵
實例:
在SQL Server資料庫中,有一個學生資訊表如下所示,在該表中不能作為候選鍵的屬性集合為( ) (選擇一項)
學號姓名性別年齡系別專業
20020612 李輝男20 電腦軟體開發
20060613 張明男18 電腦軟體開發
20060614 王小玉女19 物理力學
20060615 李淑華女17 生物動物學
20060616 趙靜男21 化學食品化學
20060617 趙靜女20 生物植物學
a){學號){學號}
b){學號、姓名}
c){年齡、系別}
d){姓名、性別}
e){姓名、專業}
推薦學習:mysql影片教學
#以上是MySQL中關於超鍵與主鍵及候選鍵的區別分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!