數(shù)據(jù)庫系統(tǒng)-04關(guān)系數(shù)據(jù)庫理論2節(jié)_第1頁
數(shù)據(jù)庫系統(tǒng)-04關(guān)系數(shù)據(jù)庫理論2節(jié)_第2頁
數(shù)據(jù)庫系統(tǒng)-04關(guān)系數(shù)據(jù)庫理論2節(jié)_第3頁
數(shù)據(jù)庫系統(tǒng)-04關(guān)系數(shù)據(jù)庫理論2節(jié)_第4頁
數(shù)據(jù)庫系統(tǒng)-04關(guān)系數(shù)據(jù)庫理論2節(jié)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

4.1

規(guī)范化問題與函數(shù)依賴一.規(guī)范化的主要內(nèi)容關(guān)系數(shù)據(jù)庫的規(guī)范化理論最早是由關(guān)系數(shù)據(jù)庫的創(chuàng)始人E.F.Codd

,學(xué)者對(duì)關(guān)系數(shù)據(jù)庫理論作了深入的研究和發(fā)展,形成了一整套有關(guān)關(guān)系數(shù)據(jù)庫設(shè)計(jì)的理論。在該理論出現(xiàn)以前,層次和網(wǎng)狀數(shù)據(jù)庫的設(shè)計(jì)只是遵循其模型本身固有的原則,而無具體的理論依據(jù)可言,因而帶有盲目性,可能在以后的運(yùn)行和使用中發(fā)生許多預(yù)想不到的問題。23在關(guān)系數(shù)據(jù)庫系統(tǒng)中,關(guān)系模型包括一組關(guān)系模式,各個(gè)關(guān)系不是完全孤立的。如何設(shè)計(jì)一個(gè)適合的關(guān)系數(shù)據(jù)庫系統(tǒng),關(guān)鍵是關(guān)系數(shù)據(jù)庫模式的設(shè)計(jì),一個(gè)好的關(guān)系數(shù)據(jù)庫模式應(yīng)該包括多少關(guān)系模式,而每一個(gè)關(guān)系模式又應(yīng)該包括哪些屬性,又如何將這些相互關(guān)聯(lián)的關(guān)系模式組建一個(gè)適合的關(guān)系模型,這些工作決定了到整個(gè)系統(tǒng)運(yùn)行的效率,也是系統(tǒng)成敗的關(guān)鍵所在,所以必須在關(guān)系數(shù)據(jù)庫的規(guī)范化理論的指導(dǎo)下逐步完成。關(guān)系數(shù)據(jù)庫的規(guī)范化理論主要包括三個(gè)方面的內(nèi)容:函數(shù)依賴范式模式設(shè)計(jì)二.關(guān)系模式的

異常問題數(shù)據(jù)庫的邏輯設(shè)計(jì)為什么要遵循一定的規(guī)范化理論?好的關(guān)系模式?某些不好的關(guān)系模式可能導(dǎo)致哪些問題?下面通過例子進(jìn)行分析:4例如,要求設(shè)計(jì)教學(xué)管理數(shù)據(jù)庫,其關(guān)系模式SCD如下:SCD(SNO,

O,SCORE)其中,SNO表示學(xué)生學(xué)號(hào),SN表示學(xué)生 ,AGE表示學(xué)生 ,DEPT表示學(xué)生所在的系別,MN表示系,CNO表示課程號(hào),SCORE表示成績(jī)。根據(jù)實(shí)際情況,這些數(shù)據(jù)有如下語義規(guī)定:一個(gè)系有若干個(gè)學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系只有一名系 ,但一個(gè)系 可以同時(shí)兼幾個(gè)系的系

;一個(gè)學(xué)生可以選修多門功課,每門課程可有若干學(xué)生選修;每個(gè)學(xué)生學(xué)習(xí)課程有一個(gè)成績(jī)。在此關(guān)系模式中填入一部分具體的數(shù)據(jù),則可得到SCD關(guān)系模式的實(shí)例,即一個(gè)教學(xué)管理數(shù)據(jù)庫,如圖4.1所示。5圖4.1關(guān)系SCDSNOSNAGEDEPTMNCNOSCORES117計(jì)算機(jī)C190S117計(jì)算機(jī)C285S218信息C557S218信息C680S218信息C770S218信息C570S320信息C10S320信息C270S320信息C485S4男自動(dòng)化C1936根據(jù)上述的語義規(guī)定,并分析以上關(guān)系中的數(shù)據(jù),

可以看出:(一標(biāo)識(shí)一個(gè)元組,所以(O)屬性的組合能唯O)是該關(guān)系模式的主關(guān)系鍵。但在進(jìn)行數(shù)據(jù)庫的操作時(shí),會(huì)出現(xiàn)以下幾方面的問題。1.

數(shù)據(jù)冗余。每個(gè)系名和系

的名字的次數(shù)等于該系的學(xué)生人數(shù)乘以每個(gè)學(xué)生選修的課程門數(shù),同時(shí)學(xué)生的

、

也都要重多次,數(shù)據(jù)的冗余度很大,浪費(fèi)了復(fù)空間。2.異常。如果某個(gè)新系沒有招生,尚無學(xué)生時(shí),則系名和系 的信息無法

到數(shù)據(jù)庫中。7刪除異常。某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪除全部學(xué)生的記錄則系名、系也隨之刪除,而這個(gè)系依然存在,在數(shù)據(jù)庫中卻無法找到該系的信息。更新異常。如果學(xué)生改名,則該學(xué)生的所有記錄都要逐一修改SN;又如某系更換系 ,則屬于該系的學(xué)生記錄都要修改MN的內(nèi)容,稍有不慎,就有可能漏改某些記錄,這就會(huì)造成數(shù)據(jù)的不一致性,破壞了數(shù)據(jù)的完整性。8由于存在以上問題,說,SCD是一個(gè)不好的關(guān)系模式。產(chǎn)生上述問題的原因,直觀地說,是因?yàn)殛P(guān)系中

“包羅萬象”,內(nèi)容太雜了。那么,如何才能得到一個(gè)好的關(guān)系模式呢?把關(guān)系模式SCD分解為下面三個(gè)結(jié)構(gòu)簡(jiǎn)單的關(guān)系模式,如圖4.2所示。學(xué)生關(guān)系S(SNO,SN,AGE,DEPT)選課關(guān)系SC(

O,SCORE)系關(guān)系D(DEPT,MN)9S

SNOSNAGEDEPTS117計(jì)算機(jī)S218信息S320信息S421自動(dòng)化SNSOCCNOSCORES1C190S1C285S2C557S2C680S2C7S2C570S3C10S3C270S3C485S4C193DDEPTMN計(jì)算機(jī)信息自動(dòng)化圖4.2 分解后的關(guān)系模式10在以上三個(gè)關(guān)系模式中,實(shí)現(xiàn)了信息的某種程度的分離,學(xué)生基本信息,與所選課程及系 無關(guān);系的有關(guān)信息,與學(xué)生無關(guān);S中D中SC中學(xué)生選課的信息,而與所學(xué)生及系的有關(guān)信息無關(guān)。與SCD相比,分解為三個(gè)關(guān)系模式后,數(shù)據(jù)的冗余度明顯降低。當(dāng)新

一個(gè)系時(shí),只要在關(guān)系D中添加一條記錄。當(dāng)某個(gè)學(xué)生尚未選課,只要在關(guān)系S中添加一條學(xué)生記錄,而與選課關(guān)系無關(guān),這就避免了

異常。,當(dāng)一個(gè)系的學(xué)生全部畢業(yè)時(shí),只需在S中刪除該系的全部學(xué)生記錄,而關(guān)系D中有關(guān)該系的信息仍然保留,從而不會(huì)引起刪除異常。同時(shí),由于數(shù)據(jù)冗余度的降低,數(shù)據(jù)沒有重復(fù)也不會(huì)引起更新異常。11經(jīng)過上述分析,

說分解后的關(guān)系模式是一個(gè)好的關(guān)系數(shù)據(jù)庫模式。從而得出結(jié)論,一個(gè)好的關(guān)系模式應(yīng)該具備以下四個(gè)條件:盡可能少的數(shù)據(jù)冗余。沒有 異常。沒有刪除異常。沒有更新異常。12如何按照一定的規(guī)范設(shè)計(jì)關(guān)系模式,將結(jié)構(gòu)復(fù)雜的關(guān)系分解成結(jié)構(gòu)簡(jiǎn)單的關(guān)系,從而把不好的關(guān)系數(shù)據(jù)庫模式轉(zhuǎn)變?yōu)楹玫年P(guān)系數(shù)據(jù)庫模式,這就是關(guān)系的規(guī)范化。

要設(shè)計(jì)的關(guān)系模式中的各屬性是相互依賴、相互制約的,這樣才構(gòu)成了一個(gè)結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)恼w。因此在設(shè)計(jì)關(guān)模式時(shí),必須從語義上分析這些依賴關(guān)系。因此,

屬性間的依賴關(guān)系,然后再關(guān)系規(guī)范化理論。13三.函數(shù)依賴的定義及性質(zhì)關(guān)系模式中的各屬性之間相互依賴、相互制約的聯(lián)系稱為數(shù)據(jù)依賴。數(shù)據(jù)依賴一般分為函數(shù)依賴、多值依賴和連接依賴。函數(shù)依賴(Functional

Dependency)是關(guān)系模式中屬性之間的一種邏輯依賴關(guān)系。例如在關(guān)系模式SCD中,SNO與SN、AGE、DEPT之間都有一種依賴關(guān)系。由于一個(gè)SNO只對(duì)應(yīng)一個(gè)學(xué)生,而一個(gè)學(xué)生只能屬于一個(gè)系,所以當(dāng)SNO的值確定之后,SN,AGE,DEPT的值也隨之被唯一的確定了。在這里,

說(SN,AGE,DEPT)函數(shù)依賴于SNO。141.函數(shù)依賴的定義定義4.1

設(shè)關(guān)系模式R(U,F(xiàn)),U是屬性全集,F(xiàn)是U上的函數(shù)依賴集,X和Y是U的子集,如果對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,對(duì)于X的每一個(gè)具體值,Y都有唯一的具體值與之對(duì)應(yīng),則稱X決定函數(shù)Y,或Y函數(shù)依賴于X,記作X→Y。 稱X為決定因素,Y為依賴因素。當(dāng)Y不函數(shù)依賴于X時(shí),記作:X Y。當(dāng)X→Y且Y→X時(shí),則記作:XY。對(duì)于關(guān)系模式SCDU={SNO,

O,SCORE}F={SNO→SN,SNO→AGE,SNO→DEPT}一個(gè)SNO有多個(gè)SCORE的值與其對(duì)應(yīng),因此SCORE不能唯一地確定,即SCORE不能函數(shù)依賴于SNO,所以有:

SNO

SCORE。但是SCORE可以被(SNO,CNO)唯一地確定。所以可表示為:(SNO,CNO)→SCORE。15有關(guān)函數(shù)依賴的幾點(diǎn)說明:(1)函數(shù)依賴是語義范疇的概念。只能根據(jù)語義來確定一個(gè)函數(shù)依賴,而不能按照其形式化定義來證明一個(gè)函數(shù)依賴是否成立。例如,對(duì)于關(guān)系模式S,當(dāng)學(xué)生不存在重名的情況下,可以得到:SN→AGESN→DEPT這種函數(shù)依賴關(guān)系,必須是在沒有重名的學(xué)生條件下才成立的,否則就不存在函數(shù)依賴了。所以函數(shù)依賴反映了一種語義完整性約束。1617(2)函數(shù)依賴與屬性之間的聯(lián)系類型有關(guān)。(1)在一個(gè)關(guān)系模式中,如果屬性X與Y有1:1聯(lián)系時(shí),則存在函數(shù)依賴X→Y,Y→X,即XY。例如,當(dāng)學(xué)生無重名時(shí),SNO SN。如果屬性X與Y有1:m的聯(lián)系時(shí),則只存在函數(shù)依賴X→Y。例如,SNO與AGE,DEPT之間均為1:m聯(lián)系,所以有SNO→AGE,SNO→DEPT。如果屬性X與Y有m:n的聯(lián)系時(shí),則X與Y之間不存在任何函數(shù)依賴關(guān)系。例如,一個(gè)學(xué)生可以選修多門課程,一門課程又可以為多個(gè)學(xué)生選修,所以

與 O之間不存在函數(shù)依賴關(guān)系。由于函數(shù)依賴與屬性之間的聯(lián)系類型有關(guān),所以在確定屬性間的函數(shù)依賴關(guān)系時(shí),可以從分析屬性間的聯(lián)系類型入手,便可確定屬性間的函數(shù)依賴。18(3)函數(shù)依賴關(guān)系的存在與時(shí)間無關(guān)。函數(shù)依賴關(guān)系的存在與時(shí)間無關(guān),而只與數(shù)據(jù)之間的語義規(guī)定有關(guān)。(4)函數(shù)依賴可以保證關(guān)系分解的無損連接性。設(shè)R(X,Y,Z),X,Y,Z為不相交的屬性集合,如果X→Y或X→Z,則有R(X,Y,Z)=R[X,Y]*R[X,Z],其中,R[X,Y]表示關(guān)系R在屬性(X,Y)上的投影,即R等于其投影在X上的自然連接,這樣便保證了關(guān)系R分解后不會(huì)丟失原有的信息,稱作關(guān)系分解的無損連接性。例如,對(duì)于關(guān)系模式SCD,有SNO→(SN,AGE,DEPT,MN),SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)=SCD[SNO,SN,AGE,DEPT,MN]*SCD[SNO,CNO,SCORE],也就是說,用其投影在SNO上的自然連接可復(fù)原關(guān)系模式SCD。192函數(shù)依賴的基本性質(zhì)投影性。根據(jù)平凡的函數(shù)依賴的定義可知,一組屬性函數(shù)決定它的所有子集。例如,在關(guān)系SCD中,(SNO,CNO)→SNO和(SNO,CNO)→CNO。擴(kuò)張性。若X→Y且W→Z,則(X,W)→(Y,Z)。例如,SNO→(SN,AGE),DEPT→MN,則有(SNO,DEPT)→(SN,AGE,MN)。合并性。若X→Y且X→Z則必有X→(Y,Z)。例如,在關(guān)系SCD中,SNO→(SN,AGE),SNO→(DEPT,MN),則有SNO→(SN,AGE,DEPT,MN)。分解性。若X→(Y,Z),則X→Y且X→Z。很顯然,分解性為合并性的逆過程。四.完全函數(shù)依賴與部分函數(shù)依賴′定義4.2

設(shè)關(guān)系模式R(U),U是屬性全集,X和Y是U的子集,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X′,都有X

Y,則稱Y對(duì)X完全函數(shù)依賴(Full

Functional Dependency),記作Y。如果對(duì)X的某個(gè)真子集X′,有X′→Y,則稱Y對(duì)部分函數(shù)依賴(Partial

Functional

Dependency),記作Xp

Y。由定義4.2可知:只有當(dāng)決定因素是組合屬性時(shí),

部分函數(shù)依賴才有意義,當(dāng)決定因素是單屬性時(shí),只能是完全函數(shù)依賴。.例如,在關(guān)系模式S(SNO,SN,AGE,DEPT),決定因素為單屬性SNO,有SNO→(SN,AGE,DEPT),不存在部分函數(shù)依賴。Xf20五.傳遞函數(shù)依賴定義4.3

設(shè)有關(guān)系模式R(U),U是屬性全集,X,Y,Z是U的子集,若X→Y,但Y X,而Y→Z(Y

X,Z

Y),則稱Z對(duì)X傳遞函數(shù)依賴(Transitive

Functional

Dependency),記作:X

t

Z。如果Y→X,則X

Y,這時(shí)稱Z對(duì)X直接函數(shù)依賴,而不是傳遞函數(shù)依賴。例如,在關(guān)系模式SCD中,SNO→DEPTN,但DEPTN

SNO,而

DEPTN→MN,則有SNOt

MN。當(dāng)學(xué)生不存在重名的情況下,有

SNO→SN,SN→SNO,SNO

SN,SN→DEPTN,這時(shí)DEPTN對(duì)SNO是直接函數(shù)依賴,而不是傳遞函數(shù)依賴。綜上所述,函數(shù)依賴分為完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴三類。214.2

范式規(guī)范化的基本思想是消除關(guān)系模式中的數(shù)據(jù)冗余,消除數(shù)據(jù)依賴中的不合適的部分,解決數(shù)據(jù)、刪除時(shí)發(fā)生異?,F(xiàn)象。這就要求關(guān)系數(shù)據(jù)庫設(shè)計(jì)出來的關(guān)系模式要滿足一定的條件。

把關(guān)系數(shù)據(jù)庫的規(guī)范化過程中為不同程度的規(guī)范化要求設(shè)立的不同標(biāo)準(zhǔn)稱為范式(NormalForm)。滿足最基

化要求的關(guān)系模式叫第一范式,在第一范式中進(jìn)一步滿足一些要求為第二范式,以此類推就產(chǎn)生了第三范式等概念。22圖4.3各種范式之間的關(guān)系下面逐一介紹各級(jí)范式及其規(guī)范化。23一.第一范式第一范式(

Normal

Form)是最基本的規(guī)范形式,即關(guān)系中每個(gè)屬性都是不可再分的簡(jiǎn)單項(xiàng)。定義4.4如果關(guān)系模式R,其所有的屬性均為簡(jiǎn)單屬性,即每個(gè)屬性都是不可再分的,則稱R屬于第一范式,簡(jiǎn)稱1NF,記作R1NF。24然而,一個(gè)關(guān)系模式僅僅屬于第一范式是不適用的。在4.1節(jié)中給出的關(guān)系模式SCD屬于第一范式,異常、刪但其具有大量的數(shù)據(jù)冗余,具有除異常、更新異常等弊端。為什么會(huì)存在這種問題呢?讓

分析一下SCD中的函數(shù)依賴關(guān)系,它的關(guān)系鍵是(SNO,CNO)的屬性組合,所以有:(SNO,CNO)f

SCORESNO→SN,(SNO,CNO)p

SNSNO→AGE,(SNO,CNO)p

AGESNO→DEPT,(SNO,CNO)p

DEPTMNMN,(SNO,CNO)pSNOt25可以用函數(shù)信賴圖表示以上函數(shù)依賴關(guān)系,如圖4.4所示。SNMNSCORE圖4.4

SCD中的函數(shù)依賴關(guān)系由此可見,在SCD中,既存在完全函數(shù)依賴,又存在部分函數(shù)依賴和傳遞函數(shù)依賴。這種情況往往在數(shù)據(jù)庫中是不允許的,也正是由于關(guān)系中存在著復(fù)雜的函數(shù)依賴,才導(dǎo)致數(shù)據(jù)操作中出現(xiàn)了種弊端。克服這些弊端的方法是用投影運(yùn)算將關(guān)系分解,去掉過于復(fù)雜的函數(shù)依賴關(guān)系,向更高一級(jí)的范式進(jìn)行轉(zhuǎn)換。SNOCNOPPf2627二.第二范式第二范式的定義定義4.5

如果關(guān)系模式R1NF,且每個(gè)非主屬性都完全函數(shù)依賴于R

的每個(gè)關(guān)系鍵,

則稱R

屬于第二范式(Second

Normal

Form),簡(jiǎn)稱2NF,記作R2NF。在關(guān)系模式SCD中,SNO,CNO為主屬性,AGE,DEPT,MN,MN,SCORE均為非主屬性,經(jīng)上述分析,存在非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,所以SCD2NF。由SCD分解的三個(gè)關(guān)系模式S,D,SC,其中S的關(guān)系鍵為SNO,D的關(guān)系鍵為DEPT,都是單屬性,不可能存在部分函數(shù)依賴。而對(duì)于SC,(SNO,CNO)f

SCORE。所以SCD分解后,消除了非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,S,D,SC均屬于2NF。28又如在2.4.2中,講述全碼的概念時(shí)給出的關(guān)系模式TCS(T,C,S),一個(gè)教師可以講授多門課程,一門課程可以為多個(gè)教師講授,同樣一個(gè)學(xué)生可以選聽多門課程,一門課程可以為多個(gè)學(xué)生選聽,(T,C,S)三個(gè)屬性的組合是關(guān)系鍵,T,C,S都是主屬性,而無非主屬性,所以也就不可能存在非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,TCS2NF。經(jīng)以上分析,可以得到兩個(gè)結(jié)論:從1NF關(guān)系中消除非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,則可得到2NF關(guān)系。如果R的關(guān)系鍵為單屬性,或R的全體屬性均為主屬性,則R2NF。2.2NF規(guī)范化2NF規(guī)范化是指把1NF關(guān)系模式通過投影分解轉(zhuǎn)換成2NF關(guān)系模式的集合。分解時(shí)遵循的基本原則就是“一事一地”,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。如果多于一個(gè)實(shí)體或聯(lián)系,則進(jìn)行投影分解。下面以關(guān)系模式SCD為例,來說明2NF規(guī)范化的過程例

4.1

SCD(SNO,

O,SCORE)

規(guī)范到2NF。SCORE,由SNO→SN,SNO→AGE,SNO→DEPT,(SNO,CNO)f可以判斷,關(guān)系SCD至少描述了兩個(gè)實(shí)體,一個(gè)為學(xué)生實(shí)體,屬性有SNO、SN、AGE、DEPT、MN;另一個(gè)是學(xué)生與課程的聯(lián)系(選課),屬性有

、 O和SCORE。根據(jù)分解的原則,4.5所示。可以將SCD分解成如下兩個(gè)關(guān)系,如圖29SD(SNO,SN,AGE,DEPT,MN),描述學(xué)生實(shí)體;SC(

O,SCORE),描述學(xué)生與課程的聯(lián)系。SDSNOSNAGEDEPTMNS117計(jì)算機(jī)S218信息S320信息S421自動(dòng)化SCSNOCNOSCORES1C190S1C285S2C557S2C680S2C7S2C570S3C10S3C270S3C485S4C193圖4.5關(guān)系SD和SC30對(duì)于分解后的兩個(gè)關(guān)系SD和SC,主鍵分別為SNO和(SNO,CNO),非主屬性對(duì)主鍵完全函數(shù)依賴。因此,SD2NF,SC2NF,而且前面已經(jīng)

,SCD的這種分解沒有丟失任何信息,具有無損連接性。分解后,SD和SC的函數(shù)依賴分別如圖4.6和4.7所示。SNOSNSNOCNOSCOREAGEDEPTMN圖4.6

SD中的函數(shù)依賴關(guān)系圖4.7

SC中的函數(shù)依賴關(guān)系311NF的關(guān)系模式經(jīng)過投影分解轉(zhuǎn)換成2NF后,消除了一些數(shù)據(jù)冗余。分析圖4.5中SD和SC中的數(shù)據(jù),可以看出,它們的冗余度比關(guān)系模式SCD有了較大輻度的降低。學(xué)生的、不需要重復(fù)

多次。這樣便可在一定程度上避免數(shù)據(jù)更新所造成的數(shù)據(jù)不一致性的問題。由于把學(xué)生的基本信息與選課信息分開,則學(xué)生基本信息因沒選課而不能的問題得到了解決,異?,F(xiàn)象得到了部分改善。因此可以說關(guān)系模式SD和SC在性能上比SCD有了顯著提高。323.2NF的缺點(diǎn)2NF的關(guān)系模式解決了1NF中存在的一些問題,2NF規(guī)范化的程度比1NF前進(jìn)了一步,但2NF的關(guān)系模式在進(jìn)行數(shù)據(jù)操作時(shí),仍然存在著一些問題:數(shù)據(jù)冗余。每個(gè)系名和系 的名字 的次數(shù)等于該系的學(xué)生人數(shù)。。異常。當(dāng)一個(gè)新系沒有招生時(shí),有關(guān)該系的信息無法刪除異常。某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪除全部學(xué)生的記錄也隨之刪除了該系的有關(guān)信息。4.更新異常。更換系

時(shí),仍需改動(dòng)較多的學(xué)生記錄。之所以存在這些問題,是由于在SCD中存在著非主屬性對(duì)主鍵的傳遞依賴。分析SCD中的函數(shù)依賴關(guān)系,SNO→SN,SNO→AGE,MN,非主屬性MN對(duì)主鍵SNO→DEPT,DEPT→MN,SNO

tSNO傳遞依賴。為此,對(duì)關(guān)系模式SCD還需進(jìn)一步簡(jiǎn)化,消除這種傳遞依賴,得到3NF。3334三.第三范式第三范式的定義定義4.6如果關(guān)系模式R2NF,且每個(gè)非主屬性都不傳遞依賴于R的每個(gè)關(guān)系鍵,則稱R屬于第三范式(Third

Normal

Form),簡(jiǎn)稱3NF,記作R3NF。第三范式具有如下性質(zhì):1.如果R3NF,則R也是2NF。2.如果R2NF,則R不一定是3NF。例如, 前面由關(guān)系模式SCD分解而得到的SD和SC都為2NF,其中,SC3NF,但在SD中存在著非主屬性MN對(duì)主鍵SNO傳遞依賴,SD3NF。對(duì)于SD,應(yīng)該進(jìn)一步進(jìn)行分解,使其轉(zhuǎn)換成3NF。3NF規(guī)范化3NF規(guī)范化是指把2NF關(guān)系模式通過投影分解轉(zhuǎn)換成3NF關(guān)系模式的集合。和2NF的規(guī)范化時(shí)遵循的原則相同,即“一事一地”,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。下面以2NF關(guān)系模式SD為例,來說明3NF規(guī)范化的過程。35例4.2

將SD(SNO,SN,AGE,DEPT,MN)規(guī)范到3NF。

分析SD的屬性組成,可以判斷,關(guān)系SD實(shí)際上描述了兩個(gè)實(shí)體:一個(gè)為學(xué)生實(shí)體,屬性有SNO,SN,AGE,DEPT;另一個(gè)是系的實(shí)體,其屬性DEPT和MN??梢詫D分解成如下兩個(gè)關(guān)根據(jù)分解的原則,系,如圖4.8所示。S(SNO,SN,AGE,DEPT),描述學(xué)生實(shí)體;

D(DEPT,MN),描述系的實(shí)體。36SDDEPTMN計(jì)算機(jī)信息自動(dòng)化SNOSNAGEDEPTS117計(jì)算機(jī)S218信息S320信息S421自動(dòng)化圖4.8關(guān)系S和D對(duì)于分解后的兩個(gè)關(guān)系S和D,主鍵分別為SNO和DEPT,不存在非主屬性對(duì)主鍵的傳遞函數(shù)依賴。因此,S3NF,D3NF。37分解后,S和D的函數(shù)依賴分別如圖4.9和4.10所示。SNOSNDEPTAGEDEPTMN38圖4.9

S中的函數(shù)依賴關(guān)系圖圖4.10

D中的函數(shù)依賴關(guān)系圖由以上兩圖可以看出,關(guān)系模式SD由2NF分解為3NF后,函數(shù)依賴關(guān)系變得更加簡(jiǎn)單,既沒有非主屬性對(duì)鍵的部分依賴,也沒有非主屬性對(duì)鍵的傳遞依賴,解決了2NF中存在的四個(gè)問題。1.?dāng)?shù)據(jù)冗余降低。系 的名字關(guān)系D中

一次。的次數(shù)與該系的學(xué)生人數(shù)無關(guān),只在不存在 異常。當(dāng)一個(gè)新系沒有學(xué)生時(shí),該系的信息可以直接

到關(guān)系D中,而與學(xué)生關(guān)系S無關(guān)。不存在刪除異常。要?jiǎng)h除某系的全部學(xué)生而仍然保留該系的有關(guān)信息時(shí),可以只刪除學(xué)生關(guān)系S中的相關(guān)學(xué)生記錄,而不影響系關(guān)系D中的數(shù)據(jù)。不存在更新異常。更換系 時(shí),只需修改關(guān)系D中一個(gè)相應(yīng)元組的MN屬性值,從而不會(huì)出現(xiàn)數(shù)據(jù)的不一致現(xiàn)象。SCD規(guī)范到3NF后,所存在的異?,F(xiàn)象已經(jīng)全部

。但是,3NF只限制了非主屬性對(duì)鍵的依賴關(guān)系,而沒有限制主屬性對(duì)鍵的依賴關(guān)系。如果發(fā)生了這種依賴,仍有可能存在數(shù)據(jù)冗余、異常、刪除異常和修改異常。這時(shí),則需對(duì)3NF進(jìn)一步規(guī)范化,消除主屬性對(duì)鍵的依賴關(guān)系,為了解決這種問題,Boyce與Codd共同提出了一個(gè)新范式的定義,這就是Boyce-Codd范式,通常簡(jiǎn)稱BCNF或BC范式。它彌補(bǔ)了3NF的不足。39四.BC范式1.BC范式的定義定義4.7

如果關(guān)系模式R1NF,且所有的函數(shù)依賴X→Y(Y

X),決定因素X都包含了R的一個(gè)候選鍵,則稱R屬于BC范式(

Boyce-CoddNormal

Form),記作

F。BCNF具有如下性質(zhì):1.滿足BCNF的關(guān)系將消除任何屬性(主屬性或非主屬性)對(duì)鍵的部分函數(shù)依賴和傳遞函數(shù)依賴。也就是說,如果

F,則R也是3NF。證明:采用反證法。設(shè)R不是3NF。則必然存在如下條件的函數(shù)依賴,X→Y(Y

X),Y→Z,其中X是鍵屬性,Y是任意屬性組,Z是非主屬性,Z

Y,這樣Y→Z函數(shù)依賴的決定因素Y不包含候選鍵,這與BCNF范式的定義相 ,所以如果

F,則R也是3NF。402.如果R3NF,則

不一定是

F?,F(xiàn)舉例說明。設(shè)關(guān)系模式SNC(SNO,SN,CN0,SCORE),其中

SNO代表學(xué)號(hào),SN代表學(xué)生

并假設(shè)沒有重名,CNO代表課程號(hào),SCORE代表成績(jī)??梢耘卸?,SNC有兩個(gè)候選鍵(SNO,CNO)和(SN,CNO),其函數(shù)依賴如下:SNO

SN(SNO,CNO)→SCORE(SN,CNO)→SCORE。唯一的非主屬性SCORE對(duì)鍵不存在部分函數(shù)依賴,也不存在傳遞函數(shù)依賴。所以SNC3NF。但是,因?yàn)镾NO

SN,即決定因素SNO或SN不包含候選鍵,從另一個(gè)角度說,存在著主屬性對(duì)鍵的部分函數(shù)依賴:(SNO,p

CNO)

SN,(SN,p

CNO) SNO,所以 不是

F。正是存在著這種主屬性對(duì)鍵的部分函數(shù)依賴關(guān)系,造成了關(guān)系SNC中存在著較大的數(shù)據(jù)冗余,學(xué)生

次數(shù)等于該生所選的課程數(shù)。從而會(huì)引起修改異常。比如,當(dāng)要更改某個(gè)學(xué)生的時(shí),則必須搜索出現(xiàn)該的每個(gè)學(xué)生記錄,并對(duì)其逐一修改,這樣容易造成數(shù)據(jù)的不一致問題。解決這一問題的辦法仍然是通過投影分解進(jìn)一步提高SNC的范式等級(jí),將規(guī)范到F。412.BCNF規(guī)范化BCNF規(guī)范化是指把3NF關(guān)系模式通過投影分解轉(zhuǎn)換成BCNF關(guān)系模式的集合。下面以3NF關(guān)系模式SNC為例,來說明BCNF規(guī)范化的過程。例4.3

將SNC(

O,SCORE)規(guī)范到BCNF。分析SNC數(shù)據(jù)冗余的原因,是因?yàn)樵谶@一個(gè)關(guān)系中存在兩個(gè)實(shí)體,一個(gè)為學(xué)生實(shí)體,屬性有SNO、SN;另一個(gè)是選課實(shí)體,屬性有、O和SCORE。根據(jù)分解的原則,

可以將SNC分解成如下兩個(gè)關(guān)系:S1(SNO,SN),描述學(xué)生實(shí)體;S2(

O,SCORE),描述學(xué)生與課程的聯(lián)系。對(duì)于S1,有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論