明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

數(shù)據(jù)庫中超鍵、主鍵、外鍵等的定義用法詳細說明

[摘要]本篇文章主要給大家介紹MySQL數(shù)據(jù)庫中超鍵、候選鍵、主鍵、主屬性、外鍵的具體定義和用處。以下內(nèi)容詳解也可以參考PHP中文網(wǎng)的MySQL視頻教程和MySQL手冊。首先看看各種鍵的定義:超鍵(supe...
本篇文章主要給大家介紹MySQL數(shù)據(jù)庫中超鍵、候選鍵、主鍵、主屬性、外鍵的具體定義和用處。以下內(nèi)容詳解也可以參考PHP中文網(wǎng)的MySQL視頻教程MySQL手冊

首先看看各種鍵的定義:

超鍵(super key):在關(guān)系中能唯一標(biāo)識元組的屬性集稱為關(guān)系模式的超鍵

候選鍵(candidate key):不含有多余屬性的超鍵稱為候選鍵

主鍵(primary key):用戶選作元組標(biāo)識的一個候選鍵程序主鍵

外鍵(foreign key)如果關(guān)系模式R1中的某屬性集不是R1的主鍵,而是另一個關(guān)系R2的主鍵則該屬性集是關(guān)系模式R1的外鍵。

結(jié)合實例的具體解釋:

假設(shè)有如下兩個表:

學(xué)生(學(xué)號,姓名,性別,身份證號,教師編號)
教師(教師編號,姓名,工資)

超鍵:

由超鍵的定義可知,學(xué)生表中含有學(xué)號或者身份證號的任意組合都為此表的超鍵。如:(學(xué)號)、(學(xué)號,姓名)、(身份證號,性別)等。

候選鍵:

候選鍵屬于超鍵,它是最小的超鍵,就是說如果再去掉候選鍵中的任何一個屬性它就不再是超鍵了。學(xué)生表中的候選鍵為:(學(xué)號)、(身份證號)。

主鍵:

主鍵就是候選鍵里面的一個,是人為規(guī)定的,例如學(xué)生表中,我們通常會讓“學(xué)號”做主鍵,教師表中讓“教師編號”做主鍵。

外鍵:

外鍵比較簡單,學(xué)生表中的外鍵就是“教師編號”。外鍵主要是用來描述兩個表的關(guān)系。

主屬性和主鍵

嚴(yán)格來說主屬性:指主鍵列,即主鍵由一列構(gòu)成主鍵定義:能夠唯一標(biāo)識一個元組的屬性或?qū)傩约,即可以由多列組成。
在教學(xué)中,大多實例都是主鍵由一列構(gòu)成,所以也可以簡單地說主屬性與主鍵沒有什么區(qū)別。

第一范式(1NF)

第一范式是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復(fù)的屬性這就是第一范式的基本概念。

什么意思呢,舉個例子,在一個表里有一個“電話”字段,其值既有手機號,又有座機號 那么這樣就不符合第一范式的要求了。此時應(yīng)該將“電話”拆分為“手機”跟“座機” 這樣一來就變成了一個符合第一范式的數(shù)據(jù)表了。

總結(jié):字段不能再分。
第二范式(2NF)
第二范式是在第一范式的基礎(chǔ)上建立起來的,即滿足第二范式必須先滿足第一范式。第二范式要求數(shù)據(jù)庫表中的每個實例或行必須可以被惟一的區(qū)分。為實現(xiàn)區(qū)分,通常需要為表加上一個列,以存儲各個實例的惟一標(biāo)識,要求實體的屬性完全依賴于主鍵。要討論一個表符不符合第二范式的前提是,這個表的主鍵為組合主鍵,如果不是組合主鍵那就談不上符不符合第二范式了。
總結(jié):不能部分依賴,就是說當(dāng)一個表有組合主鍵時,其他非主鍵的字段必須完全依賴于主鍵。
第三范式(3NF)

第三范式是要符合第二范式,第三范式就是一個數(shù)據(jù)表中不能存在其他數(shù)據(jù)表中的非主鍵字段,也就是說如果存在其他表中的字段,就一定得是那個表的主鍵。

假如一個表有有a b c三個字段,a—>b b—>c。 那么c與a就是傳遞依賴,這樣就不符合第三范式。而且不管a能不能直接確定c都屬于傳遞依賴,所以只有b跟c不依賴于a以外的任何字段才符合第三范式。

總結(jié):不可以有傳遞依賴,就是說主鍵以外的字段必須依賴主鍵 而不能依賴其他字段。

以上就是數(shù)據(jù)庫中超鍵、主鍵、外鍵等的定義用法詳解的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。