數據庫系統管理課件(王嵐主編)第十一章.ppt_第1頁
數據庫系統管理課件(王嵐主編)第十一章.ppt_第2頁
數據庫系統管理課件(王嵐主編)第十一章.ppt_第3頁
數據庫系統管理課件(王嵐主編)第十一章.ppt_第4頁
數據庫系統管理課件(王嵐主編)第十一章.ppt_第5頁
已閱讀5頁,還剩65頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數據庫基礎 第十一章關系數據庫規范化理論 數據庫基礎 本章要點 本章主要討論關系數據庫規范化理論 討論一個好的關系模式的標準 以及如何將不好的關系模式轉換成好的關系模式 并能保證所得到的關系模式仍能表達原來的語義 數據庫基礎 第十一章關系數據庫規范化理論 數據庫設計是數據庫應用領域的主要研究課題 數據庫設計的任務是在給定的應用環境下 創建滿足用戶需求且性能良好的數據庫模式 建立數據庫及其應用系統 使之能有效地存儲和管理數據 滿足某公司或部門各類用戶業務的需求 數據庫基礎 第十一章關系數據庫規范化理論 數據庫設計需要理論指導 關系數據庫規范化理論就是數據庫設計的一個理論指南 規范化理論研究了關系模式中各屬性之間的依賴關系及其對關系模式性能的影響 探討 好 的關系模式應該具備的性質 以及達到 好 的關系模式的方法 規范化理論為我們提供了判斷關系模式好壞的理論標準 幫助我們預測可能出現的問題 是數據庫設計人員的有力工具 同時也使數據庫設計工作有了嚴格的理論基礎 數據庫基礎 第十一章關系數據庫規范化理論 本章主要討論關系數據庫規范化理論 討論一個好的關系模式的標準 以及如何將不好的關系模式轉換成好的關系模式 并能保證所得到的關系模式仍能表達原來的語義 數據庫設計是數據庫應用領域的主要研究課題 數據庫設計的任務是在給定的應用環境下 創建滿足用戶需求且性能良好的數據庫模式 建立數據庫及其應用系統 使之能有效地存儲和管理數據 滿足某公司或部門各類用戶業務的需求 數據庫基礎 第十一章關系數據庫規范化理論 數據庫設計需要理論指導 關系數據庫規范化理論就是數據庫設計的一個理論指南 規范化理論研究了關系模式中各屬性之間的依賴關系及其對關系模式性能的影響 探討 好 的關系模式應該具備的性質 以及達到 好 的關系模式的方法 規范化理論為我們提供了判斷關系模式好壞的理論標準 幫助我們預測可能出現的問題 是數據庫設計人員的有力工具 同時也使數據庫設計工作有了嚴格的理論基礎 數據庫基礎 第十一章關系數據庫規范化理論 本章主要討論關系數據庫規范化理論 討論一個好的關系模式的標準 以及如何將不好的關系模式轉換成好的關系模式 并能保證所得到的關系模式仍能表達原來的語義 數據庫基礎 第十一章關系數據庫規范化理論 11 1函數依賴11 2關系規范化11 3關系模式分解的準則 數據庫基礎 11 1函數依賴 數據的語義不僅表現為完整性約束 對關系模式的設計也提出了一定的要求 針對一個問題 如何構造一個合適的關系模式 應構造幾個關系模式 每個關系模式由哪些屬性組成等 這都是數據庫設計問題 確切地講是關系數據庫的邏輯設計問題 首先我們看一下 關系模式中各屬性之間的聯系 數據庫基礎 11 1函數依賴 11 1 1函數依賴的基本概念11 1 2一些術語和符號11 1 3為什么要討論函數依賴 數據庫基礎 11 1 1函數依賴的基本概念 在關系數據庫中 討論函數或函數依賴注重的是語義上的關系 x函數決定y 或y函數依賴于x可表示為 X Y根據以上討論可以寫出較直觀的函數依賴定義 即如果有一個關系模式R A1 A2 An X和Y為 A1 A2 An 的子集 那么對于關系R中的任意一個x值 都只有一個y值與之對應 則稱X函數決定Y 或Y函數依賴于X 數據庫基礎 11 1 1函數依賴的基本概念 例如 對學生關系模式Student Sno Sname Sdept Sage 有以下依賴關系Sno Sname Sno Sdept Sno Sage對學生選課關系模式SC Sno Cno Grade 有以下依賴關系 Sno Cno Grade 數據庫基礎 11 1 1函數依賴的基本概念 顯然 函數依賴討論的是屬性之間的依賴關系 它是語義范疇的概念 也就是說關系模式的屬性之間是否存在函數依賴只與語義有關 下面對函數依賴給出嚴格的形式化定義 設有關系模式R A1 A2 An r是R的任一具體關系 t1 t2是r中的任意兩個元組 如果由t1 X t2 X 可以推導出t1 Y t2 Y 則稱X函數決定Y 或Y函數依賴于X 記為X Y 數據庫基礎 11 1函數依賴 11 1 1函數依賴的基本概念11 1 2一些術語和符號11 1 3為什么要討論函數依賴 數據庫基礎 11 1 2一些術語和符號 下面給出在本章中經常使用的一些術語和符號 設有關系模式R A1 A2 An X和Y為 A1 A2 An 的子集 則有以下結論 1 如果X Y 但Y不包含于X 則稱X Y是非平凡的函數依賴 如不作特別說明 我們總是討論非平凡函數依賴 2 如果Y函數不依賴于X 則記為 3 如果X Y 則稱X稱為決定因子 數據庫基礎 11 1 2一些術語和符號 4 如果X Y 并且Y X 則記為 5 如果X Y 并且對于x的一個任意真子集X 都有 則稱Y完全函數依賴于X 記為 如果成立 則稱Y部分函數依賴于X 記為 6 如果X Y 非平凡函數依賴 并且 Y Z 則稱Z傳遞函數依賴于X 數據庫基礎 11 1 2一些術語和符號 例11 1假設有關系模式SC sno Sname Cno Grade 其中各屬性分別為 學號 姓名 課程號 成績 主碼為 sno Cno 則函數依賴關系有 Sno Sname姓名函數依賴于學號 sno Cno Sname姓名部分函數依賴于學號和課程號 sno Cno Grade成績完全函數依賴于學號和課程號 數據庫基礎 11 1 2一些術語和符號 例11 2假設有關系模式S Sno Sname Dept Dept master 其中各屬性分別為 學號 姓名 所在系和系主任 假設一個系只有一個主任 主碼為Sno 則函數依賴關系有 SnoSname姓名完全函數依賴于學號由于 SnoDept所在系完全函數依賴于學號DeptDept master系主任完全函數依賴于系系主任傳遞函數依賴于學號所以有 SnoDept master函數依賴是數據的重要性質 關系模式應能反映這些性質 數據庫基礎 11 1函數依賴 11 1 1函數依賴的基本概念11 1 2一些術語和符號11 1 3為什么要討論函數依賴 數據庫基礎 11 1 3為什么要討論函數依賴 討論屬性之間的關系和函數依賴有什么意義呢 讓我們通過例子看一下 假設有描述學生選課及住宿情況的關系模式 S L C Sno Sdept Sloc Cno Grade 其中各屬性分別為 學號 學生所在系 學生所住宿舍樓 課程號和考試成績 假設每個系的學生都住在一棟樓里 Sno Cno 為主碼 看一看這個關系模式存在什么問題 假設有如表11 1所示的數據 數據庫基礎 11 1 3為什么要討論函數依賴 表11 1S L C模式的數據示例 數據庫基礎 11 1 3為什么要討論函數依賴 從這個表中可以看出如下問題 數據冗余問題 在這個關系中 有關學生所在系和其所對應的宿舍樓的信息有冗余 因為一個系有多少個學生 這個系所對應的宿舍樓的信息就要重復存儲多少遍 數據更新問題 如果某一學生從計算機系轉到了信息系 那么不但要修改此學生的Sdept列的值 而且還要修改其Sloc列的值 從而使修改復雜化 數據庫基礎 11 1 3為什么要討論函數依賴 數據插入問題 如果某個學生還沒有選課 但已經有了Sdept乘lSloc信息 我們也不能將此學生的這些已知信息插入到數據庫中 因為Cno為空 而Cno為主屬性 不能為空 因此也就丟掉了該學生的其它基本信息 數據刪除問題 如果一個學生只選了一門課 而后來又不選了 則應該刪除此學生選此門課程的記錄 但由于這個學生只選了一門課 那么刪掉此學生的選課記錄的同時也刪掉了此學生的其它基本信息 數據庫基礎 11 1 3為什么要討論函數依賴 類似的問題我們統稱為操作異常 為什么會出現以上的操作異常現象呢 因為這個關系模式沒有設計好 其原因在于它的某些屬性之間存在著 不良 的函數依賴 如何改造這個關系模式并克服以上種種問題是我們所要解決的問題 也是我們討論函數依賴的原因 解決上述問題的方法就是進行模式分解 即把一個關系模式分解成兩個或多個關系模式 在分解的過程中消除那些 不良 的函數依賴 從而獲得好的關系模式 關于模式分解將在本章后邊介紹 數據庫基礎 第十一章關系數據庫規范化理論 11 1函數依賴11 2關系規范化11 3關系模式分解的準則 數據庫基礎 11 2關系規范化 11 2 1關系模式中的碼11 2 2范式 數據庫基礎 11 2 1關系模式中的碼 設用U表示關系模式R的屬性全集 即U A1 A2 An 用F表示關系模式R上的函數依賴集 則關系模式R可表示為R U F 1 候選碼設K為R U F 中的屬性或屬性組 若KU 則K為R的候選碼 K為決定R全部屬性值的最小屬性組 主碼 關系R U F 中可能有多個候選碼 則選其中一個作為主碼 全碼 候選碼為整個屬性組 主屬性與非主屬性 在R U F 中 包含在任一候選碼中的屬性稱為主屬性 不包含在任一候選碼中的屬性稱為非主屬性 數據庫基礎 11 2 1關系模式中的碼 例11 3SC Sno Cno Grade 其候選碼為 Sno Cno 也為主碼 則主屬性為 Sno和Cno Grade為非主屬性 數據庫基礎 11 2 1關系模式中的碼 例11 4R P W A 其中各屬性含義分別為 演奏者 作品和演出地點 其語義為 一個演奏者可演奏多個作品 某一作品可被多個演奏者演奏 同一演出地點不同演奏者的不同作品 其候選碼為 P W A 因為只有 演奏者 作品 演出地點 三者才能確定一場音樂會 我們稱全部屬性均為主碼的表為全碼表 數據庫基礎 11 2 1關系模式中的碼 2 外碼用于在關系表之間建立關聯的屬性 組 稱為為外碼 若R U F 的屬性 組 X X屬于U 是另一個關系S的主碼 則稱X為R的外碼 X必須先定義為S的主碼 數據庫基礎 11 2關系規范化 11 2 1關系模式中的碼11 2 2范式 數據庫基礎 11 2 2范式 我們在前面已經介紹了設計 不好 的關系模式所帶來的問題 本節將繼續討論 好 的關系模式應具備的性質 即關系規范化問題 關系數據庫中的關系要滿足一定的要求 若關系滿足不同程度要求就稱它屬于不同的范式 滿足最低要求的關系屬于第一范式 簡稱1NF FirstNormalForm 在第一范式中進一步滿足一些要求的關系屬于第二范式 簡稱2NF 依此類推 還有3NF BCNF 4NF 5NF 數據庫基礎 11 2 2范式 所謂 第幾范式 是表示關系模式滿足的條件 所以經常稱某一關系模式為第幾范式的關系模式 也可以把這個概念模式理解為符合某種條件的關系模式的集合 因此R為第二范式的關系模式也可以寫為R 2NF 數據庫基礎 11 2 2范式 對關系模式的屬性間的函數依賴加以不同的限制就形成了不同的范式 這些范式是遞進的 即如果一個表是1NF的 它比不是1NF的要好 同樣 2NF的表要比1NF的表好 使用這種方法的目的是從一個表或表的集合開始 逐步產生一個和初始集合等價的表的集合 指提供同樣的信息 范式越高 規范化的程度越高 關系模式就越好 規范化的理論首先由E FCodd于1971年提出 其目的是要設計 好的 關系數據庫模式 關系規范化實際就是對有問題 操作異常 的關系進行分解從而消除這些異常 數據庫基礎 11 2 2范式 1 第一范式每一個數據項都是不可再分的是第一范式的關系 2 第二范式如果R U F 1NF 并且R中的每個非主屬性都完全函數依賴于主碼 則R U F 2NF 數據庫基礎 11 2 2范式 從定義中可以看出 若某個1NF的關系的主碼只由一個列組成 那么這個關系就是2NF關系 但是 如果主碼是由多個屬性列共同構成的復合主碼 并且存在非主屬性對主屬性的部分函數依賴 則這個關系就不是2NF關系 數據庫基礎 11 2 2范式 例如 前面所示的S L C Sno Sdept Sloc Cno Grade 關系就不是2NF的 因為 Sno Cno 是主碼 而又有Sno Sdept 因此有 Sno Cno Sdept即存在非主碼屬性對主碼的部分函數依賴關系 所以此S L C關系不是2NF的 前面已經介紹過這個關系存在操作異常 而這些操作異常就是因為它存在部分函數依賴造成的 可以用模式分解的辦法將非2NF的關系模式分解為多個2NF的關系模式 數據庫基礎 11 2 2范式 S L C關系模式分解后的形式為 S L Sno Sdept Sloc 和S C Sno Cno Grade S L關系的主碼是 Sno 并且有SnoSdept SnoSloc 所以S L是2NF的 S C關系的主碼是 Sno Cno 并且有 Sno Cno Grade 因此S C也是2NF的 數據庫基礎 11 2 2范式 下面我們看一下分解完之后是否還存在問題 先討論S L表 首先 在這個關系模式中 描述多少個學生就會將每個系和其所在的宿舍樓重復描述多少遍 因此還存在數據冗余 其次 當新組建一個系時 如果此系還沒有招收學生 但已分配了宿舍樓 則無法將此系的信息插入到數據庫中 因為這時的學號為空 這是插入異常 由此我們看到 第二范式的表也可能存在操作異常情況 因此還要對此關系模式進行進一步的分解 數據庫基礎 11 2 211 2 2范式范式 3 第三范式如果R U F 2NF 并且所有非主屬性都不傳遞依賴于主碼 則R U F 3NF 從定義中可以看出 如果存在非主屬性對主碼的傳遞依賴 則相應的關系模式就不是3NF的 以關系模式S L Sno Sdept Sloc 為例 因為Sno Sdept Sdept Sloc所以SnoSloc 數據庫基礎 11 2 2范式 從前邊的定義中可以知道 當關系模式中存在傳遞函數依賴時 這個關系模式仍然有操作異常 因此還需要對其進行進一步的分解 S L分解后的關系模式為 S D Sno Sdept 主碼為Sno 和D L Sdept Sloc 主碼為Sdept 對S D 有SnoSdept 因此S D是3NF的 對D L 有SdeptSloc 因此S L也是3NF的 由于3NF關系模式中不存在非主碼屬性對主碼的部分依賴和傳遞依賴關系 因而在很大程度上消除了數據冗余和更新異常 因此在通常的數據庫設計中 一般要求要達到3NF 數據庫基礎 11 2 2范式 4 BCNFBCNF也叫Boyce Codd范式 它是3NF的進一步規范化 其限制條件更嚴格 我們首先分析一下3NF中存在的問題 在3NF的關系模式中可能存在能夠決定其它屬性取值的屬性組 而該屬性組非碼 例如 假設有關系模式CSZ city Street zip 其中各屬性分別代表城市 街道和郵政編碼 其語義為 城市和街道可以決定郵政編碼 郵政編碼可以決定城市 因此有 City Street Zip Zip City其候選碼為 city street 和 street zip 此關系模式中不存在非主屬性 因此它屬于3NF 數據庫基礎 11 2 2范式 現在我們看一下此模式存在的問題 假設取 City street 為主碼 則當插入數據時 如果沒有街道信息 則一個郵政編碼是哪個城市的郵政編碼這樣的信息就無法保存到數據庫中 因為Street不能為空 由此可見 即使是3NF的表 也有可能存在操作異常 操作異常的原因是存在Zip City Zip是決定因子 但Zip不是碼 數據庫基礎 11 2 2范式 在3NF關系模式中之所以存在操作異常 主要是存在主屬性對非碼的函數依賴 在這種情況下 產生了BCNF 若關系模式R 1NF 且能決定其它屬性取值的屬性 組 必定包含碼 則R BCNF 可以將該定義理解為 如果一個關系的每個決定因子都是候選碼 則其是BCNF 或者說 如果R 3NF 并且不存在主屬性對非碼的函數依賴 則其是BCNF 數據庫基礎 11 2 2范式 將CSZ分解分解為 ZC Zip City SZ Street Zip 這樣就去掉了決定因子不包含碼的情況 它們都是BCNF的關系模式了 如果一個模型中的所有關系模式都屬于BCNF 那么在函數依賴范疇內 就實現了徹底的分解 消除了操作異常 也就是說 在函數依賴的范疇 BCNF達到了最高的規范化程度 1NF 2NF 3NF和 BCNF的相互關系是 BCNF3NF2NF1NF 數據庫基礎 第十一章關系數據庫規范化理論 11 1函數依賴11 2關系規范化11 3關系模式分解的準則 數據庫基礎 11 3關系模式分解的準則 前面已經介紹過 為了提高規范化程度 通常將范式程度低的關系模式分解為若干個范式程度高的關系模式 每個規范化的關系應該只有一個主題 如果某個關系描述了兩個或多個主題 就應該將它分解為多個關系 使每個關系只描述一個主題 當我們發現一個關系存在操作異常時 就應該把關系分解為兩個或多個單獨的關系 使每個關系只描述一個主題 從而消除這些異常 數據庫基礎 11 3關系模式分解的準則 從而消除這些異常 規范化的方法是進行模式分解 但分解后產生的模式應與原模式等價 即模式分解必須遵守一定的準則 不能表面上消除了操作異常現象 卻留下了其它的問題 模式分解要滿足以下標準 1 模式分解具有無損連接性 2 模式分解能夠保持函數依賴 數據庫基礎 11 3關系模式分解的準則 無損連接是指分解后的關系通過自然連接可以恢復成原來的關系 即通過自然連接得到的關系與原來的關系相比 既不多出信息 又不丟失信息 保持函數依賴的分解是指在模式的分解過程中函數依賴不能丟失的特性 即模式分解不能破壞原來的語義 為了得到更高范式的關系而進行的模式分解是否總能既保證無損連接 又保持函數依賴呢 答案是否定的 數據庫基礎 11 3關系模式分解的準則 那么應如何對關系模式進行分解呢 在不同情況下 同一個關系模式可能有多種分解方案 例如 對于關系模式S D L Sno Dept Loc 其中各屬性含義分別為學號 系名和宿舍樓號 假設系名可以決定宿舍樓號 有如下函數依賴 Sno Dept Dept Loc 數據庫基礎 11 3關系模式分解的準則 顯然這個關系模式不是第三范式的 此關系模式至少可以有三種分解方案 分別為 方案1 S L Sno Loc D L Dept Loc 方案2 S D Sno Dept S L Sno Loc 方案3 S D Sno Dept D L Dept Loc 數據庫基礎 11 3關系模式分解的準則 使用這三種分解方案得到的關系模式都是第三范式的 那么如何比較這三種方案的好壞呢 由此我們想到 在將一個關系模式分解為多個關系模式時除了提高規范化程度之外 還要考慮其它一些因素 數據庫基礎 11 3關系模式分解的準則 將一個關系模式R分解為若干個關系模式R1 R2 Rn 其中U U1 U2 Un Fi為F在Ui上的投影 這意味著相應地將存儲在一張二維表r中的數據分散到了若干個二維表r1 r2 rn中 ri是r在屬性組Ui上的投影 我們當然希望這樣的分解不丟失信息 也就是說 對關系r1 r2 rn進行自然連接運算后能重新得到關系r的所有信息 數據庫基礎 11 3關系模式分解的準則 事實上 要想在關系r投影r1 r2 rn時不會丟失信息 關鍵是對r1 r2 rn做自然連接時可能產生一些r中原來沒有的元組 從而無法區別哪些元組是r中原來有的 即數據庫中應該存在的數據 哪些是不應該有的 從這個意義上說就丟失了信息 仍以關系模式S D L Sno Dept Loc 為例 按三種分解方案得到的關系模式是否滿足分解要求呢 我們對此進行一些分析 數據庫基礎 11 3關系模式分解的準則 假設在某一時刻 此關系模式的數據如表11 2所示 此關系用r表示 表11 2關系r 數據庫基礎 11 3關系模式分解的準則 若按方案1將關系模式S D L分解為S L Sno Loc 和D L Dept Loc 則將S D L投影到S L和D L的屬性上 得到關系r11和r12 如表11 3和11 4所示 表11 3關系r11 數據庫基礎 11 3關系模式分解的準則 表11 4關系r12 數據庫基礎 11 3關系模式分解的準則 將r11和r12進行自然連接r11 r12得到r 如表11 5所示 表11 5關系r 數據庫基礎 11 3關系模式分解的準則 r 中的元組 S01 D3 L1 和 S04 Dl L1 不是原來r中的元組 因此 我們無法知道原來的r中到底有哪些元組 這當然是我們所不希望的 所以 將關系模式R分解為關系模式R1 R2 Rn時 若對于R中的任何一個可能的r 都有r r1 r2 rn 即r在R1 R2 Rn上的投影的自然連接等于r 則稱關系模式R的分解具有無損連接性 分解方案1不具有無損連接性 因此不是一個好的分解方法 數據庫基礎 11 3關系模式分解的準則 再分析方案2 將S D L投影到S D S L的屬性上 得到關系r21和r22 如表11 6和表11 7所示 表11 6關系r21 數據庫基礎 11 3關系模式分解的準則 表11 7關系r22 數據庫基礎 11 3關系模式分解的準則 將r21 r22做自然連接 得到r 如表11 8所示 表11 8關系r 數據庫基礎 11 3關系模式分解的準則 我們看到 分解后的關系模式經過自然連接后恢復成了原來的關系 因此分解方案2具有無損連接性 現在我們對這個分解做進一步的分析 假設學生S03從D2系轉到了D3系 于是我們需要在r21中將元組 S03 D2 改為 S03 D3 同時還需要在r22中將元組 S03 L2 改為 S03 L1 如果這兩個修改沒有同時進行 則數據庫中就會出現不一致信息 這是由于這樣分解得到的兩個關系模式沒有保持原來的函數依賴關系造成的 原有的函數依賴Dept Loc在分解后即沒有投影到S D中 也沒有投影到S L中 而是跨在了兩個關系模式上 因此分解方案2沒有保持原有的函數依賴關系 它也不是好的分解方法 數據庫基礎 11 3關系模式分解的準則 我們看分解方案3 經過分析可以看出分解方案3既滿足無損連接性 又保持了原有的函數依賴關系 因此它是一個好的分解方法 總結以上分析可以看出 分解具有無損連接性和分解保

溫馨提示

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

評論

0/150

提交評論