已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 數(shù)據(jù)庫基礎(chǔ) 本章要點(diǎn) 本章主要討論關(guān)系數(shù)據(jù)庫規(guī)范化理論 討論一個(gè)好的關(guān)系模式的標(biāo)準(zhǔn) 以及如何將不好的關(guān)系模式轉(zhuǎn)換成好的關(guān)系模式 并能保證所得到的關(guān)系模式仍能表達(dá)原來的語義 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 數(shù)據(jù)庫設(shè)計(jì)是數(shù)據(jù)庫應(yīng)用領(lǐng)域的主要研究課題 數(shù)據(jù)庫設(shè)計(jì)的任務(wù)是在給定的應(yīng)用環(huán)境下 創(chuàng)建滿足用戶需求且性能良好的數(shù)據(jù)庫模式 建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng) 使之能有效地存儲和管理數(shù)據(jù) 滿足某公司或部門各類用戶業(yè)務(wù)的需求 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 數(shù)據(jù)庫設(shè)計(jì)需要理論指導(dǎo) 關(guān)系數(shù)據(jù)庫規(guī)范化理論就是數(shù)據(jù)庫設(shè)計(jì)的一個(gè)理論指南 規(guī)范化理論研究了關(guān)系模式中各屬性之間的依賴關(guān)系及其對關(guān)系模式性能的影響 探討 好 的關(guān)系模式應(yīng)該具備的性質(zhì) 以及達(dá)到 好 的關(guān)系模式的方法 規(guī)范化理論為我們提供了判斷關(guān)系模式好壞的理論標(biāo)準(zhǔn) 幫助我們預(yù)測可能出現(xiàn)的問題 是數(shù)據(jù)庫設(shè)計(jì)人員的有力工具 同時(shí)也使數(shù)據(jù)庫設(shè)計(jì)工作有了嚴(yán)格的理論基礎(chǔ) 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 本章主要討論關(guān)系數(shù)據(jù)庫規(guī)范化理論 討論一個(gè)好的關(guān)系模式的標(biāo)準(zhǔn) 以及如何將不好的關(guān)系模式轉(zhuǎn)換成好的關(guān)系模式 并能保證所得到的關(guān)系模式仍能表達(dá)原來的語義 數(shù)據(jù)庫設(shè)計(jì)是數(shù)據(jù)庫應(yīng)用領(lǐng)域的主要研究課題 數(shù)據(jù)庫設(shè)計(jì)的任務(wù)是在給定的應(yīng)用環(huán)境下 創(chuàng)建滿足用戶需求且性能良好的數(shù)據(jù)庫模式 建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng) 使之能有效地存儲和管理數(shù)據(jù) 滿足某公司或部門各類用戶業(yè)務(wù)的需求 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 數(shù)據(jù)庫設(shè)計(jì)需要理論指導(dǎo) 關(guān)系數(shù)據(jù)庫規(guī)范化理論就是數(shù)據(jù)庫設(shè)計(jì)的一個(gè)理論指南 規(guī)范化理論研究了關(guān)系模式中各屬性之間的依賴關(guān)系及其對關(guān)系模式性能的影響 探討 好 的關(guān)系模式應(yīng)該具備的性質(zhì) 以及達(dá)到 好 的關(guān)系模式的方法 規(guī)范化理論為我們提供了判斷關(guān)系模式好壞的理論標(biāo)準(zhǔn) 幫助我們預(yù)測可能出現(xiàn)的問題 是數(shù)據(jù)庫設(shè)計(jì)人員的有力工具 同時(shí)也使數(shù)據(jù)庫設(shè)計(jì)工作有了嚴(yán)格的理論基礎(chǔ) 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 本章主要討論關(guān)系數(shù)據(jù)庫規(guī)范化理論 討論一個(gè)好的關(guān)系模式的標(biāo)準(zhǔn) 以及如何將不好的關(guān)系模式轉(zhuǎn)換成好的關(guān)系模式 并能保證所得到的關(guān)系模式仍能表達(dá)原來的語義 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 11 1函數(shù)依賴11 2關(guān)系規(guī)范化11 3關(guān)系模式分解的準(zhǔn)則 數(shù)據(jù)庫基礎(chǔ) 11 1函數(shù)依賴 數(shù)據(jù)的語義不僅表現(xiàn)為完整性約束 對關(guān)系模式的設(shè)計(jì)也提出了一定的要求 針對一個(gè)問題 如何構(gòu)造一個(gè)合適的關(guān)系模式 應(yīng)構(gòu)造幾個(gè)關(guān)系模式 每個(gè)關(guān)系模式由哪些屬性組成等 這都是數(shù)據(jù)庫設(shè)計(jì)問題 確切地講是關(guān)系數(shù)據(jù)庫的邏輯設(shè)計(jì)問題 首先我們看一下 關(guān)系模式中各屬性之間的聯(lián)系 數(shù)據(jù)庫基礎(chǔ) 11 1函數(shù)依賴 11 1 1函數(shù)依賴的基本概念11 1 2一些術(shù)語和符號11 1 3為什么要討論函數(shù)依賴 數(shù)據(jù)庫基礎(chǔ) 11 1 1函數(shù)依賴的基本概念 在關(guān)系數(shù)據(jù)庫中 討論函數(shù)或函數(shù)依賴注重的是語義上的關(guān)系 x函數(shù)決定y 或y函數(shù)依賴于x可表示為 X Y根據(jù)以上討論可以寫出較直觀的函數(shù)依賴定義 即如果有一個(gè)關(guān)系模式R A1 A2 An X和Y為 A1 A2 An 的子集 那么對于關(guān)系R中的任意一個(gè)x值 都只有一個(gè)y值與之對應(yīng) 則稱X函數(shù)決定Y 或Y函數(shù)依賴于X 數(shù)據(jù)庫基礎(chǔ) 11 1 1函數(shù)依賴的基本概念 例如 對學(xué)生關(guān)系模式Student Sno Sname Sdept Sage 有以下依賴關(guān)系Sno Sname Sno Sdept Sno Sage對學(xué)生選課關(guān)系模式SC Sno Cno Grade 有以下依賴關(guān)系 Sno Cno Grade 數(shù)據(jù)庫基礎(chǔ) 11 1 1函數(shù)依賴的基本概念 顯然 函數(shù)依賴討論的是屬性之間的依賴關(guān)系 它是語義范疇的概念 也就是說關(guān)系模式的屬性之間是否存在函數(shù)依賴只與語義有關(guān) 下面對函數(shù)依賴給出嚴(yán)格的形式化定義 設(shè)有關(guān)系模式R A1 A2 An r是R的任一具體關(guān)系 t1 t2是r中的任意兩個(gè)元組 如果由t1 X t2 X 可以推導(dǎo)出t1 Y t2 Y 則稱X函數(shù)決定Y 或Y函數(shù)依賴于X 記為X Y 數(shù)據(jù)庫基礎(chǔ) 11 1函數(shù)依賴 11 1 1函數(shù)依賴的基本概念11 1 2一些術(shù)語和符號11 1 3為什么要討論函數(shù)依賴 數(shù)據(jù)庫基礎(chǔ) 11 1 2一些術(shù)語和符號 下面給出在本章中經(jīng)常使用的一些術(shù)語和符號 設(shè)有關(guān)系模式R A1 A2 An X和Y為 A1 A2 An 的子集 則有以下結(jié)論 1 如果X Y 但Y不包含于X 則稱X Y是非平凡的函數(shù)依賴 如不作特別說明 我們總是討論非平凡函數(shù)依賴 2 如果Y函數(shù)不依賴于X 則記為 3 如果X Y 則稱X稱為決定因子 數(shù)據(jù)庫基礎(chǔ) 11 1 2一些術(shù)語和符號 4 如果X Y 并且Y X 則記為 5 如果X Y 并且對于x的一個(gè)任意真子集X 都有 則稱Y完全函數(shù)依賴于X 記為 如果成立 則稱Y部分函數(shù)依賴于X 記為 6 如果X Y 非平凡函數(shù)依賴 并且 Y Z 則稱Z傳遞函數(shù)依賴于X 數(shù)據(jù)庫基礎(chǔ) 11 1 2一些術(shù)語和符號 例11 1假設(shè)有關(guān)系模式SC sno Sname Cno Grade 其中各屬性分別為 學(xué)號 姓名 課程號 成績 主碼為 sno Cno 則函數(shù)依賴關(guān)系有 Sno Sname姓名函數(shù)依賴于學(xué)號 sno Cno Sname姓名部分函數(shù)依賴于學(xué)號和課程號 sno Cno Grade成績完全函數(shù)依賴于學(xué)號和課程號 數(shù)據(jù)庫基礎(chǔ) 11 1 2一些術(shù)語和符號 例11 2假設(shè)有關(guān)系模式S Sno Sname Dept Dept master 其中各屬性分別為 學(xué)號 姓名 所在系和系主任 假設(shè)一個(gè)系只有一個(gè)主任 主碼為Sno 則函數(shù)依賴關(guān)系有 SnoSname姓名完全函數(shù)依賴于學(xué)號由于 SnoDept所在系完全函數(shù)依賴于學(xué)號DeptDept master系主任完全函數(shù)依賴于系系主任傳遞函數(shù)依賴于學(xué)號所以有 SnoDept master函數(shù)依賴是數(shù)據(jù)的重要性質(zhì) 關(guān)系模式應(yīng)能反映這些性質(zhì) 數(shù)據(jù)庫基礎(chǔ) 11 1函數(shù)依賴 11 1 1函數(shù)依賴的基本概念11 1 2一些術(shù)語和符號11 1 3為什么要討論函數(shù)依賴 數(shù)據(jù)庫基礎(chǔ) 11 1 3為什么要討論函數(shù)依賴 討論屬性之間的關(guān)系和函數(shù)依賴有什么意義呢 讓我們通過例子看一下 假設(shè)有描述學(xué)生選課及住宿情況的關(guān)系模式 S L C Sno Sdept Sloc Cno Grade 其中各屬性分別為 學(xué)號 學(xué)生所在系 學(xué)生所住宿舍樓 課程號和考試成績 假設(shè)每個(gè)系的學(xué)生都住在一棟樓里 Sno Cno 為主碼 看一看這個(gè)關(guān)系模式存在什么問題 假設(shè)有如表11 1所示的數(shù)據(jù) 數(shù)據(jù)庫基礎(chǔ) 11 1 3為什么要討論函數(shù)依賴 表11 1S L C模式的數(shù)據(jù)示例 數(shù)據(jù)庫基礎(chǔ) 11 1 3為什么要討論函數(shù)依賴 從這個(gè)表中可以看出如下問題 數(shù)據(jù)冗余問題 在這個(gè)關(guān)系中 有關(guān)學(xué)生所在系和其所對應(yīng)的宿舍樓的信息有冗余 因?yàn)橐粋€(gè)系有多少個(gè)學(xué)生 這個(gè)系所對應(yīng)的宿舍樓的信息就要重復(fù)存儲多少遍 數(shù)據(jù)更新問題 如果某一學(xué)生從計(jì)算機(jī)系轉(zhuǎn)到了信息系 那么不但要修改此學(xué)生的Sdept列的值 而且還要修改其Sloc列的值 從而使修改復(fù)雜化 數(shù)據(jù)庫基礎(chǔ) 11 1 3為什么要討論函數(shù)依賴 數(shù)據(jù)插入問題 如果某個(gè)學(xué)生還沒有選課 但已經(jīng)有了Sdept乘lSloc信息 我們也不能將此學(xué)生的這些已知信息插入到數(shù)據(jù)庫中 因?yàn)镃no為空 而Cno為主屬性 不能為空 因此也就丟掉了該學(xué)生的其它基本信息 數(shù)據(jù)刪除問題 如果一個(gè)學(xué)生只選了一門課 而后來又不選了 則應(yīng)該刪除此學(xué)生選此門課程的記錄 但由于這個(gè)學(xué)生只選了一門課 那么刪掉此學(xué)生的選課記錄的同時(shí)也刪掉了此學(xué)生的其它基本信息 數(shù)據(jù)庫基礎(chǔ) 11 1 3為什么要討論函數(shù)依賴 類似的問題我們統(tǒng)稱為操作異常 為什么會出現(xiàn)以上的操作異?,F(xiàn)象呢 因?yàn)檫@個(gè)關(guān)系模式?jīng)]有設(shè)計(jì)好 其原因在于它的某些屬性之間存在著 不良 的函數(shù)依賴 如何改造這個(gè)關(guān)系模式并克服以上種種問題是我們所要解決的問題 也是我們討論函數(shù)依賴的原因 解決上述問題的方法就是進(jìn)行模式分解 即把一個(gè)關(guān)系模式分解成兩個(gè)或多個(gè)關(guān)系模式 在分解的過程中消除那些 不良 的函數(shù)依賴 從而獲得好的關(guān)系模式 關(guān)于模式分解將在本章后邊介紹 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 11 1函數(shù)依賴11 2關(guān)系規(guī)范化11 3關(guān)系模式分解的準(zhǔn)則 數(shù)據(jù)庫基礎(chǔ) 11 2關(guān)系規(guī)范化 11 2 1關(guān)系模式中的碼11 2 2范式 數(shù)據(jù)庫基礎(chǔ) 11 2 1關(guān)系模式中的碼 設(shè)用U表示關(guān)系模式R的屬性全集 即U A1 A2 An 用F表示關(guān)系模式R上的函數(shù)依賴集 則關(guān)系模式R可表示為R U F 1 候選碼設(shè)K為R U F 中的屬性或?qū)傩越M 若KU 則K為R的候選碼 K為決定R全部屬性值的最小屬性組 主碼 關(guān)系R U F 中可能有多個(gè)候選碼 則選其中一個(gè)作為主碼 全碼 候選碼為整個(gè)屬性組 主屬性與非主屬性 在R U F 中 包含在任一候選碼中的屬性稱為主屬性 不包含在任一候選碼中的屬性稱為非主屬性 數(shù)據(jù)庫基礎(chǔ) 11 2 1關(guān)系模式中的碼 例11 3SC Sno Cno Grade 其候選碼為 Sno Cno 也為主碼 則主屬性為 Sno和Cno Grade為非主屬性 數(shù)據(jù)庫基礎(chǔ) 11 2 1關(guān)系模式中的碼 例11 4R P W A 其中各屬性含義分別為 演奏者 作品和演出地點(diǎn) 其語義為 一個(gè)演奏者可演奏多個(gè)作品 某一作品可被多個(gè)演奏者演奏 同一演出地點(diǎn)不同演奏者的不同作品 其候選碼為 P W A 因?yàn)橹挥?演奏者 作品 演出地點(diǎn) 三者才能確定一場音樂會 我們稱全部屬性均為主碼的表為全碼表 數(shù)據(jù)庫基礎(chǔ) 11 2 1關(guān)系模式中的碼 2 外碼用于在關(guān)系表之間建立關(guān)聯(lián)的屬性 組 稱為為外碼 若R U F 的屬性 組 X X屬于U 是另一個(gè)關(guān)系S的主碼 則稱X為R的外碼 X必須先定義為S的主碼 數(shù)據(jù)庫基礎(chǔ) 11 2關(guān)系規(guī)范化 11 2 1關(guān)系模式中的碼11 2 2范式 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 我們在前面已經(jīng)介紹了設(shè)計(jì) 不好 的關(guān)系模式所帶來的問題 本節(jié)將繼續(xù)討論 好 的關(guān)系模式應(yīng)具備的性質(zhì) 即關(guān)系規(guī)范化問題 關(guān)系數(shù)據(jù)庫中的關(guān)系要滿足一定的要求 若關(guān)系滿足不同程度要求就稱它屬于不同的范式 滿足最低要求的關(guān)系屬于第一范式 簡稱1NF FirstNormalForm 在第一范式中進(jìn)一步滿足一些要求的關(guān)系屬于第二范式 簡稱2NF 依此類推 還有3NF BCNF 4NF 5NF 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 所謂 第幾范式 是表示關(guān)系模式滿足的條件 所以經(jīng)常稱某一關(guān)系模式為第幾范式的關(guān)系模式 也可以把這個(gè)概念模式理解為符合某種條件的關(guān)系模式的集合 因此R為第二范式的關(guān)系模式也可以寫為R 2NF 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 對關(guān)系模式的屬性間的函數(shù)依賴加以不同的限制就形成了不同的范式 這些范式是遞進(jìn)的 即如果一個(gè)表是1NF的 它比不是1NF的要好 同樣 2NF的表要比1NF的表好 使用這種方法的目的是從一個(gè)表或表的集合開始 逐步產(chǎn)生一個(gè)和初始集合等價(jià)的表的集合 指提供同樣的信息 范式越高 規(guī)范化的程度越高 關(guān)系模式就越好 規(guī)范化的理論首先由E FCodd于1971年提出 其目的是要設(shè)計(jì) 好的 關(guān)系數(shù)據(jù)庫模式 關(guān)系規(guī)范化實(shí)際就是對有問題 操作異常 的關(guān)系進(jìn)行分解從而消除這些異常 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 1 第一范式每一個(gè)數(shù)據(jù)項(xiàng)都是不可再分的是第一范式的關(guān)系 2 第二范式如果R U F 1NF 并且R中的每個(gè)非主屬性都完全函數(shù)依賴于主碼 則R U F 2NF 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 從定義中可以看出 若某個(gè)1NF的關(guān)系的主碼只由一個(gè)列組成 那么這個(gè)關(guān)系就是2NF關(guān)系 但是 如果主碼是由多個(gè)屬性列共同構(gòu)成的復(fù)合主碼 并且存在非主屬性對主屬性的部分函數(shù)依賴 則這個(gè)關(guān)系就不是2NF關(guān)系 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 例如 前面所示的S L C Sno Sdept Sloc Cno Grade 關(guān)系就不是2NF的 因?yàn)?Sno Cno 是主碼 而又有Sno Sdept 因此有 Sno Cno Sdept即存在非主碼屬性對主碼的部分函數(shù)依賴關(guān)系 所以此S L C關(guān)系不是2NF的 前面已經(jīng)介紹過這個(gè)關(guān)系存在操作異常 而這些操作異常就是因?yàn)樗嬖诓糠趾瘮?shù)依賴造成的 可以用模式分解的辦法將非2NF的關(guān)系模式分解為多個(gè)2NF的關(guān)系模式 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 S L C關(guān)系模式分解后的形式為 S L Sno Sdept Sloc 和S C Sno Cno Grade S L關(guān)系的主碼是 Sno 并且有SnoSdept SnoSloc 所以S L是2NF的 S C關(guān)系的主碼是 Sno Cno 并且有 Sno Cno Grade 因此S C也是2NF的 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 下面我們看一下分解完之后是否還存在問題 先討論S L表 首先 在這個(gè)關(guān)系模式中 描述多少個(gè)學(xué)生就會將每個(gè)系和其所在的宿舍樓重復(fù)描述多少遍 因此還存在數(shù)據(jù)冗余 其次 當(dāng)新組建一個(gè)系時(shí) 如果此系還沒有招收學(xué)生 但已分配了宿舍樓 則無法將此系的信息插入到數(shù)據(jù)庫中 因?yàn)檫@時(shí)的學(xué)號為空 這是插入異常 由此我們看到 第二范式的表也可能存在操作異常情況 因此還要對此關(guān)系模式進(jìn)行進(jìn)一步的分解 數(shù)據(jù)庫基礎(chǔ) 11 2 211 2 2范式范式 3 第三范式如果R U F 2NF 并且所有非主屬性都不傳遞依賴于主碼 則R U F 3NF 從定義中可以看出 如果存在非主屬性對主碼的傳遞依賴 則相應(yīng)的關(guān)系模式就不是3NF的 以關(guān)系模式S L Sno Sdept Sloc 為例 因?yàn)镾no Sdept Sdept Sloc所以SnoSloc 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 從前邊的定義中可以知道 當(dāng)關(guān)系模式中存在傳遞函數(shù)依賴時(shí) 這個(gè)關(guān)系模式仍然有操作異常 因此還需要對其進(jìn)行進(jìn)一步的分解 S L分解后的關(guān)系模式為 S D Sno Sdept 主碼為Sno 和D L Sdept Sloc 主碼為Sdept 對S D 有SnoSdept 因此S D是3NF的 對D L 有SdeptSloc 因此S L也是3NF的 由于3NF關(guān)系模式中不存在非主碼屬性對主碼的部分依賴和傳遞依賴關(guān)系 因而在很大程度上消除了數(shù)據(jù)冗余和更新異常 因此在通常的數(shù)據(jù)庫設(shè)計(jì)中 一般要求要達(dá)到3NF 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 4 BCNFBCNF也叫Boyce Codd范式 它是3NF的進(jìn)一步規(guī)范化 其限制條件更嚴(yán)格 我們首先分析一下3NF中存在的問題 在3NF的關(guān)系模式中可能存在能夠決定其它屬性取值的屬性組 而該屬性組非碼 例如 假設(shè)有關(guān)系模式CSZ city Street zip 其中各屬性分別代表城市 街道和郵政編碼 其語義為 城市和街道可以決定郵政編碼 郵政編碼可以決定城市 因此有 City Street Zip Zip City其候選碼為 city street 和 street zip 此關(guān)系模式中不存在非主屬性 因此它屬于3NF 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 現(xiàn)在我們看一下此模式存在的問題 假設(shè)取 City street 為主碼 則當(dāng)插入數(shù)據(jù)時(shí) 如果沒有街道信息 則一個(gè)郵政編碼是哪個(gè)城市的郵政編碼這樣的信息就無法保存到數(shù)據(jù)庫中 因?yàn)镾treet不能為空 由此可見 即使是3NF的表 也有可能存在操作異常 操作異常的原因是存在Zip City Zip是決定因子 但Zip不是碼 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 在3NF關(guān)系模式中之所以存在操作異常 主要是存在主屬性對非碼的函數(shù)依賴 在這種情況下 產(chǎn)生了BCNF 若關(guān)系模式R 1NF 且能決定其它屬性取值的屬性 組 必定包含碼 則R BCNF 可以將該定義理解為 如果一個(gè)關(guān)系的每個(gè)決定因子都是候選碼 則其是BCNF 或者說 如果R 3NF 并且不存在主屬性對非碼的函數(shù)依賴 則其是BCNF 數(shù)據(jù)庫基礎(chǔ) 11 2 2范式 將CSZ分解分解為 ZC Zip City SZ Street Zip 這樣就去掉了決定因子不包含碼的情況 它們都是BCNF的關(guān)系模式了 如果一個(gè)模型中的所有關(guān)系模式都屬于BCNF 那么在函數(shù)依賴范疇內(nèi) 就實(shí)現(xiàn)了徹底的分解 消除了操作異常 也就是說 在函數(shù)依賴的范疇 BCNF達(dá)到了最高的規(guī)范化程度 1NF 2NF 3NF和 BCNF的相互關(guān)系是 BCNF3NF2NF1NF 數(shù)據(jù)庫基礎(chǔ) 第十一章關(guān)系數(shù)據(jù)庫規(guī)范化理論 11 1函數(shù)依賴11 2關(guān)系規(guī)范化11 3關(guān)系模式分解的準(zhǔn)則 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 前面已經(jīng)介紹過 為了提高規(guī)范化程度 通常將范式程度低的關(guān)系模式分解為若干個(gè)范式程度高的關(guān)系模式 每個(gè)規(guī)范化的關(guān)系應(yīng)該只有一個(gè)主題 如果某個(gè)關(guān)系描述了兩個(gè)或多個(gè)主題 就應(yīng)該將它分解為多個(gè)關(guān)系 使每個(gè)關(guān)系只描述一個(gè)主題 當(dāng)我們發(fā)現(xiàn)一個(gè)關(guān)系存在操作異常時(shí) 就應(yīng)該把關(guān)系分解為兩個(gè)或多個(gè)單獨(dú)的關(guān)系 使每個(gè)關(guān)系只描述一個(gè)主題 從而消除這些異常 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 從而消除這些異常 規(guī)范化的方法是進(jìn)行模式分解 但分解后產(chǎn)生的模式應(yīng)與原模式等價(jià) 即模式分解必須遵守一定的準(zhǔn)則 不能表面上消除了操作異?,F(xiàn)象 卻留下了其它的問題 模式分解要滿足以下標(biāo)準(zhǔn) 1 模式分解具有無損連接性 2 模式分解能夠保持函數(shù)依賴 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 無損連接是指分解后的關(guān)系通過自然連接可以恢復(fù)成原來的關(guān)系 即通過自然連接得到的關(guān)系與原來的關(guān)系相比 既不多出信息 又不丟失信息 保持函數(shù)依賴的分解是指在模式的分解過程中函數(shù)依賴不能丟失的特性 即模式分解不能破壞原來的語義 為了得到更高范式的關(guān)系而進(jìn)行的模式分解是否總能既保證無損連接 又保持函數(shù)依賴呢 答案是否定的 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 那么應(yīng)如何對關(guān)系模式進(jìn)行分解呢 在不同情況下 同一個(gè)關(guān)系模式可能有多種分解方案 例如 對于關(guān)系模式S D L Sno Dept Loc 其中各屬性含義分別為學(xué)號 系名和宿舍樓號 假設(shè)系名可以決定宿舍樓號 有如下函數(shù)依賴 Sno Dept Dept Loc 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 顯然這個(gè)關(guān)系模式不是第三范式的 此關(guān)系模式至少可以有三種分解方案 分別為 方案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 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 使用這三種分解方案得到的關(guān)系模式都是第三范式的 那么如何比較這三種方案的好壞呢 由此我們想到 在將一個(gè)關(guān)系模式分解為多個(gè)關(guān)系模式時(shí)除了提高規(guī)范化程度之外 還要考慮其它一些因素 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 將一個(gè)關(guān)系模式R分解為若干個(gè)關(guān)系模式R1 R2 Rn 其中U U1 U2 Un Fi為F在Ui上的投影 這意味著相應(yīng)地將存儲在一張二維表r中的數(shù)據(jù)分散到了若干個(gè)二維表r1 r2 rn中 ri是r在屬性組Ui上的投影 我們當(dāng)然希望這樣的分解不丟失信息 也就是說 對關(guān)系r1 r2 rn進(jìn)行自然連接運(yùn)算后能重新得到關(guān)系r的所有信息 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 事實(shí)上 要想在關(guān)系r投影r1 r2 rn時(shí)不會丟失信息 關(guān)鍵是對r1 r2 rn做自然連接時(shí)可能產(chǎn)生一些r中原來沒有的元組 從而無法區(qū)別哪些元組是r中原來有的 即數(shù)據(jù)庫中應(yīng)該存在的數(shù)據(jù) 哪些是不應(yīng)該有的 從這個(gè)意義上說就丟失了信息 仍以關(guān)系模式S D L Sno Dept Loc 為例 按三種分解方案得到的關(guān)系模式是否滿足分解要求呢 我們對此進(jìn)行一些分析 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 假設(shè)在某一時(shí)刻 此關(guān)系模式的數(shù)據(jù)如表11 2所示 此關(guān)系用r表示 表11 2關(guān)系r 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 若按方案1將關(guān)系模式S D L分解為S L Sno Loc 和D L Dept Loc 則將S D L投影到S L和D L的屬性上 得到關(guān)系r11和r12 如表11 3和11 4所示 表11 3關(guān)系r11 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 表11 4關(guān)系r12 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 將r11和r12進(jìn)行自然連接r11 r12得到r 如表11 5所示 表11 5關(guān)系r 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 r 中的元組 S01 D3 L1 和 S04 Dl L1 不是原來r中的元組 因此 我們無法知道原來的r中到底有哪些元組 這當(dāng)然是我們所不希望的 所以 將關(guān)系模式R分解為關(guān)系模式R1 R2 Rn時(shí) 若對于R中的任何一個(gè)可能的r 都有r r1 r2 rn 即r在R1 R2 Rn上的投影的自然連接等于r 則稱關(guān)系模式R的分解具有無損連接性 分解方案1不具有無損連接性 因此不是一個(gè)好的分解方法 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 再分析方案2 將S D L投影到S D S L的屬性上 得到關(guān)系r21和r22 如表11 6和表11 7所示 表11 6關(guān)系r21 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 表11 7關(guān)系r22 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 將r21 r22做自然連接 得到r 如表11 8所示 表11 8關(guān)系r 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 我們看到 分解后的關(guān)系模式經(jīng)過自然連接后恢復(fù)成了原來的關(guān)系 因此分解方案2具有無損連接性 現(xiàn)在我們對這個(gè)分解做進(jìn)一步的分析 假設(shè)學(xué)生S03從D2系轉(zhuǎn)到了D3系 于是我們需要在r21中將元組 S03 D2 改為 S03 D3 同時(shí)還需要在r22中將元組 S03 L2 改為 S03 L1 如果這兩個(gè)修改沒有同時(shí)進(jìn)行 則數(shù)據(jù)庫中就會出現(xiàn)不一致信息 這是由于這樣分解得到的兩個(gè)關(guān)系模式?jīng)]有保持原來的函數(shù)依賴關(guān)系造成的 原有的函數(shù)依賴Dept Loc在分解后即沒有投影到S D中 也沒有投影到S L中 而是跨在了兩個(gè)關(guān)系模式上 因此分解方案2沒有保持原有的函數(shù)依賴關(guān)系 它也不是好的分解方法 數(shù)據(jù)庫基礎(chǔ) 11 3關(guān)系模式分解的準(zhǔn)則 我們看分解方案3 經(jīng)過分析可以看出分解方案3既滿足無損連接性 又保持了原有的函數(shù)依賴關(guān)系 因此它是一個(gè)好的分解方法 總結(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省嘉興市秀洲區(qū)實(shí)驗(yàn)中學(xué)2025屆中考生物模試卷含解析
- 吉林省四平市鐵西區(qū)重點(diǎn)中學(xué)2025屆中考生物四模試卷含解析
- 山西省(太原臨汾地區(qū))重點(diǎn)名校2025屆中考聯(lián)考生物試卷含解析
- 2025年度南海區(qū)勞動就業(yè)服務(wù)中心就業(yè)創(chuàng)業(yè)孵化器運(yùn)營管理合同
- 2025年app應(yīng)用委托開發(fā)合同樣本(2篇)
- 福建省廈門外國語海滄附屬校2025屆中考押題生物預(yù)測卷含解析
- 安徽省長豐縣聯(lián)考2025屆中考沖刺卷生物試題含解析
- 二零二五年度海上石油貨物運(yùn)輸合同標(biāo)的油品質(zhì)量與檢測標(biāo)準(zhǔn)3篇
- 人教版品德與社會五年級上冊全冊教案
- 開發(fā)耐低溫材料保障極地工程安全
- 中華人民共和國能源法
- 礦山智能化監(jiān)控系統(tǒng)
- 五年級口算題卡每天100題帶答案
- Unit 3 Family Matters Developing Ideas Writing about a Family Memory 教學(xué)設(shè)計(jì)-2024-2025學(xué)年高一上學(xué)期英語外研版(2019)必修第一冊
- 工程量清單及招標(biāo)控制價(jià)編制工作方案
- 商業(yè)承兌匯票貼現(xiàn)協(xié)議
- 普工附有答案
- 《烏魯木齊市國土空間總體規(guī)劃(2021-2035年)》
- 2024年中國租賃業(yè)調(diào)查報(bào)告-畢馬威-202407
- 中俄東線天然氣管道工程(永清-上海)環(huán)境影響報(bào)告書
- 2024年長沙市中考數(shù)學(xué)真題試卷及答案
評論
0/150
提交評論