MySQL中關於超鍵與主鍵及候選鍵的區別分析

WBOY
發布: 2022-08-01 15:08:32
轉載
1794 人瀏覽過

本篇文章為大家帶來了關於mysql的相關知識,主要介紹了MySQL中關於超鍵和主鍵及候選鍵的區別說明,具有很好的參考價值,希望對大家有所幫助。

MySQL中關於超鍵與主鍵及候選鍵的區別分析

推薦學習:mysql影片教學

#關於超鍵與主鍵及候選鍵的差異

最近在看MySQL的書時遇到了一個問題:

既然已經有了主鍵這個概念,主鍵已經能夠滿足需求了,那為什麼還要有候選鍵這種東西?候選鍵的作用是什麼呢?給了它一個候選鍵的定義但是它真的沒有什麼亂用。

抱著刨根問底攔不住的心態我去網上搜了搜,看了看大神們的解釋,看得我還是有些懵懂,於是想在這裡梳理一下,幫助自己理解的更通透,也希望如果有理解錯的地方能有人指點一下 下面就是我的一些理解:

其實主鍵和超鍵還好一些,比如有這麼一個表:

MySQL中關於超鍵與主鍵及候選鍵的區別分析

表寫的有些糙,湊合來看吧。

超鍵

在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。註定義中的“屬性集”,超鍵可以是一個很大的集合,只要他能確定是哪一行就行,因此'id','user','pwd','section','name'都可以是超鍵的集。

候選鍵

不含有多餘屬性的超鍵,例如在上面的超鍵中,'id'自己就可以獨自確定是哪一行,所以他自己可以是一個候選鍵,除去它以外的另外四個也可以是候選鍵,但是這五個放在一起因為有了多餘的列,他們就不是候選鍵。 (另外四個可以是候選鍵的原因是每一列都有可能有重複的內容)

主鍵

在所有的候選鍵裡面找一個作為主鍵供使用,也就是說可以是id,也可以是另外四個的合體,也有可能是其他的選擇,只要能保證選擇的集合能唯一確定即可。

總結來說,候選鍵是超鍵的子集,主鍵是候選鍵的子集。

其實整理了這麼多以後我還是不明白候選鍵的作用到底是什麼,其實他可能就是作為一個候車廳一樣,車上只剩下一個座位,有幾個主鍵在候車廳裡坐著,告訴你:“我們幾個人都買票了,都有資格上車,你選誰上,我們誰就跟你去上車”,應該就是這樣。

瞭解超鍵、候選鍵、主鍵概念及關係式

#基本概念

  • #超鍵(super key):在關係中能唯一標識元組的屬性集稱為關係模式的超鍵/碼。
  • 候選鍵(candidate key):不含有多餘屬性的超鍵稱為候選鍵,即其真子集不再是超鍵。
  • 主鍵(primary key):使用者選用元組標識的一個候選鍵稱為主鍵,是候選鍵之一。

關係

候選鍵是超鍵的子集,主鍵是候選鍵中的一個。

舉個栗子

考慮屬性集(身分證號,姓名,性別,年齡),假設無重名

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中文網其他相關文章!

相關標籤:
來源:jb51.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!