關(guān)系數(shù)據(jù)理論_第1頁(yè)
關(guān)系數(shù)據(jù)理論_第2頁(yè)
關(guān)系數(shù)據(jù)理論_第3頁(yè)
關(guān)系數(shù)據(jù)理論_第4頁(yè)
關(guān)系數(shù)據(jù)理論_第5頁(yè)
已閱讀5頁(yè),還剩78頁(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)介

關(guān)系數(shù)據(jù)理論第一頁(yè),共八十三頁(yè),2022年,8月28日本章概要前面已經(jīng)講述了關(guān)系數(shù)據(jù)庫(kù)、關(guān)系模型的基本概念以及關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。如何使用關(guān)系模型設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù),也就是面對(duì)一個(gè)現(xiàn)實(shí)問(wèn)題,如何選擇一個(gè)比較好的關(guān)系模式的集合,每個(gè)關(guān)系又應(yīng)該由哪些屬性組成。這屬于數(shù)據(jù)庫(kù)設(shè)計(jì)的問(wèn)題,確切地講是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的問(wèn)題,有關(guān)數(shù)據(jù)庫(kù)設(shè)計(jì)的全過(guò)程將在第7章詳細(xì)討論。本章講述關(guān)系數(shù)據(jù)庫(kù)規(guī)范化理論,這是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的理論依據(jù)。要求了解規(guī)范化理論的研究動(dòng)機(jī)及其在數(shù)據(jù)庫(kù)設(shè)計(jì)中的作用,掌握函數(shù)依賴的有關(guān)概念,第一范式、第二范式、第三范式和BC范式的定義,重點(diǎn)掌握并能夠靈活運(yùn)用關(guān)系模式規(guī)范化的方法和關(guān)系模式分解的方法,這也是本章的難點(diǎn)。

第二頁(yè),共八十三頁(yè),2022年,8月28日6.1規(guī)范化問(wèn)題的提出6.1.1規(guī)范化理論的主要內(nèi)容關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化理論最早是由關(guān)系數(shù)據(jù)庫(kù)的創(chuàng)始人提出的,后經(jīng)許多專家學(xué)者對(duì)關(guān)系數(shù)據(jù)庫(kù)理論作了深入的研究和發(fā)展,形成了一整套有關(guān)關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的理論。第三頁(yè),共八十三頁(yè),2022年,8月28日6.1規(guī)范化問(wèn)題的提出如何設(shè)計(jì)一個(gè)適合的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),關(guān)鍵是關(guān)系數(shù)據(jù)庫(kù)模式的設(shè)計(jì),一個(gè)好的關(guān)系數(shù)據(jù)庫(kù)模式應(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ù)庫(kù)的規(guī)范化理論的指導(dǎo)下逐步完成。

關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化理論主要包括三個(gè)方面的內(nèi)容:函數(shù)信賴范式(NormalForm)模式設(shè)計(jì)其中,函數(shù)信賴起著核心的作用,是模式分解和模式設(shè)計(jì)的基礎(chǔ),范式是模式分解的標(biāo)準(zhǔn)。第四頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)為什么要遵循一定的規(guī)范化理論?什么是好的關(guān)系模式?某些不好的關(guān)系模式可能導(dǎo)致哪些問(wèn)題?下面通過(guò)例子進(jìn)行分析:第五頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題例如,要求設(shè)計(jì)教學(xué)管理數(shù)據(jù)庫(kù),其關(guān)系模式SCD如下:

SCD(SNO,SNAME,AGE,DEPT,MNAME,CNO,GRADE)

其中,SNO表示學(xué)生學(xué)號(hào),SNAME表示學(xué)生姓名,AGE表示學(xué)生年齡,DEPT表示學(xué)生所在的系別,MNAME表示系主任姓名,CNO表示課程號(hào),GRADE表示成績(jī)。

根據(jù)實(shí)際情況,這些數(shù)據(jù)有如下語(yǔ)義規(guī)定:1.一個(gè)系有若干個(gè)學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;2.一個(gè)系只有一名系主任,但一個(gè)系主任可以同時(shí)兼幾個(gè)系的系主任;3.一個(gè)學(xué)生可以選修多門(mén)功課,每門(mén)課程可有若干學(xué)生選修;4.每個(gè)學(xué)生學(xué)習(xí)課程有一個(gè)成績(jī)。在此關(guān)系模式中填入一部分具體的數(shù)據(jù),則可得到SCD關(guān)系模式的實(shí)例,即一個(gè)教學(xué)管理數(shù)據(jù)庫(kù),如圖6.1所示。第六頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題圖6.1關(guān)系SCDSNOSNAMEAGEDEPTMNAMECNOGRADES1趙亦17計(jì)算機(jī)劉偉C190S1趙亦17計(jì)算機(jī)劉偉C285S2錢(qián)爾18信息王平C557S2錢(qián)爾18信息王平C680S2錢(qián)爾18信息王平C7

70S2錢(qián)爾18信息王平C170S3孫珊20信息王平C10S3孫珊20信息王平C270S3孫珊20信息王平C485S4李思男自動(dòng)化劉偉C193第七頁(yè),共八十三頁(yè),2022年,8月28日根據(jù)上述的語(yǔ)義規(guī)定,并分析以上關(guān)系中的數(shù)據(jù),我們可以看出:(SNO,CNO)屬性的組合能唯一標(biāo)識(shí)一個(gè)元組,所以(SNO,CNO)是該關(guān)系模式的主關(guān)系鍵。但在進(jìn)行數(shù)據(jù)庫(kù)的操作時(shí),會(huì)出現(xiàn)以下幾方面的問(wèn)題。1.數(shù)據(jù)冗余。每個(gè)系名和系主任的名字存儲(chǔ)的次數(shù)等于該系的學(xué)生人數(shù)乘以每個(gè)學(xué)生選修的課程門(mén)數(shù),同時(shí)學(xué)生的姓名、年齡也都要重復(fù)存儲(chǔ)多次,數(shù)據(jù)的冗余度很大,浪費(fèi)了存儲(chǔ)空間。2.插入異常。如果某個(gè)新系沒(méi)有招生,尚無(wú)學(xué)生時(shí),則系名和系主任的信息無(wú)法插入到數(shù)據(jù)庫(kù)中。因?yàn)樵谶@個(gè)關(guān)系模式中,(SNO,CNO)是主關(guān)系鍵。根據(jù)關(guān)系的實(shí)體完整性約束,主關(guān)系鍵的值不能為空,而這時(shí)沒(méi)有學(xué)生,SNO和CNO均無(wú)值,因此不能進(jìn)行插入操作。另外,當(dāng)某個(gè)學(xué)生尚未選課,即CNO未知,實(shí)體完整性約束還規(guī)定,主關(guān)系鍵的值不能部分為空,同樣不能進(jìn)行插入操作。第八頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題3.刪除異常某系學(xué)生全部畢業(yè)而沒(méi)有招生時(shí),刪除全部學(xué)生的記錄則系名、系主任也隨之刪除,而這個(gè)系依然存在,在數(shù)據(jù)庫(kù)中卻無(wú)法找到該系的信息。另外,如果某個(gè)學(xué)生不再選修C1課程,本應(yīng)該只刪去C1,但C1是主關(guān)系鍵的一部分,為保證實(shí)體完整性,必須將整個(gè)元組一起刪掉,這樣,有關(guān)該學(xué)生的其它信息也隨之丟失。4.更新異常如果學(xué)生改名,則該學(xué)生的所有記錄都要逐一修改SNAME;又如某系更換系主任,則屬于該系的學(xué)生記錄都要修改MNAME的內(nèi)容,稍有不慎,就有可能漏改某些記錄,這就會(huì)造成數(shù)據(jù)的不一致性,破壞了數(shù)據(jù)的完整性。第九頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題由于存在以上問(wèn)題,我們說(shuō),SCD是一個(gè)不好的關(guān)系模式。產(chǎn)生上述問(wèn)題的原因,直觀地說(shuō),是因?yàn)殛P(guān)系中“包羅萬(wàn)象”,內(nèi)容太雜了。那么,怎樣才能得到一個(gè)好的關(guān)系模式呢?我們把關(guān)系模式SCD分解為下面三個(gè)結(jié)構(gòu)簡(jiǎn)單的關(guān)系模式,如圖6.2所示。學(xué)生關(guān)系S(SNO,SNAME,AGE,DEPT)選課關(guān)系SC(SNO,CNO,GRADE)系關(guān)系D(DEPT,MNAME)第十頁(yè),共八十三頁(yè),2022年,8月28日SSCSNOSNAMEAGEDEPT

SNOCNOGRADES1趙亦17計(jì)算機(jī)

S1C190S2錢(qián)爾18信息

S1C285S3孫珊20信息

S2C557S4李思21自動(dòng)化

S2C680

S2C7

70D

S2C170DEPTMNAME

S3C10計(jì)算機(jī)劉偉

S3C270信息王平

S3C485自動(dòng)化劉偉

S4C193圖6.2分解后的關(guān)系模式

第十一頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題在以上三個(gè)關(guān)系模式中,實(shí)現(xiàn)了信息的某種程度的分離,S中存儲(chǔ)學(xué)生基本信息,與所選課程及系主任無(wú)關(guān);D中存儲(chǔ)系的有關(guān)信息,與學(xué)生無(wú)關(guān);SC中存儲(chǔ)學(xué)生選課的信息,而與學(xué)生的詳細(xì)信息及系的有關(guān)信息無(wú)關(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)系無(wú)關(guān),這就避免了插入異常。當(dāng)一個(gè)系的學(xué)生全部畢業(yè)時(shí),只需在S中刪除該系的全部學(xué)生記錄,而關(guān)系D中有關(guān)該系的信息仍然保留,從而不會(huì)引起刪除異常。同時(shí),由于數(shù)據(jù)冗余度的降低,數(shù)據(jù)沒(méi)有重復(fù)存儲(chǔ),也不會(huì)引起更新異常。

第十二頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題

經(jīng)過(guò)上述分析,我們說(shuō)分解后的關(guān)系模式是一個(gè)好的關(guān)系數(shù)據(jù)庫(kù)模式。從而得出結(jié)論,一個(gè)好的關(guān)系模式應(yīng)該具備以下四個(gè)條件:1.盡可能少的數(shù)據(jù)冗余。2.沒(méi)有插入異常。3.沒(méi)有刪除異常。4.沒(méi)有更新異常。

第十三頁(yè),共八十三頁(yè),2022年,8月28日6.1.2關(guān)系模式的存儲(chǔ)異常問(wèn)題但要注意,一個(gè)好的關(guān)系模式并不是在任何情況下都是最優(yōu)的,比如查詢某個(gè)學(xué)生選修課程名及所在系的系主任時(shí),要通過(guò)連接,而連接所需要的系統(tǒng)開(kāi)銷(xiāo)非常大,因此要以實(shí)際設(shè)計(jì)的目標(biāo)出發(fā)進(jìn)行設(shè)計(jì)如何按照一定的規(guī)范設(shè)計(jì)關(guān)系模式,將結(jié)構(gòu)復(fù)雜的關(guān)系分解成結(jié)構(gòu)簡(jiǎn)單的關(guān)系,從而把不好的關(guān)系數(shù)據(jù)庫(kù)模式轉(zhuǎn)變?yōu)楹玫年P(guān)系數(shù)據(jù)庫(kù)模式,這就是關(guān)系的規(guī)范化。規(guī)范化又可以根據(jù)不同的要求而分成若干級(jí)別。我們要設(shè)計(jì)的關(guān)系模式中的各屬性是相互依賴、相互制約的,這樣才構(gòu)成了一個(gè)結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)恼w。因此在設(shè)計(jì)關(guān)模式時(shí),必須從語(yǔ)義上分析這些依賴關(guān)系。數(shù)據(jù)庫(kù)模式的好壞和關(guān)系中各屬性間的依賴關(guān)系有關(guān),因此,我們先討論屬性間的依賴關(guān)系,然后再討論關(guān)系規(guī)范化理論。

第十四頁(yè),共八十三頁(yè),2022年,8月28日6.2函數(shù)依賴函數(shù)依賴的定義及性質(zhì)關(guān)系模式中的各屬性之間相互依賴、相互制約的聯(lián)系稱為數(shù)據(jù)依賴。數(shù)據(jù)依賴一般分為函數(shù)依賴、多值依賴和連接依賴。其中,函數(shù)依賴是最重要的數(shù)據(jù)依賴。函數(shù)依賴(FunctionalDependency)是關(guān)系模式中屬性之間的一種邏輯依賴關(guān)系。例如在上一節(jié)介紹的關(guān)系模式SCD中,SNO與SNAME、AGE、DEPT之間都有一種依賴關(guān)系。由于一個(gè)SNO只對(duì)應(yīng)一個(gè)學(xué)生,而一個(gè)學(xué)生只能屬于一個(gè)系,所以當(dāng)SNO的值確定之后,SNAME,AGE,DEPT的值也隨之被唯一的確定了。這類(lèi)似于變量之間的單值函數(shù)關(guān)系。設(shè)單值函數(shù)Y=F(X),自變量X的值可以決定一個(gè)唯一的函數(shù)值Y。在這里,我們說(shuō)SNO函數(shù)決定(SNAME,AGE,DEPT),或者說(shuō)(SNAME,AGE,DEPT)函數(shù)依賴于SNO。第十五頁(yè),共八十三頁(yè),2022年,8月28日6.2函數(shù)依賴函數(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í),記作:XY。當(dāng)X→Y且Y→X時(shí),則記作:XY。對(duì)于關(guān)系模式SCDU={SNO,SNAME,AGE,DEPT,MNAME,CNO,GRADE}F={SNO→SNAME,SNO→AGE,SNO→DEPT}一個(gè)SNO有多個(gè)GRADE的值與其對(duì)應(yīng),因此GRADE不能唯一地確定,即GRADE不能函數(shù)依賴于SNO,所以有:SNOGRADE。但是GRADE可以被(SNO,CNO)唯一地確定。所以可表示為:(SNO,CNO)→GRADE。

第十六頁(yè),共八十三頁(yè),2022年,8月28日6.2函數(shù)依賴有關(guān)函數(shù)依賴的幾點(diǎn)說(shuō)明:1.平凡的函數(shù)依賴與非平凡的函數(shù)依賴。當(dāng)屬性集Y是屬性集X的子集時(shí),則必然存在著函數(shù)依賴X→Y,這種類(lèi)型的函數(shù)依賴稱為平凡的函數(shù)依賴。如果Y不是X的子集,則稱X→Y為非平凡的函數(shù)依賴。若不特別聲明,我們討論的都是非平凡的函數(shù)依賴。2.函數(shù)依賴是語(yǔ)義范疇的概念。我們只能根據(jù)語(yǔ)義來(lái)確定一個(gè)函數(shù)依賴,而不能按照其形式化定義來(lái)證明一個(gè)函數(shù)依賴是否成立。 例如:對(duì)于關(guān)系模式S,當(dāng)學(xué)生不存在重名的情況下,可以得到:SNAME→AGE,SNAME→DEPT,這種函數(shù)依賴關(guān)系,必須是在沒(méi)有重名的學(xué)生條件下才成立的,否則就不存在函數(shù)依賴了。所以函數(shù)依賴反映了一種語(yǔ)義完整性約束。

第十七頁(yè),共八十三頁(yè),2022年,8月28日6.2函數(shù)依賴3.函數(shù)依賴與屬性之間的聯(lián)系類(lèi)型有關(guān)。(1)在一個(gè)關(guān)系模式中,如果屬性X與Y有1:1聯(lián)系時(shí),則存在函數(shù)依賴X→Y,Y→X,即XY。

例如,當(dāng)學(xué)生無(wú)重名時(shí),SNOSNAME。(2)如果屬性Y與X有1:m的聯(lián)系時(shí),則只存在函數(shù)依賴X→Y。

例如,AGE,DEPT與SNO之間均為1:m聯(lián)系,所以有SNO→AGE,

SNO→DEPT。(3)如果屬性X與Y有m:n的聯(lián)系時(shí),則X與Y之間不存在任何函數(shù)依賴關(guān)系。

例如,一個(gè)學(xué)生可以選修多門(mén)課程,一門(mén)課程又可以為多個(gè)學(xué)生選修,所以SNO與CNO之間不存在函數(shù)依賴關(guān)系。由于函數(shù)依賴與屬性之間的聯(lián)系類(lèi)型有關(guān),所以在確定屬性間的函數(shù)依賴關(guān)系時(shí),可以從分析屬性間的聯(lián)系類(lèi)型入手,便可確定屬性間的函數(shù)依賴。

第十八頁(yè),共八十三頁(yè),2022年,8月28日6.2函數(shù)依賴4.函數(shù)依賴關(guān)系的存在與時(shí)間無(wú)關(guān)。因?yàn)楹瘮?shù)依賴是指關(guān)系中的所有元組應(yīng)該滿足的約束條件,而不是指關(guān)系中某個(gè)或某些元組所滿足的約束條件。當(dāng)關(guān)系中的元組增加、刪除或更新后都不能破壞這種函數(shù)依賴。因此,必須根據(jù)語(yǔ)義來(lái)確定屬性之間的函數(shù)依賴,而不能單憑某一時(shí)刻關(guān)系中的實(shí)際數(shù)據(jù)值來(lái)判斷。例如,對(duì)于關(guān)系模式S,假設(shè)沒(méi)有給出無(wú)重名的學(xué)生這種語(yǔ)義規(guī)定,則即使當(dāng)前關(guān)系中沒(méi)有重名的記錄,也只能存在函數(shù)依賴SNO→SNAME,而不能存在函數(shù)依賴SNAME→SNO,因?yàn)槿绻略黾右粋€(gè)重名的學(xué)生,函數(shù)依賴SNAME→SNO必然不成立。所以函數(shù)依賴關(guān)系的存在與時(shí)間無(wú)關(guān),而只與數(shù)據(jù)之間的語(yǔ)義規(guī)定有關(guān)。

第十九頁(yè),共八十三頁(yè),2022年,8月28日6.2.1.2函數(shù)依賴的基本性質(zhì)1.投影性。根據(jù)平凡的函數(shù)依賴的定義可知,一組屬性函數(shù)決定它的所有子集。例如,在關(guān)系SCD中,(SNO,CNO)→SNO和(SNO,CNO)→CNO。2.?dāng)U張性。若X→Y且W→Z,則(X,W)→(Y,Z)。例如,SNO→(SNAME,AGE),DEPT→MNAME,則有(SNO,DEPT)→(SNAME,AGE,MNAME)。3.合并性。若X→Y且X→Z則必有X→(Y,Z)。例如,在關(guān)系SCD中,SNO→(SNAME,AGE),SNO→(DEPT,MNAME),則有SNO→(SNAME,AGE,DEPT,MNAME)。4.分解性。若X→(Y,Z),則X→Y且X→Z。很顯然,分解性為合并性的逆過(guò)程。由合并性和分解性,很容易得到以下事實(shí):X→A1,A2,…,An成立的充分必要條件是X→Ai(i=1,2,…,n)成立。

第二十頁(yè),共八十三頁(yè),2022年,8月28日6.2.2完全函數(shù)依賴與部分函數(shù)依賴定義6.2

設(shè)關(guān)系模式R(U),U是屬性全集,X和Y是U的子集,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X′,都有X′Y,則稱Y對(duì)X完全函數(shù)依賴(FullFunctionalDependency),記作XY。如果對(duì)X的某個(gè)真子集X′,有X′→Y,則稱Y對(duì)X部分函數(shù)依賴(PartialFunctionalDependency),記作XY。例如,在關(guān)系模式SCD中,因?yàn)镾NOGRADE,且CNOGRADE,所以有:(SNO,CNO)GRADE。 而SNO→AGE,所以(SNO,CNO)AGE。由定義6.2可知:只有當(dāng)決定因素是組合屬性時(shí),討論部分函數(shù)依賴才有意。當(dāng)決定因素是單屬性時(shí),只能是完全函數(shù)依賴。例如,在關(guān)系模式S(SNO,SNAME,AGE,DEPT),決定因素為單屬性SNO,有SNO→(SNAME,AGE,DEPT),不存在部分函數(shù)依賴。

第二十一頁(yè),共八十三頁(yè),2022年,8月28日6.2.3傳遞函數(shù)依賴定義6.3

設(shè)有關(guān)系模式R(U),U是屬性全集,X,Y,Z是U的子集,若X→Y,但YX,而Y→Z(YX,ZY),則稱Z對(duì)X傳遞函數(shù)依賴(TransitiveFunctionalDependency),記作:X

Z。如果Y→X,則XY,這時(shí)稱Z對(duì)X直接函數(shù)依賴,而不是傳遞函數(shù)依賴。例如,在關(guān)系模式SCD中,SNO→DEPTN,但DEPTNSNO,而DEPTN→MNAME,則有SNOMNAME。當(dāng)表中有IDNO列的情況下,有SNO→IDNO,IDNO→SNO,SNOIDNO,IDNO→DEPTN,這時(shí)DEPTN對(duì)SNO是直接函數(shù)依賴,而不是傳遞函數(shù)依賴。

綜上所述,函數(shù)依賴分為完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴三類(lèi),它們是規(guī)范化理論的依據(jù)和規(guī)范化程度的準(zhǔn)則,下面我們將以介紹的這些概念為基礎(chǔ),進(jìn)行數(shù)據(jù)庫(kù)的規(guī)范設(shè)計(jì)。第二十二頁(yè),共八十三頁(yè),2022年,8月28日6.3范式

規(guī)范化的基本思想是消除關(guān)系模式中的數(shù)據(jù)冗余,消除數(shù)據(jù)依賴中的不合適的部分,解決數(shù)據(jù)插入、刪除時(shí)發(fā)生異?,F(xiàn)象。這就要求關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)出來(lái)的關(guān)系模式要滿足一定的條件。我們把關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化過(guò)程中為不同程度的規(guī)范化要求設(shè)立的不同標(biāo)準(zhǔn)稱為范式(NormalForm)。

由于規(guī)范化的程度不同,就產(chǎn)生了不同的范式。滿足最基本規(guī)范化要求的關(guān)系模式叫第一范式,在第一范式中進(jìn)一步滿足一些要求為第二范式,以此類(lèi)推就產(chǎn)生了第三范式等概念。每種范式都規(guī)定了一些限制約束條件。第二十三頁(yè),共八十三頁(yè),2022年,8月28日6.3范式范式的概念最早由提出。從1971年起,Codd相繼提出了關(guān)系的三級(jí)規(guī)范化形式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。1974年,Codd和Boyce共同提出了一個(gè)新的范式的概念,即Boyce-Codd范式,簡(jiǎn)稱BC范式。1976年Fagin提出了第四范式,后來(lái)又有人定義了第五范式。至此在關(guān)系數(shù)據(jù)庫(kù)規(guī)范中建立了一個(gè)范式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一級(jí)比一級(jí)有更嚴(yán)格的要求。各個(gè)范式之間的聯(lián)系可以表示為:5NF4NFBCNF3NF2NF1NF如圖6.3所示。

第二十四頁(yè),共八十三頁(yè),2022年,8月28日6.3范式圖6.3各種范式之間的關(guān)系4NF5NFBCNF3NF2NF1NF規(guī)范與非規(guī)范關(guān)系第二十五頁(yè),共八十三頁(yè),2022年,8月28日6.3.1第一范式第一范式(FirstNormalForm)是最基本的規(guī)范形式,即關(guān)系中每個(gè)屬性都是不可再分的簡(jiǎn)單項(xiàng)。定義6.4

如果關(guān)系模式R,其所有的屬性均為簡(jiǎn)單屬性,即每個(gè)屬性都是不可再分的,則稱R屬于第一范式,簡(jiǎn)稱1NF,記作R1NF。在第2章討論關(guān)系的性質(zhì)時(shí),我們把滿足這個(gè)條件的關(guān)系稱為規(guī)范化關(guān)系。在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中只討論規(guī)范化的關(guān)系,凡是非規(guī)范化的關(guān)系模式必須化成規(guī)范化的關(guān)系。每個(gè)規(guī)范化的關(guān)系都屬于1NF,這也是它之所以稱為“第一”的原因。第二十六頁(yè),共八十三頁(yè),2022年,8月28日6.3.1第一范式

不可“表中有表”。滿足此條件的關(guān)系稱為規(guī)范化關(guān)系,否則稱為非規(guī)范化關(guān)系。例如,在下表中,籍貫含有省、市/縣兩項(xiàng),出現(xiàn)了“表中有表”的現(xiàn)象,則為非規(guī)范化關(guān)系,而把籍貫分成省、市/縣兩列,則為規(guī)范化關(guān)系。例姓名籍貫

姓名省市/縣省市/縣

張強(qiáng)吉林長(zhǎng)春

張強(qiáng)吉林長(zhǎng)春王麗山西大同

王麗山西大同第二十七頁(yè),共八十三頁(yè),2022年,8月28日然而,一個(gè)關(guān)系模式僅僅屬于第一范式是不適用的。在6.1節(jié)中給出的關(guān)系模式SCD屬于第一范式,但其具有大量的數(shù)據(jù)冗余,具有插入異常、刪除異常、更新異常等弊端。為什么會(huì)存在這種問(wèn)題呢?讓我們分析一下SCD中的函數(shù)依賴關(guān)系,它的關(guān)系鍵是(SNO,CNO)的屬性組合,所以有:(SNO,CNO)GRADESNO→SNAME,(SNO,CNO)SNAMESNO→AGE,(SNO,CNO)AGESNO→DEPT,(SNO,CNO)DEPTSNOMNAME,(SNO,CNO)MNAME第二十八頁(yè),共八十三頁(yè),2022年,8月28日我們可以用函數(shù)信賴圖表示以上函數(shù)依賴關(guān)系,如圖6.4所示。

由此可見(jiàn),在SCD中,既存在完全函數(shù)依賴,又存在部分函數(shù)依賴和傳遞函數(shù)依賴。這種情況往往在數(shù)據(jù)庫(kù)中是不允許的,也正是由于關(guān)系中存在著復(fù)雜的函數(shù)依賴,才導(dǎo)致數(shù)據(jù)操作中出現(xiàn)了種弊端??朔@些弊端的方法是用投影運(yùn)算將關(guān)系分解,去掉過(guò)于復(fù)雜的函數(shù)依賴關(guān)系,向更高一級(jí)的范式進(jìn)行轉(zhuǎn)換。SNAMEMNAMEGRADE圖6.4SCD中的函數(shù)依賴關(guān)系SNOCNOPPftf第二十九頁(yè),共八十三頁(yè),2022年,8月28日關(guān)于鍵的定義關(guān)系的鍵:能唯一標(biāo)識(shí)元組且不包括多余屬性的屬性集稱為該關(guān)系的關(guān)系鍵。它具有唯一性(對(duì)于關(guān)系中任何兩個(gè)元組其關(guān)系的鍵值是不同的)和最小性(組成關(guān)系鍵的屬性集中任意一個(gè)屬性都不能從屬性集中去掉,否則將破壞唯一性。)候選鍵:當(dāng)某關(guān)系中具有多個(gè)滿足關(guān)系鍵特性的最小屬性集,那么,我們把它們都稱為該關(guān)系的候選鍵。主鍵:當(dāng)一個(gè)關(guān)系中有多個(gè)候選鍵時(shí)從候選鍵中選擇一個(gè)作為主鍵。一個(gè)關(guān)系只能有一個(gè)主鍵。主屬性:包含在任何一個(gè)候選鍵中的屬性叫主屬性。非主屬性:

不包含在任何一個(gè)候選鍵中的屬性叫非主屬性。第三十頁(yè),共八十三頁(yè),2022年,8月28日6.3.2第二范式6.3.2.1第二范式的定義定義6.5

如果關(guān)系模式R1NF,且每個(gè)非主屬性都完全函數(shù)依賴于R的每個(gè)關(guān)系鍵,則稱R屬于第二范式(SecondNormalForm),簡(jiǎn)稱2NF,記作R2NF。在關(guān)系模式SCD中,SNO,CNO為主屬性,AGE,DEPT,SNAME,MNAME,GRADE均為非主屬性,經(jīng)上述分析,存在非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,所以SCD不屬于2NF。而如圖6.2所示的由SCD分解的三個(gè)關(guān)系模式S,D,SC,其中S的關(guān)系鍵為SNO,D的關(guān)系鍵為DEPT,都是單屬性,不可能存在部分函數(shù)依賴。而對(duì)于SC,(SNO,CNO)GRADE。所以SCD分解后,消除了非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,S,D,SC均屬于2NF。第三十一頁(yè),共八十三頁(yè),2022年,8月28日6.3.2第二范式全碼的概念:給出的關(guān)系模式TCS(T,C,S),一個(gè)教師可以講授多門(mén)課程,一門(mén)課程可以為多個(gè)教師講授,同樣一個(gè)學(xué)生可以選聽(tīng)多門(mén)課程,一門(mén)課程可以為多個(gè)學(xué)生選聽(tīng),TCS(T,C,S)三個(gè)屬性的組合是關(guān)系鍵,T,C,S都是主屬性,而無(wú)非主屬性,所以也就不可能存在非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,TCS2NF。經(jīng)以上分析,可以得到兩個(gè)結(jié)論:

1.從1NF關(guān)系中消除非主屬性對(duì)關(guān)系鍵的部分函數(shù)依賴,則可得到2NF關(guān)系。

2.如果R的關(guān)系鍵為單屬性,或R的全體屬性均為主屬性,則R2NF。第三十二頁(yè),共八十三頁(yè),2022年,8月28日6.3.2.22NF規(guī)范化

2NF規(guī)范化是指把1NF關(guān)系模式通過(guò)投影分解轉(zhuǎn)換成2NF關(guān)系模式的集合。分解時(shí)遵循的基本原則就是“一事一地”,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。如果多于一個(gè)實(shí)體或聯(lián)系,則進(jìn)行投影分解。下面以關(guān)系模式SCD為例,來(lái)說(shuō)明2NF規(guī)范化的過(guò)程例6.1將SCD(SNO,SN,AGE,DEPT,MN,CNO,GRADE)規(guī)范到2NF。由SNO→SNAME,SNO→AGE,SNO→DEPT,(SNO,CNO)GRADE,可以判斷,關(guān)系SCD至少描述了兩個(gè)實(shí)體,一個(gè)為學(xué)生實(shí)體,屬性有SNO、SNAME、AGE、DEPT、MNAME;另一個(gè)是學(xué)生與課程的聯(lián)系(選課),屬性有SNO、CNO和GRADE。根據(jù)分解的原則,我們可以將SCD分解成如下兩個(gè)關(guān)系,如圖6.5所示。第三十三頁(yè),共八十三頁(yè),2022年,8月28日SD(SNO,SNAME,AGE,DEPT,MNAME),描述學(xué)生實(shí)體;SC(SNO,CNO,GRADE),描述學(xué)生與課程的聯(lián)系。SD

SNOSNAMEAGEDEPTMNAMES1趙亦17計(jì)算機(jī)劉偉S2錢(qián)爾18信息王平S3孫珊20信息王平S4李思21自動(dòng)化劉偉SC

SNOCNOGRADES1C190S1C285S2C557S2C680S2C7

S2C170S3C10S3C270S3C485S4C193圖6.5關(guān)系SD和SC第三十四頁(yè),共八十三頁(yè),2022年,8月28日6.3.2.22NF規(guī)范化對(duì)于分解后的兩個(gè)關(guān)系SD和SC,主鍵分別為SNO和(SNO,CNO),非主屬性對(duì)主鍵完全函數(shù)依賴。因此,SD2NF,SC2NF,而且前面已經(jīng)討論,SCD的這種分解沒(méi)有丟失任何信息,具有無(wú)損連接性。分解后,SD和SC的函數(shù)依賴分別如圖6.6和6.7所示。SNOSNAMESNOCNOGRADEAGEDEPTMNAME圖6.6SD中的函數(shù)依賴關(guān)系圖6.7SC中的函數(shù)依賴關(guān)系

第三十五頁(yè),共八十三頁(yè),2022年,8月28日6.3.2.22NF規(guī)范化

1NF的關(guān)系模式經(jīng)過(guò)投影分解轉(zhuǎn)換成2NF后,消除了一些數(shù)據(jù)冗余。分析圖6.5中SD和SC中的數(shù)據(jù),可以看出,它們存儲(chǔ)的冗余度比關(guān)系模式SCD有了較大輻度的降低。學(xué)生的姓名、年齡不需要重復(fù)存儲(chǔ)多次。這樣便可在一定程度上避免數(shù)據(jù)更新所造成的數(shù)據(jù)不一致性的問(wèn)題。由于把學(xué)生的基本信息與選課信息分開(kāi)存儲(chǔ),則學(xué)生基本信息因沒(méi)選課而不能插入的問(wèn)題得到了解決,插入異?,F(xiàn)象得到了部分改善。同樣,如果某個(gè)學(xué)生不再選修C1課程,只在選課關(guān)系SC中刪去該該學(xué)生選修C1的記錄即可,而SD中有關(guān)該學(xué)生的其它信息不會(huì)受到任何影響,也解決了部分刪除異常問(wèn)題。因此可以說(shuō)關(guān)系模式SD和SC在性能上比SCD有了顯著提高。第三十六頁(yè),共八十三頁(yè),2022年,8月28日6.3.2.32NF的缺點(diǎn)

2NF的關(guān)系模式解決了1NF中存在的一些問(wèn)題,2NF規(guī)范化的程度比1NF前進(jìn)了一步,但2NF的關(guān)系模式在進(jìn)行數(shù)據(jù)操作時(shí),仍然存在著一些問(wèn)題:1.?dāng)?shù)據(jù)冗余。每個(gè)系名和系主任的名字存儲(chǔ)的次數(shù)等于該系的學(xué)生人數(shù)。2.插入異常。當(dāng)一個(gè)新系沒(méi)有招生時(shí),有關(guān)該系的信息無(wú)法插入。3.刪除異常。某系學(xué)生全部畢業(yè)而沒(méi)有招生時(shí),刪除全部學(xué)生的記錄也隨之刪除了該系的有關(guān)信息。4.更新異常。更換系主任時(shí),仍需改動(dòng)較多的學(xué)生記錄。之所以存在這些問(wèn)題,是由于在SCD中存在著非主屬性對(duì)主鍵的傳遞依賴。分析SCD中的函數(shù)依賴關(guān)系,SNO→SNAME,SNO→AGE,SNO→DEPT,DEPT→MNAME,SNOMNAME,非主屬性MNAME對(duì)主鍵SNO傳遞依賴。為此,對(duì)關(guān)系模式SCD還需進(jìn)一步簡(jiǎn)化,消除這種傳遞依賴,得到3NF。第三十七頁(yè),共八十三頁(yè),2022年,8月28日6.3.3第三范式6.3.3.1第三范式的定義定義6.6

如果關(guān)系模式R2NF,且每個(gè)非主屬性都不傳遞依賴于R的每個(gè)關(guān)系鍵,則稱R屬于第三范式(ThirdNormalForm),簡(jiǎn)稱3NF,記作R3NF。第三范式具有如下性質(zhì):1.如果R3NF,則R也是2NF。2.如果R2NF,則R不一定是3NF。第三十八頁(yè),共八十三頁(yè),2022年,8月28日6.3.3.23NF規(guī)范化

3NF規(guī)范化是指把2NF關(guān)系模式通過(guò)投影分解轉(zhuǎn)換成3NF關(guān)系模式的集合。和2NF的規(guī)范化時(shí)遵循的原則相同,即“一事一地”,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。下面以2NF關(guān)系模式SD為例,來(lái)說(shuō)明3NF規(guī)范化的過(guò)程。第三十九頁(yè),共八十三頁(yè),2022年,8月28日6.3.3.23NF規(guī)范化例6.2

將SD(SNO,SNAME,AGE,DEPT,MNAME)規(guī)范到3NF。分析SD的屬性組成,可以判斷,關(guān)系SD實(shí)際上描述了兩個(gè)實(shí)體:

一個(gè)為學(xué)生實(shí)體,屬性有SNO,SNAME,AGE,DEPT;

另一個(gè)是系的實(shí)體,其屬性DEPT和MNAME。根據(jù)分解的原則,我們可以將SD分解成如下兩個(gè)關(guān)系,如圖6.8所示。

S(SNO,SNAME,AGE,DEPT),描述學(xué)生實(shí)體;

D(DEPT,MNAME),描述系的實(shí)體。第四十頁(yè),共八十三頁(yè),2022年,8月28日6.3.3.23NF規(guī)范化SDSNOSNAMEAGEDEPT

DEPTMNAMES1趙亦17計(jì)算機(jī)

計(jì)算機(jī)劉偉S2錢(qián)爾18信息

信息王平S3孫珊20信息

自動(dòng)化劉偉S4李思21自動(dòng)化

對(duì)于分解后的兩個(gè)關(guān)系S和D,主鍵分別為SNO和DEPT,不存在非主屬性對(duì)主鍵的傳遞函數(shù)依賴。因此,S3NF,D3NF。圖6.8關(guān)系S和D

第四十一頁(yè),共八十三頁(yè),2022年,8月28日6.3.3.23NF規(guī)范化分解后,S和D的函數(shù)依賴分別如圖6.9和6.10所示。SNOSNAMEDEPTAGEDEPTMNAME圖6.9S中的函數(shù)依賴關(guān)系圖圖6.10D中的函數(shù)依賴關(guān)系圖由以上兩圖可以看出,關(guān)系模式SD由2NF分解為3NF后,函數(shù)依賴關(guān)系變得更加簡(jiǎn)單,既沒(méi)有非主屬性對(duì)鍵的部分依賴,也沒(méi)有非主屬性對(duì)鍵的傳遞依賴,解決了2NF中存在的四個(gè)問(wèn)題。第四十二頁(yè),共八十三頁(yè),2022年,8月28日6.3.3.23NF規(guī)范化1.?dāng)?shù)據(jù)冗余降低。系主任的名字存儲(chǔ)的次數(shù)與該系的學(xué)生人數(shù)無(wú)關(guān),只在關(guān)系D中存儲(chǔ)一次。2.不存在插入異常。當(dāng)一個(gè)新系沒(méi)有學(xué)生時(shí),該系的信息可以直接插入到關(guān)系D中,而與學(xué)生關(guān)系S無(wú)關(guān)。3.不存在刪除異常。要?jiǎng)h除某系的全部學(xué)生而仍然保留該系的有關(guān)信息時(shí),可以只刪除學(xué)生關(guān)系S中的相關(guān)學(xué)生記錄,而不影響系關(guān)系D中的數(shù)據(jù)。4.不存在更新異常。更換系主任時(shí),只需修改關(guān)系D中一個(gè)相應(yīng)元組的MN屬性值,從而不會(huì)出現(xiàn)數(shù)據(jù)的不一致現(xiàn)象。

SCD規(guī)范到3NF后,所存在的異常現(xiàn)象已經(jīng)全部消失。但是,3NF只限制了非主屬性對(duì)鍵的依賴關(guān)系,而沒(méi)有限制主屬性對(duì)鍵的依賴關(guān)系。如果發(fā)生了這種依賴,仍有可能存在數(shù)據(jù)冗余、插入異常、刪除異常和修改異常。這時(shí),則需對(duì)3NF進(jìn)一步規(guī)范化,消除主屬性對(duì)鍵的依賴關(guān)系,為了解決這種問(wèn)題,Boyce與Codd共同提出了一個(gè)新范式的定義,這就是Boyce-Codd范式,通常簡(jiǎn)稱BCNF或BC范式。它彌補(bǔ)了3NF的不足。第四十三頁(yè),共八十三頁(yè),2022年,8月28日6.3.4BC范式6.3.4.1BC范式的定義定義6.7

如果關(guān)系模式R1NF,且所有的函數(shù)依賴X→Y(YX),決定因素X都包含了R的一個(gè)候選鍵,則稱R屬于BC范式(Boyce-CoddNormalForm),記作RBCNF。BCNF具有如下性質(zhì):1.滿足BCNF的關(guān)系將消除任何屬性(主屬性或非主屬性)對(duì)鍵的部分函數(shù)依賴和傳遞函數(shù)依賴。也就是說(shuō),如果RBCNF,則R也是3NF。證明:采用反證法。設(shè)R不是3NF。則必然存在如下條件的函數(shù)依賴,X→Y(YX),Y→Z,其中X是鍵屬性,Y是任意屬性組,Z是非主屬性,ZY,這樣Y→Z函數(shù)依賴的決定因素Y不包含候選鍵,這與BCNF范式的定義相矛盾,所以如果RBCNF,則R也是3NF。第四十四頁(yè),共八十三頁(yè),2022年,8月28日6.3.4BC范式2.如果R3NF,則R不一定是BCNF?,F(xiàn)舉例說(shuō)明。設(shè)關(guān)系模式SNC(SNO,IDNO,CN0,GRADE),其中SNO代表學(xué)號(hào),IDNO代表學(xué)生的身份證號(hào),CNO代表課程號(hào),GRADE代表成績(jī)。可以判定,SNC有兩個(gè)候選鍵(SNO,CNO)和(IDNO,CNO),其函數(shù)依賴如下:

SNOIDNO

(SNO,CNO)→GRADE

(IDNO,CNO)→GRADE。唯一的非主屬性GRADE對(duì)鍵不存在部分函數(shù)依賴,也不存在傳遞函數(shù)依賴。所以SNC3NF。但是,因?yàn)镾NOIDNO,即決定因素SNO或IDNO不包含候選鍵,從另一個(gè)角度說(shuō),存在著主屬性對(duì)鍵的部分函數(shù)依賴:(SNO,CNO)IDNO,(IDNO,CNO)

SNO,所以SNC不是BCNF。正是存在著這種主屬性對(duì)鍵的部分函數(shù)依賴關(guān)系,造成了關(guān)系SNC中存在著較大的數(shù)據(jù)冗余,學(xué)生身份證號(hào)的存儲(chǔ)次數(shù)等于該生所選的課程數(shù)。從而會(huì)引起修改異常。比如,當(dāng)要更改某個(gè)學(xué)生的身份證號(hào)時(shí),則必須搜索出現(xiàn)該身份證號(hào)的每個(gè)學(xué)生記錄,并對(duì)其姓名逐一修改,這樣容易造成數(shù)據(jù)的不一致問(wèn)題。解決這一問(wèn)題的辦法仍然是通過(guò)投影分解進(jìn)一步提高SNC的范式等級(jí),將SNC規(guī)范到BCNF。

第四十五頁(yè),共八十三頁(yè),2022年,8月28日6.3.4.2BCNF規(guī)范化BCNF規(guī)范化是指把3NF關(guān)系模式通過(guò)投影分解轉(zhuǎn)換成BCNF關(guān)系模式的集合。下面以3NF關(guān)系模式SNC為例,來(lái)說(shuō)明BCNF規(guī)范化的過(guò)程。例6.3

將SNC(SNO,IDNO,CNO,GRADE)規(guī)范到BCNF。分析SNC數(shù)據(jù)冗余的原因,是因?yàn)樵谶@一個(gè)關(guān)系中存在兩個(gè)實(shí)體,一個(gè)為學(xué)生實(shí)體,屬性有SNO、IDNO;另一個(gè)是選課實(shí)體,屬性有SNO、CNO和GRADE。根據(jù)分解的原則,我們可以將SNC分解成如下兩個(gè)關(guān)系:S1(SNO,IDNO),描述學(xué)生實(shí)體;S2(SNO,CNO,GRADE),描述學(xué)生與課程的聯(lián)系。對(duì)于S1,有兩個(gè)候選鍵SNO和IDNO,對(duì)于S2,主鍵為(SNO,CNO)。在這兩個(gè)關(guān)系中,無(wú)論主屬性還是非主屬性都不存在對(duì)鍵的部分依賴和傳遞依賴,S1BCNF,S2BCNF。

第四十六頁(yè),共八十三頁(yè),2022年,8月28日6.3.4.2BCNF規(guī)范化分解后,S1和S2的函數(shù)依賴分別如圖6.11和6.12所示。SNOIDNOSNOCNOGRADE圖6.11S1中的函數(shù)依賴關(guān)系圖6.12S2中的函數(shù)依賴關(guān)系

關(guān)系SNC轉(zhuǎn)換成BCNF后,數(shù)據(jù)冗余度明顯降低。學(xué)生的姓名只在關(guān)系S1中存儲(chǔ)一次,學(xué)生要改名時(shí),只需改動(dòng)一條學(xué)生記錄中的相應(yīng)的SNAME值,從而不會(huì)發(fā)生修改異常。第四十七頁(yè),共八十三頁(yè),2022年,8月28日6.4關(guān)系模式的規(guī)范化

到目前為止,規(guī)范化理論已經(jīng)提出了六類(lèi)范式(有關(guān)4NF和5NF的內(nèi)容不再詳細(xì)介紹)。各范式級(jí)別是在分析函數(shù)依賴條件下對(duì)關(guān)系模式分離程度的一種測(cè)度,范式級(jí)別可以逐級(jí)升高。一個(gè)低一級(jí)范式的關(guān)系模式,通過(guò)模式分解轉(zhuǎn)化為若干個(gè)高一級(jí)范式的關(guān)系模式的集合,這種分解過(guò)程叫作關(guān)系模式的規(guī)范化(Normalization)。6.4.1關(guān)系模式規(guī)范化的目的和原則一個(gè)關(guān)系只要其分量都是不可分的數(shù)據(jù)項(xiàng),就可稱作規(guī)范化的關(guān)系,但這只是最基本的規(guī)范化。這樣的關(guān)系模式是合法的。但人們發(fā)現(xiàn)有些關(guān)系模式存在插入、刪除、修改異常、數(shù)據(jù)冗余等弊病。規(guī)范化的目的就是使結(jié)構(gòu)合理,消除存儲(chǔ)異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新。第四十八頁(yè),共八十三頁(yè),2022年,8月28日6.4關(guān)系模式的規(guī)范化

規(guī)范化的基本原則就是遵從概念單一化“一事一地”的原則,即一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。若多于一個(gè)實(shí)體,就把它“分離”出來(lái)。因此,所謂規(guī)范化,實(shí)質(zhì)上是概念的單一化,即一個(gè)關(guān)系表示一個(gè)實(shí)體。6.4.2關(guān)系模式規(guī)范化的步驟規(guī)范化就是對(duì)原關(guān)系進(jìn)行投影,消除決定屬性不是候選鍵的任何函數(shù)依賴。具體可以分為以下幾步:1.對(duì)1NF關(guān)系進(jìn)行投影,消除原關(guān)系中非主屬性對(duì)鍵的部分函數(shù)依賴,將1NF關(guān)系轉(zhuǎn)換成若干個(gè)2NF關(guān)系。2.對(duì)2NF關(guān)系進(jìn)行投影,消除原關(guān)系中非主屬性對(duì)鍵的傳遞函數(shù)依賴,將2NF關(guān)系轉(zhuǎn)換成若干個(gè)3NF關(guān)系。3.對(duì)3NF關(guān)系進(jìn)行投影,消除原關(guān)系中主屬性對(duì)鍵的部分函數(shù)依賴和傳遞函數(shù)依賴,也就是說(shuō)使決定因素都包含一個(gè)候選鍵。得到一組BCNF關(guān)系。

第四十九頁(yè),共八十三頁(yè),2022年,8月28日關(guān)系規(guī)范化的基本步驟如圖6.13所示。

1NF2NF3NFBCNF消除決定屬性不是候選鍵的非平凡的函數(shù)依賴消除非主屬性對(duì)鍵的部分函數(shù)依賴消除非主屬性對(duì)鍵的傳遞函數(shù)依賴消除主屬性對(duì)鍵的部分和傳遞函數(shù)依賴圖6.13規(guī)范化過(guò)程

一般情況下,我們說(shuō)沒(méi)有異常弊病的數(shù)據(jù)庫(kù)設(shè)計(jì)是好的數(shù)據(jù)庫(kù)設(shè)計(jì),一個(gè)不好的關(guān)系模式也總是可以通過(guò)分解轉(zhuǎn)換成好的關(guān)系模式的集合。但是在分解時(shí)要全面衡量,綜合考慮,視實(shí)際情況而定。對(duì)于那些只要求查詢而不要求插入、刪除等操作的系統(tǒng),幾種異?,F(xiàn)象的存在并不影響數(shù)據(jù)庫(kù)的操作。這時(shí)便不宜過(guò)度分解,否則當(dāng)要對(duì)整體查詢時(shí),需要更多的多表連接操作,這有可能得不償失。在實(shí)際應(yīng)用中,最有價(jià)值的是3NF和BCNF,在進(jìn)行關(guān)系模式的設(shè)計(jì)時(shí),通常分解到3NF就足夠了。第五十頁(yè),共八十三頁(yè),2022年,8月28日6.4關(guān)系模式的規(guī)范化6.4.2關(guān)系模式規(guī)范化的要求關(guān)系模式的規(guī)范化過(guò)程是通過(guò)對(duì)關(guān)系模式的投影分解來(lái)實(shí)現(xiàn)的,但是投影分解方法不是唯一的,不同的投影分解會(huì)得到不同的結(jié)果。在這些分解方法中,只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價(jià)的方法才是有意義的。第五十一頁(yè),共八十三頁(yè),2022年,8月28日一些概念和記號(hào)平凡的依賴若YX,則XY成立,則稱為平凡的依賴{sex,sname}{sname}非平凡的依賴若XY和YX成立,則X和Y一一對(duì)應(yīng),記為XY{sno}{dormitory,sname}Y完全依賴于X(記作XY),是指Y不依賴于X的任何一個(gè)真子集,否則稱為部分依賴(記作XY)部分依賴的例子:{sno,sex}{dormitory,sname}fp第五十二頁(yè),共八十三頁(yè),2022年,8月28日一些概念和記號(hào)(c)傳遞依賴 若XY,YX,YZ,則XZ成立稱Z傳遞函數(shù)依賴于X。邏輯蘊(yùn)涵

F是關(guān)系R的一個(gè)函數(shù)依賴的集合,XY是關(guān)系R的一個(gè)函數(shù)依賴,若R的任何一個(gè)關(guān)系r,若函數(shù)依賴XY都成立,則稱為F邏輯蘊(yùn)涵XY。例:{XY,YZ}邏輯蘊(yùn)涵X

Z函數(shù)依賴集合F的閉包

F+={XY│F邏輯蘊(yùn)涵

XY}即F所邏輯蘊(yùn)含的函數(shù)依賴的全體叫F的閉包。第五十三頁(yè),共八十三頁(yè),2022年,8月28日閉包第五十四頁(yè),共八十三頁(yè),2022年,8月28日F是關(guān)系R(U)的一個(gè)函數(shù)依賴的集合,XU,XF+={Y|XY能由F導(dǎo)出},XF+稱為屬性集X關(guān)于函數(shù)依賴集F的閉包。F是關(guān)系R(U)的一個(gè)函數(shù)依賴的集合,X,YU,XY能由F導(dǎo)出的充分必要條件是YXF+

第五十五頁(yè),共八十三頁(yè),2022年,8月28日Armstrong公理一組用于推導(dǎo)函數(shù)依賴的規(guī)則若XY,則WXWY若YX,則XY若XY,YZ,則XZ若XY,XZ,則XYZ若XYZ,則XY,XZ若XY,WYZ,則XWZ若XY,ZY,則XZ第五十六頁(yè),共八十三頁(yè),2022年,8月28日求屬性集X關(guān)于U上的函數(shù)依賴集F的閉包XF+步驟:令X0=X。求B,B={A|(V)(W)(VWFVXiAW)}Xi+1=BXi判斷Xi+1=Xi嗎?若相等或Xi+1=U,Xi+1則就是XF+

,算法終止。第五十七頁(yè),共八十三頁(yè),2022年,8月28日例:U={A,B,C.D,E};F={ABC,BD,CE,ECB,ACB}求(AB)F+1.令X0=AB。2.求B,

B={A|(V)(W)(VWFVXiAW)}找左部為A,B或AB的函數(shù)依賴,得到兩個(gè):ABC,BD。

B=CD3.求X1,根據(jù)公式:Xi+1=BXi

X1=BX0

=

CD

AB=ABCD4.求X2,求B,找左部為ABCD的函數(shù)依賴,得到兩個(gè):CE,ACB。

B=EBX2=BX1=

EBABCD=ABCDE5.判斷Xi+1=Xi嗎?若相等或Xi+1=U,Xi+1則就是XF+

,算法終止。

(AB)F+=ABCDE第五十八頁(yè),共八十三頁(yè),2022年,8月28日模式的分解把低一級(jí)的關(guān)系模式分解為若干個(gè)高一級(jí)的關(guān)系模式的方法并不是唯一的只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價(jià),分解方法才有意義第五十九頁(yè),共八十三頁(yè),2022年,8月28日關(guān)系模式分解的標(biāo)準(zhǔn)三種模式分解的等價(jià)定義⒈分解具有無(wú)損連接性⒉分解要保持函數(shù)依賴⒊分解既要保持函數(shù)依賴,又要具有無(wú)損連接性第六十頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))例:SL(Sno,Sdept,Sloc)

F={Sno→Sdept,Sdept→Sloc,Sno→Sloc}SL∈2NF存在插入異常、刪除異常、冗余度大和修改復(fù)雜等問(wèn)題分解方法可以有多種第六十一頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))SL──────────────────Sno Sdept Sloc──────────────────95001CSA95002ISB95003MAC95004ISB95005 PHB──────────────────第六十二頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))1.SL分解為下面三個(gè)關(guān)系模式:

SN(Sno)SD(Sdept)SO(Sloc)第六十三頁(yè),共八十三頁(yè),2022年,8月28日分解后的關(guān)系為:

SN──────SD──────SO──────SnoSdeptSloc

──────────────────95001CSA95002ISB95003MAC95004PH─────95005────────────第六十四頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))分解后的數(shù)據(jù)庫(kù)丟失了許多信息例如無(wú)法查詢95001學(xué)生所在系或所在宿舍。如果分解后的關(guān)系可以通過(guò)自然連接恢復(fù)為原來(lái)的關(guān)系,那么這種分解就沒(méi)有丟失信息第六十五頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))2.SL分解為下面二個(gè)關(guān)系模式:

NL(Sno,Sloc)DL(Sdept,Sloc)分解后的關(guān)系為:

NL────────────DL────────────SnoSlocSdeptSloc----──────────────────────95001ACSA95002BISB95003CMAC95004BPHB95005B──────────────────────第六十六頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))NLDL

SnoSlocSdept

95001ACS95002BIS95002BPH95003CMA95004BIS95004BPH95005BIS95005BPH第六十七頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))

NL

DL比原來(lái)的SL關(guān)系多了3個(gè)元組

無(wú)法知道95002、95004、95005

究竟是哪個(gè)系的學(xué)生

元組增加了,信息丟失了第六十八頁(yè),共八十三頁(yè),2022年,8月28日第三種分解方法3.將SL分解為下面二個(gè)關(guān)系模式:

ND(Sno,Sdept)NL(Sno,Sloc)

分解后的關(guān)系為:

第六十九頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))ND────────────NL──────────SnoSdeptSnoSloc

──────────────────────

95001CS95001A95002IS95002B95003MA95003C95004IS95004B95005PH95005B

───────────────────────第七十頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))

NDNL

SnoSdeptSloc

95001CSA95002ISB95003MAC95004CSA95005PHB與SL關(guān)系一樣,因此沒(méi)有丟失信息但仍存在插入、刪除和更新異常。第七十一頁(yè),共八十三頁(yè),2022年,8月28日第四種分解方法4.將SL分解為下面二個(gè)關(guān)系模式:

ND(Sno,Sdept)DL(Sdept,Sloc)

分解后的關(guān)系為:

第七十二頁(yè),共八十三頁(yè),2022年,8月28日模式的分解(續(xù))ND────────────DL──────────SnoSdeptSnoSloc

──────────────────────95001CSCSA95002

溫馨提示

  • 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)論