包含在任何一個(gè)候選碼中的屬性,叫做主屬性。不包含在任何碼中的屬性稱為非主屬性或非碼屬性。最簡(jiǎn)單的情況,單個(gè)屬性是碼。最極端的情況,整個(gè)屬性組是碼,稱為全碼。
關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)之時(shí)是要遵守一定的規(guī)則的。尤其是數(shù)據(jù)庫(kù)設(shè)計(jì)范式 現(xiàn)簡(jiǎn)單介紹1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介紹。 在你設(shè)計(jì)數(shù)據(jù)庫(kù)之時(shí),若能符合這幾個(gè)范式,你就是數(shù)據(jù)庫(kù)設(shè)計(jì)的高手
關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)之時(shí)是要遵守一定的規(guī)則的。尤其是數(shù)據(jù)庫(kù)設(shè)計(jì)范式 現(xiàn)簡(jiǎn)單介紹1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介紹。 在你設(shè)計(jì)數(shù)據(jù)庫(kù)之時(shí),若能符合這幾個(gè)范式,你就是數(shù)據(jù)庫(kù)設(shè)計(jì)的高手。
第一范式(1NF):在關(guān)系模式R中的每一個(gè)具體關(guān)系r中,如果每個(gè)屬性值 都是不可再分的最小數(shù)據(jù)單位,則稱R是第一范式的關(guān)系。例:如職工號(hào),姓名,電話號(hào)碼組成一個(gè)表(一個(gè)人可能有一個(gè)辦公室電話 和一個(gè)家里電話號(hào)碼) 規(guī)范成為1NF有三種方法:
一是重復(fù)存儲(chǔ)職工號(hào)和姓名。這樣,關(guān)鍵字只能是電話號(hào)碼。
二是職工號(hào)為關(guān)鍵字,電話號(hào)碼分為單位電話和住宅電話兩個(gè)屬性
三是職工號(hào)為關(guān)鍵字,但強(qiáng)制每條記錄只能有一個(gè)電話號(hào)碼。
以上三個(gè)方法,第一種方法最不可取,按實(shí)際情況選取后兩種情況。
第二范式(2NF):如果關(guān)系模式R(U,F(xiàn))中的所有非主屬性都完全依賴于任意一個(gè)候選關(guān)鍵字,則稱關(guān)系R 是屬于第二范式的。
例:選課關(guān)系 SCI(SNO,CNO,GRADE,CREDIT)其中SNO為學(xué)號(hào), CNO為課程號(hào),GRADEGE 為成績(jī),CREDIT 為學(xué)分。 由以上條件,關(guān)鍵字為組合關(guān)鍵字(SNO,CNO)
在應(yīng)用中使用以上關(guān)系模式有以下問(wèn)題:
a.數(shù)據(jù)冗余,假設(shè)同一門課由40個(gè)學(xué)生選修,學(xué)分就 重復(fù)40次。
b.更新異常,若調(diào)整了某課程的學(xué)分,相應(yīng)的元組CREDIT值都要更新,有可能會(huì)出現(xiàn)同一門課學(xué)分不同。
c.插入異常,如計(jì)劃開(kāi)新課,由于沒(méi)人選修,沒(méi)有學(xué)號(hào)關(guān)鍵字,只能等有人選修才能把課程和學(xué)分存入。
d.刪除異常,若學(xué)生已經(jīng)結(jié)業(yè),從當(dāng)前數(shù)據(jù)庫(kù)刪除選修記錄。某些門課程新生尚未選修,則此門課程及學(xué)分記錄無(wú)法保存。
原因:非關(guān)鍵字屬性CREDIT僅函數(shù)依賴于CNO,也就是CREDIT部分依賴組合關(guān)鍵字(SNO,CNO)而不是完全依賴。
解決方法:分成兩個(gè)關(guān)系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新關(guān)系包括兩個(gè)關(guān)系模式,它們之間通過(guò)SC1中的外關(guān)鍵字CNO相聯(lián)系,需要時(shí)再進(jìn)行自然聯(lián)接,恢復(fù)了原來(lái)的關(guān)系
第三范式(3NF):如果關(guān)系模式R(U,F(xiàn))中的所有非主屬性對(duì)任何候選關(guān)鍵字都不存在傳遞信賴,則稱關(guān)系R是屬于第三范式的。
例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各屬性分別代表學(xué)號(hào),
姓名,所在系,系名稱,系地址。
關(guān)鍵字SNO決定各個(gè)屬性。由于是單個(gè)關(guān)鍵字,沒(méi)有部分依賴的問(wèn)題,肯定是2NF。但這關(guān)系肯定有大量的冗余,有關(guān)學(xué)生所在的幾個(gè)屬性DNO,DNAME,LOCATION將重復(fù)存儲(chǔ),插入,刪除和修改時(shí)也將產(chǎn)生類似以上例的情況。