《數(shù)據(jù)庫原理及MySQL應(yīng)用(微課版)》課件 第3章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第1頁
《數(shù)據(jù)庫原理及MySQL應(yīng)用(微課版)》課件 第3章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第2頁
《數(shù)據(jù)庫原理及MySQL應(yīng)用(微課版)》課件 第3章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第3頁
《數(shù)據(jù)庫原理及MySQL應(yīng)用(微課版)》課件 第3章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第4頁
《數(shù)據(jù)庫原理及MySQL應(yīng)用(微課版)》課件 第3章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《數(shù)據(jù)庫原理及MYQL應(yīng)用》課程第2章

關(guān)系模型及關(guān)系運算教學(xué)內(nèi)容1關(guān)系規(guī)范化理論2規(guī)范化實例3數(shù)據(jù)庫設(shè)計的步驟4小結(jié)教學(xué)內(nèi)容1關(guān)系規(guī)范化理論2規(guī)范化實例3數(shù)據(jù)庫設(shè)計的步驟4小結(jié)>>內(nèi)容回顧E-R模型進行數(shù)據(jù)建?!D(zhuǎn)換為關(guān)系模型(關(guān)系模式)例如:已知一個教師授課的關(guān)系模式TDC,如下:TDC(Tno,Tname,Title,Dno,Dname,Loc,Cno,Cname,Level,Credit)其中各屬性分別表示教師編號、教師姓名、教師職稱、系別

、系名、系地址、課程號、課程名、教師水平、學(xué)分。假定該關(guān)系模式包含以下數(shù)據(jù)語義:(1)一個系有多名教師,一個教師只屬于一個系;(2)一個系有多門課,一門課只屬于一個系;(3)一個教師可以教授多門課,每門課可有多個教師承擔(dān)。>>規(guī)范化的必要性TnoTnameTitleDnoDnameLocCnoCnameLevelCreditT01張燕講師D1計算機系東A101C01數(shù)據(jù)庫優(yōu)秀3T01張燕講師D1計算機系東A101C02英語良2T01張燕講師D1計算機系東A101C03數(shù)學(xué)好2T02李強副教授D1計算機系東A101C02英語優(yōu)秀2T02李強副教授D1計算機系東A101C03數(shù)學(xué)好2>>規(guī)范化的必要性在這個關(guān)系模式中可以看出,一位教師可以講授多門課程,同一門課程也可以有多位教師講授,因此只有通過(Tno,Cno)來確定哪位教師講授哪門課程,而一味地將所有信息簡單地放置到一個關(guān)系表中,勢必會造成以下4方面的問題:數(shù)據(jù)冗余:表現(xiàn)是某種信息在關(guān)系中存儲多次每當(dāng)教師講授一門課時,該教師的信息,包括姓名、職稱、系號、系名、系地址等信息就重復(fù)存儲一次,例如,教師T01講授了3門課C01,C02,C03,所以她的相關(guān)數(shù)據(jù)被重復(fù)輸入了3次。更新異常:表現(xiàn)是修改一個元組卻要求修改多個元組由于數(shù)據(jù)的重復(fù)存儲,會給更新帶來很多麻煩。例如教師T01,經(jīng)過職稱評定,由“講師”晉升為“副教授”,那么上表中的“Title”列重復(fù)更改3次。一旦一個元組的地址未修改就會導(dǎo)致數(shù)據(jù)不一致,數(shù)據(jù)的不一致會直接影響數(shù)據(jù)庫的質(zhì)量。如果涉及范圍擴大,例如一個系的系地址發(fā)生改變,那么該系的所有教師記錄都必須做相應(yīng)的修改,這樣不僅要修改的數(shù)據(jù)量大,潛在的數(shù)據(jù)不一致的危險性也更大。插入異常:表現(xiàn)是插入不進去如果學(xué)校新調(diào)入幾位教師(若規(guī)定新教師暫時不能授課),由于缺少主關(guān)鍵字的一部分,而由完整約束可知,關(guān)鍵字不允許出現(xiàn)空值,則這些教師就不能插入到此關(guān)系表中,那么這些教師的其他信息(如編號、姓名、職稱、系別等)也將無法記載,這顯然是不合理的。另一方面,如果經(jīng)過培訓(xùn),這些新教師可以授課了,那么他們的額信息將插入到表中,但由于數(shù)據(jù)冗余,一個教師可擔(dān)任多門課程,這勢必會導(dǎo)致重復(fù)執(zhí)行插入操作。刪除異常:表現(xiàn)是刪除時刪掉了其他不應(yīng)刪除的信息與插入異常相反的情況是:如果某些教師由于致力于純科研或身體不適等原因,將暫時不再擔(dān)任授課任務(wù),因主關(guān)鍵字不全,就需要從當(dāng)前關(guān)系表中刪除其相關(guān)記錄,由于數(shù)據(jù)冗余,刪除時勢必會導(dǎo)致重復(fù)刪除,更嚴(yán)重的是,那些關(guān)于這些教師不變的其他信息(如編號、姓名)也將同時被刪除,這更不合理。>>規(guī)范化的必要性上述這些在數(shù)據(jù)的插入、刪除或更新元組時產(chǎn)生的可能帶來不良后果的情況均屬于不希望發(fā)生的異常。產(chǎn)生這些異常的原因是關(guān)系模式設(shè)計得不好造成的。如何避免和克服這類異常,是系統(tǒng)分析和設(shè)計人員必須考慮的問題。如果事先沒有考慮到,等系統(tǒng)建立之后發(fā)現(xiàn)問題再返回去解決,這種事情是非常棘手的,不僅費時費力,而且往往不能夠徹底解決,除非把整個系統(tǒng)推翻重來,再重新設(shè)計一個新系統(tǒng)。如果在數(shù)據(jù)庫設(shè)計階段就能設(shè)計一個良好的關(guān)系模式,就可大大避免上述異常發(fā)生。

>>規(guī)范化的必要性將上表的關(guān)系模式分解為以下4個關(guān)系模式,則上面的異常問題就能基本解決。

TnoTnameTitleDnoT01張燕講師D1T02李強副教授D1DnoDnameLocD1計算機系東A101CnoCnameCreditC01數(shù)據(jù)庫3C02英語2C03數(shù)學(xué)2TnoCnoLevelT01C01優(yōu)秀T01C02良T01C03好T02C02優(yōu)秀T02C03好新的關(guān)系模型由4個關(guān)系模式組成:教師T,系D,課程C,授課TC。各個關(guān)系不是孤立的,它們相互之間存在關(guān)聯(lián),而這些關(guān)聯(lián)是通過各個關(guān)系中的外關(guān)鍵字反映出來的,因此構(gòu)成了整個系統(tǒng)的模型。例如教師T和系D之間通過T關(guān)系中的外關(guān)鍵字Dno完成一對多聯(lián)系;教師T和課程C之間通過外關(guān)鍵字組合(Tno,Cno)實現(xiàn)多對多聯(lián)系。當(dāng)處理需要時,這些外關(guān)鍵字作為橋梁對有關(guān)的關(guān)系模式進行自然連接,則恢復(fù)了原來的關(guān)系。教師T系D課程C授課TC>>規(guī)范化的必要性可以看出拆分后的關(guān)系模型可以很好的解決上述的4種異常。因此如何設(shè)計一個優(yōu)良的關(guān)系模型,設(shè)計的依據(jù)又是什么,是本節(jié)的重點問題。

關(guān)系數(shù)據(jù)庫邏輯設(shè)計的工具——關(guān)系數(shù)據(jù)庫的規(guī)范化理論。教學(xué)內(nèi)容1關(guān)系規(guī)范化理論2規(guī)范化實例3數(shù)據(jù)庫設(shè)計的步驟4小結(jié)>>規(guī)范化實例什么是函數(shù)依賴上例涉及分解關(guān)系模式,對進行關(guān)系分解的指導(dǎo)和依據(jù)是函數(shù)依賴。函數(shù)依賴反映了數(shù)據(jù)之間的內(nèi)在聯(lián)系,因此在講關(guān)系模式規(guī)范化之前首先要明確函數(shù)依賴的相關(guān)定義?!径x】設(shè)R(U)是屬性集U上的關(guān)系模式。X,Y是U的子集。若對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴于X,記為X→Y。例如:設(shè)有關(guān)系R(職工號,基本工資,獎金),其中一個職工號唯一確定一個基本工資數(shù)額和一個獎金數(shù)額。換言之,一個職工不可能同時拿兩種基本工資或獎金,但幾個職工的基本工資或獎金有可能相同。具體數(shù)據(jù)表如下所示:職工號基本工資獎金E01900.00100.00E021000.00260.00E03680.00100.00E04680.00100.00根據(jù)定義可知,在表中存在如下函數(shù)依賴:職工號→基本工資,職工號→獎金。但反過來則不存在這種關(guān)系,即:基本工資→職工號,獎金→職工號,獎金→基本工資,基本工資→獎金>>規(guī)范化實例函數(shù)依賴和別的數(shù)據(jù)依賴一樣是語義范疇的概念,它不是指關(guān)系模式R的某個或某些元組滿足的約束條件,而是指R的所有元組均要滿足的約束條件。當(dāng)關(guān)系中的元組增加或更新后都不能破壞函數(shù)依賴。因此,必須根據(jù)語義來確定一個函數(shù)依賴,而不能單憑某一時刻關(guān)系的實際數(shù)據(jù)值來判斷。例如姓名→年齡,這個函數(shù)依賴只有在沒有重名的情況下才成立,

如果允許重名,則年齡就不能函數(shù)依賴于姓名。根據(jù)函數(shù)依賴的定義,可針對關(guān)系模型的3種聯(lián)系,找出下面的規(guī)律:(1)在一個關(guān)系模式中,如果屬性X,Y有1:1的聯(lián)系,則存在函數(shù)依賴X→Y,Y→X,可記為X?Y。(2)在一個關(guān)系模式中,如果屬性X,Y有1:n的聯(lián)系,則存在函數(shù)依賴Y→X,但X→Y。

(3)在一個關(guān)系模式中,如果屬性X,Y有m:n的聯(lián)系,則X和Y之間不存在任何函數(shù)依賴。>>規(guī)范化實例滿足函數(shù)依賴的前提下的一種特殊的函數(shù)依賴關(guān)系,其數(shù)學(xué)定義如下:在R(U)中,如果X→Y,并且對于X的任何一個真子集X’,都有X’→Y,則稱Y對X完全依賴,記為X→Y。

X→Y,但Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴(PartialFunctionDependency),記為X→Y。什么是完全函數(shù)依賴FP例如:已知一關(guān)系模式成績SC(Sno,Cno,Grade,Credit)。其中Sno表示學(xué)號,Cno表示課程號,Crade表示成績,Credit表示學(xué)分。>>規(guī)范化實例在這個成績關(guān)系中,由于一個學(xué)生可以選修多門課程,一門課程可有多個學(xué)生選修,因此屬性組合(Sno,Cno)中的任何單獨一個屬性都不能確定Grade,Grade應(yīng)由(Sno,Cno)共同決定,故Grade完全依賴于(Sno,Cno),記為(Sno,Cno)

→Grade。而一門課程對應(yīng)一個唯一的學(xué)分,所以Credit完全依賴于Cno,記為Cno→Credit,同時Cno又是屬性組合(Sno,Cno)的真子集,所以Credit也部分依賴于(Sno,Cno),記為(Sno,Cno)→Credit。注意:當(dāng)X是單個屬性時,由于X不存在任何真子集,故只存在完全依賴,不存在部分依賴。只有當(dāng)X是屬性組合時,才有可能存在部分依賴FFP>>規(guī)范化實例例如:已知一關(guān)系模式Student(Sno,Sname,Dno,Dname,Loc)。其中各屬性分別表示學(xué)號,姓名,系號,系名,系地址。通過語義分析可知,由于一個系里有很多名學(xué)生,而一個學(xué)生只能在一個系里注冊;一個系只有一個確定的系地址。因此,此關(guān)系存在如下函數(shù)依賴:Sno→Dno,但Dno→Sno,同時Dno→Loc,根據(jù)定義,該關(guān)系模式存在傳遞依賴Sno→Loc。在滿足函數(shù)依賴的前提下的另一種特殊的函數(shù)依賴,其數(shù)學(xué)定義如下:【定義】在R(U)中,如果X→Y,(Y

?X),Y→X,Y→Z,Z?Y,則稱Z對X傳遞函數(shù)依賴,記為:X

Z。傳遞什么是傳遞依賴>>規(guī)范化實例范式關(guān)系數(shù)據(jù)庫中的關(guān)系需滿足一定的規(guī)范化要求,如果隨意建立,可能會出現(xiàn)前面的操作異常。而這種規(guī)范化要求,我們稱之為范式。滿足最低要求的叫第一范式,簡稱1NF,在第一范式中滿足進一步要求的為第二范式,其余以此類推。從范式來講,主要是E·F·Codd做的工作,1971~1972年他系統(tǒng)的提出了1NF、2NF、3NF的概念,討論了規(guī)范化問題。1974年,Codd和Boyce又共同提出了一個新范式BCNF,1976年Fagin又提出了4NF,后來又有人提出了5NF。對于各種范式之間的聯(lián)系:一個低一級范式的關(guān)系模式,通過模式分解(SchemaDecomposition)可以轉(zhuǎn)換為若干個高一級范式的關(guān)系模式的集合,這種過程就叫規(guī)范化(Normalization)。>>規(guī)范化實例第一范式【定義】關(guān)系模式R的每一屬性值都是不可再分的最小數(shù)據(jù)單位,則稱R屬于第1范式的關(guān)系,記為R∈1NF。1NF是最低級的范式,不屬于1NF的關(guān)系稱為非規(guī)范化關(guān)系,而數(shù)據(jù)庫理論要求的都應(yīng)該是規(guī)范化關(guān)系,那么如何將非規(guī)范關(guān)系轉(zhuǎn)換為規(guī)范為關(guān)系呢?最常用的辦法就是模式分解,下面通過一個例子來具體說明。>>規(guī)范化實例第一范式例如:已知關(guān)系Eemlpyee(職工號,姓名,電話號碼),具體數(shù)據(jù)如下表所示:職工號姓名電話號碼E01李明7012633(O)E01李明7146688(H)E01李T)E02張T)E03劉大維2533886(O)E03劉大T)職工號姓名辦公電話住宅電話手機E01李明7012633(O)7146688(HT)E02張敏

1003C03831003C0497課程號學(xué)分C012C023C032C023C032C044成績SC課程Course滿足2NF的關(guān)系表>>規(guī)范化實例第三范式【定義】若R∈2NF,且R(U,F(xiàn))中的所有非主屬性對任何候選碼都不存在傳遞依賴,則稱R屬于第3范式,記為R∈3NF。同樣,3NF也是建立在1NF、2NF的基礎(chǔ)上的。只有當(dāng)其滿足了1NF,再滿足了2NF時,才有必要判斷其是否滿足3NF。下面仍然通過一個具體的例子來說明。例如:已知關(guān)系Student(學(xué)號,姓名,系號,系地址),具體數(shù)據(jù)如下:學(xué)號姓名系號系地址1001張敏D01東A1011002李飛D01東A1011003趙同D01東A1011004李凱D02西B2031005李越D03東A2051006張?zhí)mD01東A101>>規(guī)范化實例第三范式將原關(guān)系Student分解成為兩個關(guān)系模式:Student(學(xué)號,姓名,系號),Dept(系號,系地址),分解后的數(shù)據(jù)如下圖所示:學(xué)號姓名系號1001張敏D011002李飛D011003趙同D011004李凱D021005李越D031006張?zhí)mD01系號系地址D01東A101D02西B203D03東A205語義分析:首先,各屬性不可再分,滿足1NF;其次,關(guān)鍵字“學(xué)號”屬于單屬性,不可能有部分依賴,故滿足2NF;但是由于學(xué)號

系號,系號

系地址,從而構(gòu)成傳遞依賴,即學(xué)號

系地址,這顯然違背了3NF。在數(shù)據(jù)冗余、更新、插入、刪除操作上都會產(chǎn)生類似上例的異常情況,所以有必要進一步提高范式級別的必要。FF傳遞學(xué)生Student系Dept滿足3NF的關(guān)系表>>規(guī)范化實例第三范式由上例可以看出,對關(guān)系規(guī)范化的分解過程體現(xiàn)出了“一事一地”的原則,即一個關(guān)系反映一個實體或一個聯(lián)系,不應(yīng)當(dāng)把幾種關(guān)系混合在一起,切忌“大而全”。在實際應(yīng)用中,倘若一個關(guān)系不能解決問題,則可在若干個基本關(guān)系組成的關(guān)系模式基礎(chǔ)上,根據(jù)需求通過連接導(dǎo)出所需關(guān)系。>>規(guī)范化實例第三范式(3NF)一般而言,一個關(guān)系模式能夠達(dá)到3NF級別時,其規(guī)范化程度基本滿足實際數(shù)據(jù)庫的設(shè)計需求。至此,已系統(tǒng)討論了關(guān)系模式的規(guī)范化問題,規(guī)范化是通過對已有關(guān)系模式進行模式分解來實現(xiàn)的。把低一級的關(guān)系分解為多個高一級的關(guān)系,使模式中的各個關(guān)系達(dá)到某種程度的分離,讓一個關(guān)系只描述一個實體或?qū)嶓w間的聯(lián)系。規(guī)范化實質(zhì)上就是概念的單一化。>>規(guī)范化實例綜合練習(xí)現(xiàn)對圖書管理系統(tǒng)的數(shù)據(jù)庫設(shè)置了如下關(guān)系模式:學(xué)生(學(xué)號,姓名,性別,年齡,聯(lián)系方式(微信,QQ,手機號),系名,系地址)

圖書(書號,書名,作者,價格,出版社,庫存量)借還書(學(xué)號,姓名,書號,書名,借書日期,應(yīng)還日期)經(jīng)過分析,以上關(guān)系不滿足1NF、2NF、3NF,請分別指出具體哪些地方不滿足哪些范式,并說明原因,針對每個范式做出相應(yīng)修改。

教學(xué)內(nèi)容1關(guān)系規(guī)范化理論2規(guī)范化實例3數(shù)據(jù)庫設(shè)計的步驟4小結(jié)需求收集和分析設(shè)計概念結(jié)構(gòu)設(shè)計邏輯結(jié)構(gòu)數(shù)據(jù)模型優(yōu)化設(shè)計物理結(jié)構(gòu)評價設(shè)計、性能預(yù)測物理實現(xiàn)實驗性運行使用、維護數(shù)據(jù)庫不滿意不滿意1.需求分析階段2.概念結(jié)構(gòu)設(shè)計階段3.邏輯結(jié)構(gòu)設(shè)計階段4.物理結(jié)構(gòu)設(shè)計階段5.數(shù)據(jù)庫實施階段6.數(shù)據(jù)庫運行、維護階段

溫馨提示

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

評論

0/150

提交評論