關(guān)系數(shù)據(jù)庫(kù)(RDB)規(guī)范化設(shè)計(jì)理論.ppt_第1頁(yè)
關(guān)系數(shù)據(jù)庫(kù)(RDB)規(guī)范化設(shè)計(jì)理論.ppt_第2頁(yè)
關(guān)系數(shù)據(jù)庫(kù)(RDB)規(guī)范化設(shè)計(jì)理論.ppt_第3頁(yè)
關(guān)系數(shù)據(jù)庫(kù)(RDB)規(guī)范化設(shè)計(jì)理論.ppt_第4頁(yè)
關(guān)系數(shù)據(jù)庫(kù)(RDB)規(guī)范化設(shè)計(jì)理論.ppt_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第4章 關(guān)系數(shù)據(jù)庫(kù)(RDB)規(guī)范化理論,4.1 關(guān)系模式規(guī)范化的必要性 4.2 數(shù)值依賴 4.3 范式與規(guī)范化 、關(guān)系分解原則, ,RDB規(guī)范化理論的目的是要設(shè)計(jì)“好的”RDB模式。 要設(shè)計(jì)好的關(guān)系模式,必須是關(guān)系滿足一定的約束條件,此約束形成了規(guī)范。,范式(Normal Form):衡量DB規(guī)范的層次或深度,DB規(guī)范化層次由范式來(lái)決定。簡(jiǎn)記作NF. 根據(jù)關(guān)系模式滿足的不同性質(zhì)和規(guī)范化的程度,將關(guān)系模式分為第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式、第四范式(4NF)、第五范式(5NF),范式越高規(guī)范化程度越高。,規(guī)范化:低級(jí)關(guān)系模式通過(guò)模式分解轉(zhuǎn)換為若干高級(jí)范式的關(guān)

2、系模式集合的過(guò)程。 規(guī)范化是在RDB中減少數(shù)據(jù)冗余的過(guò)程。,4.1 關(guān)系模式規(guī)范化的必要性,1. 關(guān)系模式應(yīng)滿足的條件 2. 關(guān)系規(guī)范化可能出現(xiàn)的問(wèn)題 3. 模式分解是關(guān)系規(guī)范化的主要方法,1.關(guān)系模式應(yīng)滿足的條件, 元組每個(gè)分量必是不可再分的數(shù)據(jù)項(xiàng) RDB特別強(qiáng)調(diào),關(guān)系中的屬性不能是組合屬性,必須是基本項(xiàng)。否則,會(huì)使關(guān)系結(jié)構(gòu)變?yōu)槎鄬哟蔚幕旌辖Y(jié)構(gòu),增加關(guān)系操作的表達(dá)、優(yōu)化即執(zhí)行的復(fù)雜度。如: 教師( 姓名,工資,所授課程名,課程號(hào));, ,職務(wù)工資 津貼 課時(shí)補(bǔ)貼, DB中的數(shù)據(jù)冗余應(yīng)盡量少 “數(shù)據(jù)冗余”會(huì)使: DB中的數(shù)據(jù)量巨增,系統(tǒng)負(fù)擔(dān)過(guò)重,并浪費(fèi)大量存儲(chǔ)空間; 造成數(shù)據(jù)的不完整,增加數(shù)據(jù)

3、維護(hù)的代價(jià)。 造成數(shù)據(jù)查詢和統(tǒng)計(jì)困難,導(dǎo)致錯(cuò)誤結(jié)果。, RDB不能因?yàn)閿?shù)據(jù)更新操作而引起數(shù)據(jù)不一致性即更新異常 對(duì)于“數(shù)據(jù)冗余大”的RDB,當(dāng)執(zhí)行數(shù)據(jù)修改時(shí),系統(tǒng)要付出很大代價(jià)來(lái)維護(hù)數(shù)據(jù)庫(kù)的完整性。否則會(huì)面臨數(shù)據(jù)不一致的危險(xiǎn)。影響了數(shù)據(jù)的完整性,使得DB中數(shù)據(jù)的可信度降低。如:某教師從78號(hào)宿舍搬到76號(hào),修改量較大.,當(dāng)執(zhí)行數(shù)據(jù)插入時(shí),DB中的數(shù)據(jù)不能產(chǎn)生插入異常現(xiàn)象 所謂“插入異?!笔侵赶M迦氲男畔⒂捎诓荒軡M足數(shù)據(jù)完整性的某種要求而不能正常地被插入到DB中的異常問(wèn)題。 比如:上例中插入一個(gè)尚未安排授課的新進(jìn)教師信息. 原因: 因多種信息混合放在一個(gè)表中,可能造成因一種信息被捆綁在其他信息

4、上而產(chǎn)生的信息之間相互依附存儲(chǔ)的問(wèn)題,使得信息不能獨(dú)立插入。, DB中數(shù)據(jù)不能在執(zhí)行刪除操作時(shí)產(chǎn)生“刪除異?!眴?wèn)題 “刪除異常”是指在刪除某種信息的同時(shí)把其它信息也刪除了。 比如: 上例取消T3教師的教學(xué)任務(wù),要?jiǎng)h除其授課元組,則在刪除其授課信息的同時(shí)將其地址和姓名信息一并刪除掉了. “刪除異常”是DB結(jié)構(gòu)不合理產(chǎn)生的問(wèn)題。若關(guān)系中多種信息捆綁在一起,當(dāng)被刪除信息中含有關(guān)系的主關(guān)鍵字時(shí),因關(guān)系要滿足實(shí)體完整性,整個(gè)元組將全部從DB中被刪除,即出現(xiàn)“刪除異常”。,為解決這幾個(gè)問(wèn)題可將關(guān)系模式 教師 分解為兩個(gè)模式R,S。這樣數(shù)據(jù)冗余度變小,不存在插入、更新和刪除異常情況了。,關(guān)系R,關(guān)系S,關(guān)系

5、 教師, DB設(shè)計(jì)應(yīng)考慮查詢要求,數(shù)據(jù)組織應(yīng)合理 在DB設(shè)計(jì)時(shí),不僅要考慮到數(shù)據(jù)自身的結(jié)構(gòu)完整性,還要考慮到數(shù)據(jù)的使用要求。 為使數(shù)據(jù)查詢和數(shù)據(jù)處理高效簡(jiǎn)潔,特別是對(duì)查詢實(shí)時(shí)性要求高、操作頻度大的數(shù)據(jù),有必要通過(guò)視圖、索引和適量增加數(shù)據(jù)冗余的方法,增加DB的方便性和可用性。,2. 關(guān)系規(guī)范化可能出現(xiàn)的問(wèn)題,如果一個(gè)關(guān)系沒(méi)有經(jīng)過(guò)規(guī)范化,可能會(huì)出現(xiàn)數(shù)據(jù)冗余大、數(shù)據(jù)更新造成不一致、數(shù)據(jù)插入異常和刪除異常。 例6:學(xué)生關(guān)系存在的問(wèn)題:數(shù)據(jù)冗余(系主任名)、更新異常(換系主任)、插入異常(系沒(méi)有招生系主任名不能插入)、刪除異常(學(xué)生畢業(yè))。,3. 模式分解是關(guān)系規(guī)范化的主要方法,對(duì)于有問(wèn)題的關(guān)系模式,可

6、通過(guò)模式分解的方法使之規(guī)范化。 原學(xué)生關(guān)系(學(xué)號(hào),姓名,所在系,系主任姓名,課程名,成績(jī))可分解為以下三個(gè)關(guān)系: 學(xué)生(學(xué)號(hào),姓名,所在系) 系(所在系,系主任姓名) 考試(學(xué)號(hào),課程名,成績(jī)) 新關(guān)系克服了學(xué)生關(guān)系存在的問(wèn)題,更加合理和實(shí)用。,4.2 數(shù)據(jù)依賴,1. 函數(shù)依賴 2. 平凡函數(shù)依賴與非平凡函數(shù)依賴 3. 完全函數(shù)依賴與部分函數(shù)依賴 4. 傳遞函數(shù)依賴, ,在DB中,數(shù)據(jù)屬性之間存在著密切的聯(lián)系。在DB技術(shù)中,把數(shù)據(jù)之間存在的聯(lián)系稱為“數(shù)據(jù)依賴”。 DB中出現(xiàn)的數(shù)據(jù)異常現(xiàn)象與數(shù)據(jù)依賴有著緊密的關(guān)聯(lián)。在數(shù)據(jù)依賴中,函數(shù)依賴是最基本的一種依賴形式。 認(rèn)識(shí)和掌握函數(shù)依賴知識(shí),對(duì)于DB的

7、約束設(shè)計(jì)和規(guī)范化設(shè)計(jì)具有重要意義。,1. 函數(shù)依賴,假設(shè)R(A1,A2,An)是一個(gè)關(guān)系模式,X和Y是A1,A2,An的子集,對(duì)于關(guān)系R中的任意一個(gè)X的值,都只有一個(gè)Y值與之對(duì)應(yīng),則稱“X函數(shù)確定Y”或“Y函數(shù)依賴于X”,記作XY。 例如:學(xué)生(學(xué)號(hào),姓名,所在系,課程名,成績(jī))關(guān)系模式中,學(xué)號(hào)姓名 學(xué)號(hào)所在系 (學(xué)號(hào),課程名)成績(jī), ,注意:X和Y都是屬性組,如果XY,表示X中取值確定時(shí),Y中的取值惟一確定,即X決定Y或Y函數(shù)依賴于X,X是決定因素。 函數(shù)依賴類似于數(shù)學(xué)中的單值函數(shù),函數(shù)的自變量確定時(shí),應(yīng)變量的值惟一確定。反映了關(guān)系模式中屬性間的決定關(guān)系,體現(xiàn)了數(shù)據(jù)間的相互關(guān)系。,例7:學(xué)生

8、(學(xué)號(hào),姓名,性別,年齡,班級(jí)號(hào)) 存在以下的函數(shù)依賴: 學(xué)號(hào)姓名 學(xué)號(hào)性別 學(xué)號(hào)年齡 學(xué)號(hào)班級(jí)號(hào),說(shuō)明: 函數(shù)依賴不是指關(guān)系模式R的某個(gè)或某些關(guān)系實(shí)例滿足的約束條件,而是指R的所有關(guān)系實(shí)例均要滿足的約束條件。 函數(shù)依賴是RDB用以表示數(shù)據(jù)語(yǔ)義的機(jī)制。人們只能根據(jù)數(shù)據(jù)的語(yǔ)義來(lái)確定函數(shù)依賴。 例:“姓名年齡”這個(gè)函數(shù)依賴只有在沒(méi)有相同姓名人的條件下成立。若有相同姓名的人,則“年齡”就不再函數(shù)依賴于“姓名”了。,2. 平凡函數(shù)依賴與非平凡函數(shù)依賴,在關(guān)系模式R(U)中,對(duì)于U的子集X和Y,如果XY,但Y X,則稱XY是非平凡函數(shù)依賴。若Y X,則稱XY為平凡函數(shù)依賴。 例如:學(xué)號(hào)姓名 (學(xué)號(hào),姓名

9、)姓名 對(duì)于任一關(guān)系模式,平凡函數(shù)依賴都是必然成立的,它不反映新的語(yǔ)義,因此若不特別聲明,我們總是討論非平凡函數(shù)依賴。,3. 完全函數(shù)依賴與部分函數(shù)依賴,完全函數(shù)依賴: 在關(guān)系模式R(U)中,如果XY,并且對(duì)于X的任何一個(gè)真子集X,都有X Y,則稱Y完全函數(shù)依賴于X,記作X Y。 部分函數(shù)依賴: 若XY,但Y不完全函數(shù)依賴于X,則稱Y部分函數(shù)依賴于X,記作X Y。, ,例8: 學(xué)生(學(xué)號(hào),姓名,所在系,系主任姓名,課程號(hào),成績(jī)) 學(xué)生關(guān)系模式存在的部分函數(shù)依賴: (學(xué)號(hào),課程號(hào)) 姓名 (學(xué)號(hào),課程號(hào)) 所在系 (學(xué)號(hào),課程號(hào)) 系主任姓名 思考: 此關(guān)系模式中是否存在完全函數(shù)依賴?,4. 傳

10、遞函數(shù)依賴,在關(guān)系模式R(U)中,如果XY,YZ,且Y X,Z Y,Y X,則稱Z傳遞函數(shù)依賴于X。 例9:學(xué)生(學(xué)號(hào),姓名,所在系,系主任姓名,課程名,成績(jī)),存在如下的函數(shù)依賴: 學(xué)號(hào)所在系 所在系系主任姓名 學(xué)號(hào)系主任姓名,傳遞,4.3 范式與規(guī)范化,1. 第一范式(1NF) 2. 第二范式(2NF) 3. 第三范式(3NF) 4. BC范式,1. 第一范式(1NF),若一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則該關(guān)系屬于1NF 。 在任何一個(gè)RDBS中,1NF是對(duì)關(guān)系模式的一個(gè)必須的要求,不滿足1NF的DB模式不能稱為RDB。 滿足1NF的關(guān)系模式并不一定是好的關(guān)系模式。,例如

11、:學(xué)生(學(xué)號(hào),姓名,所在系,系主任姓名,課程名,成績(jī)) 它顯然滿足1NF,但本身存在插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問(wèn)題,所以它不是一個(gè)好的關(guān)系模式。 例如:教師(教師號(hào),姓名,性別,年齡,家庭地址(城市、街道、門牌號(hào))則非1NF,可將它改為 教師(教師號(hào),姓名,性別,年齡, 城市,街道,門牌號(hào)) 則為1NF 了,2. 第二范式(2NF),若關(guān)系模式R屬于1NF,且每個(gè)非主屬性都完全函數(shù)依賴于主關(guān)鍵字,則R屬于2NF 。 2NF不允許關(guān)系模式中的非主屬性部分函數(shù)依賴于主關(guān)鍵字。, ,例10:學(xué)生(學(xué)號(hào),姓名,所在系,系主任姓名,課程名,成績(jī)) 學(xué)生關(guān)系模式存在部分依賴: (學(xué)號(hào),課程名)

12、姓名 (學(xué)號(hào),課程名)所在系 (學(xué)號(hào),課程名)系主任姓名 不滿足“每個(gè)非主屬性都完全函數(shù)依賴于主關(guān)鍵字”的條件。故不屬于2NF。 對(duì)學(xué)生關(guān)系模式進(jìn)行分解,使其滿足2NF的條件,即要消除非主屬性對(duì)主關(guān)鍵字的部分依賴。,關(guān)系分解 把R的屬性分開(kāi),以構(gòu)成兩個(gè)新的關(guān)系模式; 通過(guò)對(duì)R的元組進(jìn)行投影而產(chǎn)生兩個(gè)新的關(guān)系。 學(xué)生關(guān)系模式分解成: 學(xué)生-系(學(xué)號(hào),姓名,所在系,系主任姓名) 考試(學(xué)號(hào),課程名,成績(jī)) 學(xué)生-系、考試屬于2NF。,學(xué)生關(guān)系模式:學(xué)生-系(學(xué)號(hào),姓名,所在系,系主任姓名) 存在: 學(xué)號(hào)所在系 所在系系主任姓名 學(xué)號(hào)系主任姓名 仍有數(shù)據(jù)冗余(從學(xué)生-系關(guān)系模式的實(shí)例可以看出,當(dāng)一個(gè)

13、系有很多學(xué)生時(shí),“系主任姓名”會(huì)大量重復(fù)出現(xiàn))和更新異常。所以應(yīng)進(jìn)一步對(duì)其進(jìn)行規(guī)范化。,傳遞,習(xí)題9: 關(guān)系模式R(ABCD),F(xiàn)是R上成立的函數(shù)依賴集,F(xiàn)=AB-CD,A-D (1) 試說(shuō)明R不是2NF的理由 (2) 試把R分解成2NF模式集. R1(ABC) R2(AD),3. 第三范式(3NF),若關(guān)系模式R屬于1NF,且每個(gè)非主屬性都不傳遞依賴于主關(guān)鍵字,則R屬于3NF。 將學(xué)生-系(學(xué)號(hào),姓名,所在系,系主任姓名) 關(guān)系模式分解為: 學(xué)生(學(xué)號(hào),姓名,所在系) 系(所在系,系主任姓名) 關(guān)系模式學(xué)生與系均已滿足3NF。, ,3NF是一個(gè)可用的關(guān)系模式應(yīng)滿足的最低范式。 一個(gè)關(guān)系模式如

14、果不滿足3NF,實(shí)際上是不能使用的。 把關(guān)系模式分解到3NF,可在相當(dāng)程度上減輕原關(guān)系中的異常和信息冗余,但也不能保證完全消除關(guān)系模式中的各種異常和信息冗余。 要想使DB性能得到進(jìn)一步的改善,就要把關(guān)系模式進(jìn)一步規(guī)范化。,習(xí)題10: 設(shè)關(guān)系模式R(ABC),F是R上成立的函數(shù)依賴集,F=C-B,B-A (1) 試說(shuō)明R不是3NF的理由 (2) 試把R分解成3NF. R1(CB) R2(BA),4. BC范式,若關(guān)系模式R屬于第一范式,且每個(gè)非平凡依賴的左邊必須包含主關(guān)鍵字;或稱每個(gè)決定因素必須包含主關(guān)鍵字。則稱R屬于BC范式。 分析如下關(guān)系是否屬于BC 范式: 學(xué)生(學(xué)號(hào),姓名,所在系); 系

15、(所在系,系主任姓名) 成績(jī)(學(xué)號(hào),課程名,成績(jī));,思考習(xí)題:,設(shè)有關(guān)系模式:R(職工名,項(xiàng)目名,工資,部門號(hào),部門經(jīng)理) 如果規(guī)定每個(gè)職工可參加多個(gè)項(xiàng)目,每個(gè)項(xiàng)目領(lǐng)一份工資;每個(gè)項(xiàng)目只屬于一個(gè)部門管理;每個(gè)部門只有一個(gè)經(jīng)理。要求: (1)試寫(xiě)出關(guān)系模式R的基本函數(shù)依賴和主關(guān)鍵字; (2)說(shuō)明R不是2NF模式的理由,并把R分解成2NF模式集; (3)進(jìn)而把R分解成3NF模式集,并說(shuō)明理由。,(1) (職工名,項(xiàng)目名) 工資 項(xiàng)目名 部門名 部門名 部門經(jīng)理 (2) R1(職工名,項(xiàng)目名,工資) R2(項(xiàng)目名,部門名,部門經(jīng)理) (3) R11(職工名,項(xiàng)目名,工資) R21(項(xiàng)目名,部門名)

16、 R31(部門名,部門經(jīng)理),4.4 關(guān)系分解原則,1. 無(wú)損連接 2. 保持依賴, ,對(duì)關(guān)系模式進(jìn)行分解的目的: 使關(guān)系模式更加規(guī)范化,從而減少以至消除數(shù)據(jù)冗余和更新異常。 要使關(guān)系模式的分解有意義,模式分解需要滿足一些約束條件是分解不能破壞原來(lái)的語(yǔ)義,即模式分解要符合無(wú)損連接和保持函數(shù)依賴的原則。,1. 無(wú)損連接,如果對(duì)新的關(guān)系進(jìn)行自然連接得到的元組的集合與原關(guān)系完全一致,則稱為無(wú)損連接。 無(wú)損連接保證分解前后關(guān)系模式的信息不能丟失和增加,保持原有的信息不變。 反映了模式分解的數(shù)據(jù)等價(jià)原則。, ,例11:工人(工號(hào),工種,定額) 工人關(guān)系中存在的函數(shù)依賴如下: 工號(hào)工種 工種定額 工號(hào)定額

17、(傳遞函數(shù)依賴) 分解方案如下:,2. 保持依賴,分解前所有的函數(shù)依賴要由分解后的所有關(guān)系模式中的函數(shù)依賴反映。 分解后的關(guān)系不能破壞原來(lái)的函數(shù)依賴(不能破壞原來(lái)的語(yǔ)義),即保持分解前后原有的函數(shù)依賴依然成立。 保持依賴反映了模式分解的依賴等價(jià)原則。 依賴等價(jià)保證分解后的模式與原有的模式在數(shù)據(jù)語(yǔ)義上的一致性。, ,例12:成績(jī)(學(xué)號(hào),課程名,教師姓名,成績(jī)),規(guī)定一個(gè)教師教授一門課程。 函數(shù)依賴集: (學(xué)號(hào),課程名)教師姓名,成績(jī) (學(xué)號(hào),教師姓名)課程名,成績(jī) 教師姓名課程名 分解為:學(xué)課教(學(xué)號(hào),課程名,成績(jī))、學(xué)教(學(xué)號(hào),教師姓名) 丟失函數(shù)依賴:教師姓名課程名,不能體現(xiàn)一個(gè)教師只開(kāi)一門課的語(yǔ)義。,進(jìn)行模式分解時(shí),除考慮數(shù)據(jù)等價(jià)和依賴等價(jià)以外,還要考慮效率。 當(dāng)對(duì)DB的操作主要是查詢時(shí),為提高查詢效率,可保留適當(dāng)?shù)臄?shù)據(jù)冗余,讓關(guān)系模式中的屬性多些,而不把模式分解得太小,否則為了查詢一些數(shù)據(jù),常常要做大量的連接運(yùn)算,把多個(gè)關(guān)系模式連在一起才能從中找到相關(guān)的數(shù)據(jù)。,在設(shè)計(jì)DB時(shí),為減少冗余

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論