關(guān)系數(shù)據(jù)庫規(guī)范化理論_第1頁
關(guān)系數(shù)據(jù)庫規(guī)范化理論_第2頁
關(guān)系數(shù)據(jù)庫規(guī)范化理論_第3頁
關(guān)系數(shù)據(jù)庫規(guī)范化理論_第4頁
關(guān)系數(shù)據(jù)庫規(guī)范化理論_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當或者侵權(quán),請聯(lián)系改正或者刪除。第 4章 關(guān)系數(shù)據(jù)庫規(guī)范化理論數(shù)據(jù)庫設(shè)計的一個最基本的問題是怎樣建立一個合理的數(shù)據(jù)庫模式 , 使數(shù)據(jù)庫系統(tǒng)無論是在數(shù)據(jù)存儲方面, 還是在數(shù)據(jù)操作方面都具有較好的性能。什么樣的模型是合理的模型, 什么樣的模型是不合理的模型, 應(yīng)該經(jīng)過什么標準去鑒別和采取什么方法來改進 , 這是在進行數(shù)據(jù)庫設(shè)計之前必須明確的問題。為使數(shù)據(jù)庫設(shè)計合理可靠、簡單實用 , 長期以來 , 形成了關(guān)系數(shù)據(jù)庫設(shè)計理論, 即規(guī)范化理論。 它是根據(jù)現(xiàn)實世界存在的數(shù)據(jù)依賴而進行的關(guān)系模式的規(guī)范化處理, 從而得到一個合理的數(shù)據(jù)庫設(shè)計效果。本章首先說明關(guān)系規(guī)范化的作用, 接

2、著引入函數(shù)依賴和范式等基本概念, 然后介紹關(guān)系模式等價性判定和模式分解的方法最后簡要介紹兩種數(shù)據(jù)依賴的概念。,4.1 關(guān)系規(guī)范化的作用4.1.1 問題的提出從前面的有關(guān)章節(jié)可知, 關(guān)系是一張二維表, 它是涉及屬性的笛卡爾積的一個子集。從笛卡爾積中選取哪些元組構(gòu)成該關(guān)系一般是由現(xiàn)實世界賦予該關(guān)系的元組語義來確定的。元組語義實,資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當或者侵權(quán),請聯(lián)系改正或者刪除。質(zhì)上是一個 n 目謂詞 ( n 是屬性集中屬性的個數(shù) ) 。使該 n 目謂詞為真的笛卡爾積中的元素 ( 或者說凡符合元組語義的元素 ) 的全體就構(gòu)成了該關(guān)系。但由上述關(guān)系所組成的數(shù)據(jù)庫還存在某些問題。為了說明的方

3、便 , 我們先看一個實例。【例 4.1】設(shè)有一個關(guān)于教學(xué)管理的關(guān)系模式R(U), 其中 U 由屬性 Sno、 Sname、 Ssex、 Dname、 Cname、 Tname、 Grade 組成的屬性集合 , 其中 Sno 的含義為學(xué)生學(xué)號 , Sname為學(xué)生姓名 , Ssex為學(xué)生性別 , Dname 為學(xué)生所在系別 , Cname 為學(xué)生所選的課程名稱 , Tname 為任課教師姓名 , Grade 為學(xué)生選修該門課程的成績。若將這些信息設(shè)計成一個關(guān)系 , 則關(guān)系模式為 :教學(xué) ( Sno, Sname, Ssex, Dname, Cname, Tname, Grade)選定此關(guān)系的主鍵

4、為( Sno,Cname) 。由該關(guān)系的部分數(shù)據(jù)( 如表 4-1 所示 ) , 我們不難看出 , 該關(guān)系存在著如下問題:1. 數(shù)據(jù)冗余 ( Data Redundancy)每一個系名對該系的學(xué)生人數(shù)乘以每個學(xué)生選修的課程門數(shù)重復(fù)存儲。每一個課程名均對選修該門課程的學(xué)生重復(fù)存儲。資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當或者侵權(quán),請聯(lián)系改正或者刪除。每一個教師都對其所教的學(xué)生重復(fù)存儲。2. 更新異常 ( Update Anomalies)由于存在數(shù)據(jù)冗余 , 就可能導(dǎo)致數(shù)據(jù)更新異常 , 這主要表現(xiàn)在以下幾個方面 : 插入異常 ( Insert Anomalies) : 由于主鍵中元素的屬性值不能取空值 ,

5、 如果新分配來一位教師或新成立一個系 , 則這位教師及新系名就無法插入 ; 如果一位教師所開的課程無人選修或一門課程列入計劃但當前不開課 , 也無法插入。 修改異常 ( ModificationAnomalies) : 如果更改一門課程的任課教師 , 則需要修改多個元組。如果僅部分修改 , 部分不修改 , 就會造成數(shù)據(jù)的不一致性。同樣的情形 , 如果一個學(xué)生轉(zhuǎn)系 , 則對應(yīng)此學(xué)生的所有元組都必須修改 , 否則 , 也出現(xiàn)數(shù)據(jù)的不一致性。 刪除異常 ( Deletion Anomalies) : 如果某系的所有學(xué)生全部畢業(yè) , 又沒有在讀及新生 , 當從表中刪除畢業(yè)學(xué)生的選課信息時 , 則連同此

6、系的信息將全部丟失。 同樣地 , 如果所有學(xué)生都退選一門課程 , 則該課程的相關(guān)信息也同樣丟失了。由此可知 , 上述的教學(xué)管理關(guān)系盡管看起來能滿足一定的需求 , 但存在的問題太多 , 從而它并不是一個合理的關(guān)系模式。表 4-1 教學(xué)關(guān)系部分數(shù)據(jù)資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當或者侵權(quán),請聯(lián)系改正或者刪除。SnoSnameSsexDnameCnameTnameGrade0450301張三愷男計算機系高等數(shù)學(xué)李剛830450301張三愷男計算機系英語林弗然710450301張三愷男計算機系數(shù)字電路周斌920450301張三愷男計算機系數(shù)據(jù)結(jié)構(gòu)陳長樹860450302王薇薇女計算機系高等數(shù)學(xué)李剛79

7、0450302王薇薇女計算機系英語林弗然940450302王薇薇女計算機系數(shù)字電路周斌740450302王薇薇女計算機系數(shù)據(jù)結(jié)構(gòu)陳長樹6804 1陳杰西男園林系高等數(shù)學(xué)吳相輿9704 1陳杰西男園林系英語林弗然7904 1陳杰西男園林系植物分類學(xué)花裴基9304 1陳杰西男園林系素描豐茹884.1.2 解決的方法不合理的關(guān)系模式最突出的問題是數(shù)據(jù)冗余。而數(shù)據(jù)冗余的產(chǎn)生有著較為復(fù)雜的原因。雖然關(guān)系模式充分地考慮到文件之間的相互關(guān)聯(lián)而有效地處理了多個文件間的聯(lián)系所產(chǎn)生的冗余問題。但在關(guān)系本身內(nèi)部數(shù)據(jù)之間的聯(lián)系還沒有得到充分的解決, 正如例4.1 所示 ,同一關(guān)系模式中各個屬性之間存在著某種聯(lián)系, 如

8、學(xué)生與系、課程與教師之間存在依賴關(guān)系的事實, 才使得數(shù)據(jù)出現(xiàn)大量冗余 , 引發(fā)各種操作異常。這種依賴關(guān)系稱之為數(shù)據(jù)依賴( Data Independence) 。關(guān)系系統(tǒng)當中數(shù)據(jù)冗余產(chǎn)生的重要原因就在于對數(shù)據(jù)依賴的資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當或者侵權(quán),請聯(lián)系改正或者刪除。處理 , 從而影響到關(guān)系模式本身的結(jié)構(gòu)設(shè)計。解決數(shù)據(jù)間的依賴關(guān)系常常采用對關(guān)系的分解來消除不合理的部分, 以減少數(shù)據(jù)冗余。在例 4.1 中, 我們將教學(xué)關(guān)系分解為三個關(guān)系模式來表示 : 學(xué)生基本信息 ( Sno, Sname, Ssex, Dname) 課,程信息 ( Cno, Cname, Tname, ) 及學(xué)生成績

9、( Sno, Cno, Grade) , 其中 Cno 為學(xué)生選修的課程編號 ;分解后的部分數(shù)據(jù)如表4-2、 表 4-3 與表 4-4 所示。表 4-2學(xué)生信息0450301GS01101830450301YY0130571SnoSnameSsexDname0450301SD05103920450301張三愷男計算機系0450301SJ05306860450302王薇薇女計算機系0450302GS01101790450302YY013059404 1陳杰西男園林系0450302SD05103740450302SJ0530668表 4-3課程信息CnoCnameTname04 1GS011029

10、7GS01101高等數(shù)學(xué)李剛04 1YY0130579YY01305英語林弗然04 1ZF0210193SD05103數(shù)字電路周斌04 1SM0220488SJ05306數(shù)據(jù)結(jié)構(gòu)陳長樹GS01102高等數(shù)學(xué)吳相輿ZF02101植物分類學(xué)花裴基SM02204素描豐茹表 4-4 學(xué)生成績SnoCnoGrade資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當或者侵權(quán),請聯(lián)系改正或者刪除。對教學(xué)關(guān)系進行分解后, 我們再來考察一下: 數(shù)據(jù)存儲量減少。設(shè)有 n 個學(xué)生 , 每個學(xué)生平均選修m 門課程 , 則表 4-1 中學(xué)生信息就有 4nm 之多。經(jīng)過改進后學(xué)生信息及成績表中, 學(xué)生的信息僅為 3n mn。學(xué)生信息的存儲

11、量減少了3(m-1)n 。顯然 , 學(xué)生選課數(shù)絕不會是1, 因而 , 經(jīng)過分解后數(shù)據(jù)量要少得多。 更新方便。 插入問題部分解決: 對一位教師所開的無人選修的課程可方便地在課程信息表中插入??墒?, 新分配來的教師、新成立的系或列入計劃但當前不開課的課程, 還是無法插入。要解決無法插入的問題 , 還可繼續(xù)將系名與課程作分解來解決。 修改方便 : 原關(guān)系中對數(shù)據(jù)修改所造成的數(shù)據(jù)不一致性, 在分解后得到了很好的解決, 改進后 , 只需要修改一處。 刪除問題也部分解決: 當所有學(xué)生都退選一門課程時, 刪除退選的課程不會丟失該門課程的信息。值得注意的是, 系的信息丟失問題依然存在 , 解決的方法還需繼續(xù)

12、進行分解。雖然改進后的模式部分地解決了不合理的關(guān)系模式所帶來的問題 , 但同時 , 改進后的關(guān)系模式也會帶來新的問題, 如當查詢某個系的學(xué)生成績時, 就需要將兩個關(guān)系連接后進行查詢, 增加了查詢時關(guān)系的連接開銷, 而關(guān)系的連接代價卻又是很大的。另外 , 必須說明的是, 不是任何分解都是有效的。若將表4-1分解為 ( Sno, Sname, Ssex, Dname, )、 ( Sno, Cno, Cname, Tname) 及資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當或者侵權(quán),請聯(lián)系改正或者刪除。( Sname, Cno, Grade) , 不但解決不了實際問題, 反而會帶來更多的問題。那么 , 什么樣的

13、關(guān)系模式需要分解? 分解關(guān)系模式的理論依據(jù)又是什么 ? 分解后能完全消除上述的問題嗎 ? 回答這些問題需要理論的指導(dǎo)。下面幾節(jié)將加以討論。4.1.3 關(guān)系模式規(guī)范化由上面的討論可知 , 在關(guān)系數(shù)據(jù)庫的設(shè)計中 , 不是隨便一種關(guān)系模式設(shè)計方案都”合適” , 更不是任何一種關(guān)系模式都能夠投入應(yīng)用的。由于數(shù)據(jù)庫中的每一個關(guān)系模式的屬性之間需要滿足某種內(nèi)在的必然聯(lián)系 , 設(shè)計一個好的數(shù)據(jù)庫的根本方法是先要分析和掌握屬性間的語義關(guān)聯(lián) , 然后再依據(jù)這些關(guān)聯(lián)得到相應(yīng)的設(shè)計方案。在理論研究和實際應(yīng)用中 , 人們發(fā)現(xiàn) , 屬性間的關(guān)聯(lián)表現(xiàn)為一個屬性子集對另一個屬性子集的”依賴”關(guān)系。按照屬性間的對應(yīng)情況能夠?qū)⑦@種依賴關(guān)系分為兩類 , 一類是”多對一”的依賴 , 一類是”一對多”的。 ”多對一”的依賴最為常見 , 研究結(jié)果也最為齊整

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論