關于表的規(guī)范化_第1頁
關于表的規(guī)范化_第2頁
關于表的規(guī)范化_第3頁
關于表的規(guī)范化_第4頁
關于表的規(guī)范化_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、規(guī)范化:滿足第一范式是表的最低要求,不滿足第一范式要求的數(shù)據(jù)庫(表)就不能稱之為關系數(shù)據(jù)庫。在此基礎上滿足更高要求的稱為第二范式,簡記為2NF,其余依此類推,還有第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)。BCNF可以看作是修正了的第三范式。把表從低范式,通過投影運算轉換成若干高一級范式的過程,叫做表的規(guī)范化。一般地說,表表滿足的的范式級級別越高高,設計計的表越越是規(guī)范范,表的的質量越越高,數(shù)數(shù)據(jù)的冗冗余度越越小,共共享性越越高,所所占的存存儲空間間越少,并并將數(shù)據(jù)據(jù)的不一一致性減減少到最最低程度度,這也也是對表表進行規(guī)規(guī)范化的的目的。但是,高范式的數(shù)據(jù)庫

2、查詢起來比較復雜。所以,不應一味追求高范式,一般滿足第三范式或BC范式就可以了二、表的規(guī)規(guī)范化1、第一范范式(11NF)如前所述,第第一范式式要求表表的每一一個字段段都是不不可再分分的最小小單位。例1:學生生(學號號,姓名名,學院院,地址址,選修修課程成成績(課課程號,課課程名,成成績)表表數(shù)據(jù)如如下:學號姓名學院地址選修課程成成績(課課程號,課課程名,成成績)9901張麗管理管201C001,高高等數(shù)學學,9009901張麗管理管201C002,英英語,8809901張麗管理管201C003,計計算機,669902李鋒電子電101C004,法法律,778表一 不滿滿足第一一范式的的表顯然,這

3、樣樣的表是是不滿足足第一范范式的。因因為選修課課程成績績字段還還可分為為3個字段段即(課課程號,課課程名,成成績)。如果不把它它進行規(guī)規(guī)范化,即即轉換成成滿足第第一范式式的表,將將會產(chǎn)生生很多問問題,如如:刪除除異常,即即本來只只想刪除除成績的的,不得得不把課課程號和和課程名名也刪除除了!轉換的方法法就是把把可以拆拆分的字字段進行行拆分,即即把選修課課程成績績分解成成3個字段段:課程號號,課程名名,成績。變成成下面滿滿足第一一范式的的表:學號姓名學院地址課程號課程名成績9901張麗管理管201C001高等數(shù)學909901張麗管理管201C002英語809901張麗管理管201C003計算機66

4、9902李鋒電子電101C004法律78表二 滿滿足第一一范式的的表2、第二范范式(22NF)一個關系應應滿足11NF是是最起碼碼的條件件。但是是,僅滿滿足1NNF的關關系還可可能存在在一些問問題。例2:表二二中存在在以下的的問題: 問問題1:數(shù)據(jù)據(jù)冗余度度大。張張麗選幾幾門課程程,都必必須輸入入所有幾幾個她的的相關信信息,同同時,如如果有幾幾千個人人選修高高等數(shù)學學課,就就得輸入入幾千個個“高等數(shù)數(shù)學”。如果果要修改改“高等數(shù)數(shù)學”這個課課程名稱稱,對于于幾千個個課程名名中,只只要漏改改一個,將將造成數(shù)數(shù)據(jù)的不不一致性性。 問問題2:刪除除異常。我我們知道道,這個個表中的的關鍵字字為學號號和

5、課程程號,它它們不能能為空值值,而當當李鋒退退學時,不不可能只只刪除李李鋒的學學號和姓姓名,只只能刪除除了李鋒鋒的整條條記錄,這這時相應應的課程程號為CC0044的法律律也被刪刪除,如如果這個個表中只只有李鋒鋒一人選選法律課課,該記記錄刪除除后,下下次將無無法查詢詢法律課課的課程程號。 問問題3:插入入記錄異異常。與與刪除異異常相似似,如果果李鋒剛剛入學,還還沒有選選修任何何一門課課程,無無法知道道他選修修的課程程號,而而課程號號為關鍵鍵字,不不能為空空,因此此,李鋒鋒這個記記錄也不不能輸入入。造成出現(xiàn)這這些問題題的原因因是因為為這個表表不滿足足第二范范式。 如如何判斷斷一個表表是否滿滿足第二

6、二范式呢呢,判斷斷方法是是:(1)、找找出表的的關鍵字字。(2)、如如果只有有一個關關鍵字,若若每一個個非關鍵鍵字都依依賴于這這個關鍵鍵字,則則表滿足足第二范范式,否否則不是是。什么是依賴賴(關系系)呢?例:某某表中有有兩個字字段:學學號、姓姓名,對對于每一一個學號號,只有有一個姓姓名與之之對應,則則稱姓名名依賴于于學號,或或稱學號號唯一確確定姓名名,記作作:學號號姓名。例3:學生生(學號號,姓名名,學院院)表是是否滿足足第二范范式?答:滿足。因因為,這這個表中中只有一一個關鍵鍵字即學學號,而而其他字字段(即即非關鍵鍵字)都都依賴于于學號,也也就是說說每一個個學號只只有一個個姓名,一一個學院院

7、與之對對應。例4:學生生(學號號,姓名名,學院院,成績績)表是是否滿足足第二范范式?答:不滿足足。因為為,一個個學生可可能不只只選一門門課程,不不止一個個成績,也也就是說說每一個個學號不不只有一一個成績績與之對對應,或或者說,有有一個非非關鍵字字段(即即成績)不不依賴于于學號。(3)、如如果有兩兩個或兩兩個以上上的關鍵鍵字,那那么,把把這些關關鍵字看看成是一一個組合合關鍵字字,若每每一個非非關鍵字字都能完完全依賴賴于組合合關鍵字字,則表表滿足第第二范式式,否則則不是。例5:成績績(學號號,課程程,成績績)表是是否滿足足第二范范式?滿足。因為為,非關關鍵字(成成績)完完全依賴賴于組合合關鍵字字(

8、學號號+課程),即即只有一一個成績績與(學學號+課程)對對應,或或者說,一一個學生生選修一一門課程程,就只只能有一一個成績績。稱為部分依依賴。 定定義:如如果一個個表滿足足1NFF,且每每一個非非關鍵字字都完全全依賴于于關鍵字字,則這這個表滿滿足第二二范式。 第第一范式式轉換成成第二范范式的方方法:找出依賴關關系,將將能完全全依賴于于主鍵的的字段從從表中提提取出來來,同主主鍵一起起組成一一個新的的關系。 例7:表二(學號,姓姓名,學學院,地地址,課課程號,課課程名,成成績)的的依賴關關系如下下:顯然然,不滿滿足2NNF。院、地址)績績)轉換的過程程就是拆拆分的過過程,也也是一個個消除部部分依賴

9、賴的過程程。但是是,要注注意,拆拆分的結結果應該該包含原原表的所所有字段段?。醇礋o損分分解)3、第三范范式(33NF)通過分析,發(fā)發(fā)現(xiàn)表AA仍然在在一定程程度上存存在上面面提及的的三個問問題,要要消除和和減少它它們,還還得把它它分解成成滿足更更高范式式(即33NF)的的表. 滿滿足第三三范式的的判斷方方法:判斷表在滿滿足第二二范式的的基礎上上是否有有傳遞依依賴的情情況,如如果有,不不是第三三范式,否否則是。 將將非第三三范式規(guī)規(guī)范為第第三范式式的方法法:把產(chǎn)生傳遞遞依賴關關系的非非關鍵字字段抽出出來,同同關鍵字字一起建建立新的的表。例8:表AA(學號號,姓名名,學院院,地址址)中,存存在地址

10、址傳遞依依賴于學學號的關關系,即即:學號學院院,學院院地址。把地址從原原表中分分出來,同同關鍵字字一起建建立新的的表形成成表A11(學院、地地址),原表就就可消除除了傳遞遞依賴關關系。表表A分解為為:表A1 (學院、地地址) 表表A2(學號、姓姓名、學學院) 小小結:表表的規(guī)范范化中,11NF是是要滿足足每個字字段都是是不可再再分的;2NFF是在11NF的的基礎上上消除部部分依賴賴關系(只只保留完完全依賴賴),33NF是是在2NNF的基基礎上進進一步消消除傳遞遞依賴關關系。二:在設計和操操作維護護數(shù)據(jù)庫庫時,關關鍵的步步驟就是是要確保保數(shù)據(jù)正正確地分分布到數(shù)數(shù)據(jù)庫的的表中。使使用正確確的數(shù)據(jù)據(jù)

11、結構,不不僅便于于對數(shù)據(jù)據(jù)庫進行行相應的的存取操操作,而而且可以以極大地地簡化應應用程序序的其他他內容(查查詢、窗窗體、報報表、代代碼等)。正正確進行行表設計計的正式式名稱就就是數(shù)數(shù)據(jù)庫規(guī)規(guī)范化。數(shù)據(jù)冗余數(shù)據(jù)應該盡盡可能少少地冗余余,這意意味著重重復數(shù)據(jù)據(jù)應該減減少到最最少。比比如說,一一個部門門雇員的的電話不不應該被被存儲在在不同的的表中, 因為這這里的電電話號碼碼是雇員員的一個個屬性。如如果存在在過多的的冗余數(shù)數(shù)據(jù),這這就意味味著要占占用了更更多的物物理空間間,同時時也對數(shù)數(shù)據(jù)的維維護和一一致性檢檢查帶來來了問題題,當這這個員工工的電話話號碼變變化時,冗冗余數(shù)據(jù)據(jù)會導致致對多個個表的更更新

12、動作作,如果果有一個個表不幸幸被忽略略了,那那么就可可能導致致數(shù)據(jù)的的不一致致性。規(guī)范化實例例為了說明方方便,我我們在本本文中將將使用一一個SAAMPLLE數(shù)據(jù)據(jù)表,來來一步一一步分析析規(guī)范化化的過程程。首先,我們們先來生生成一個個的最初初始的表表。CREATTE TTABLLE SAMMPLEE ( PRJJNUMM IINTEEGERR NOOT NNULLL, PRJJNAMME VARRCHAAR(2200), EMYYNUMM IINTEEGERR NOOT NNULLL, EMYYNAMME VARRCHAAR(2200), SALLCATTEGOORY CHHAR(1), SAL

13、LPACCKAGGE INTTEGEER) INN UUSERRSPAACE11;ALTERR TAABLEE SSAMPPLE ADD PRIIMARRY KKEY(PPRJNNUM, EMYYNUMM);Inserrt iintoo SAAMPLLE(PPRJNNUM, PRRJNAAME, EMMYNUUM, EMYYNAMME, SALLCATTEGOORY, SAALPAACKAAGE)valuees(11000001, TTPMSS, 20000011, Johhnsoon, AA, 20000), (11000001, TTPMSS, 20000022,Chriistiine,

14、B, 30000), (10000011, TPMMS, 20000003, Keevinn, C, 440000), (10000002,TCT, 22000001, JJohnnsonn, A, 220000), (10000002, TCCT, 20000004, Appplee, B,3000);表1-1考察表1-1,我我們可以以看到,這這張表一一共有六六個字段段,分析析每個字字段都有有重復的的值出現(xiàn)現(xiàn),也就就是說,存存在數(shù)據(jù)據(jù)冗余問問題。這這將潛在在地造成成數(shù)據(jù)操操作(比比如刪除除、更新新等操作作)時的的異常情情況,因因此,需需要進行行規(guī)范化化。第一范式參照范式的的定義,考考察上表表

15、,我們們發(fā)現(xiàn),這這張表已已經(jīng)滿足足了第一一范式的的要求。(1NF:字段具有原子性,不可再分; 比如說籍貫貫這個字字段,里里面是“湖湖北武漢漢”的話話,它就就違反了了原子性性,因為為湖北武武漢還可可以再分分的更具具體,分分為“湖湖北”和和“武漢漢” )1、因為這這張表中中字段都都是單一一屬性的的,不可可再分;2、而且每每一行的的記錄都都是沒有有重復的的;3、存在主主屬性,而而且所有有的屬性性都是依依賴于主主屬性;4、所有的的主屬性性都已經(jīng)經(jīng)定義事實上在當當前所有有的關系系數(shù)據(jù)庫庫管理系系統(tǒng)(DDBMSS)中,都都已經(jīng)在在建表的的時候強強制滿足足第一范范式。因因此,這這張SAAMPLLE表已已經(jīng)是

16、一一張滿足足第一范范式要求求的表??伎疾毂?1-1,我我們首先先要找出出主鍵??煽梢钥吹降剑瑢傩孕詫κ侵髦麈I,其其他所有有的屬性性都依賴賴于該主主鍵。從一范式轉轉化到二二范式根據(jù)第二范范式的定定義,轉轉化為二二范式就就是消除除部分依依賴。(2NFF:組合合關鍵字字的表,不不存在組組合關鍵鍵字中的的任意字字段決定定其它非非關鍵字字段(也也就是說說不能有有兩個組組合鍵組組成一個個主鍵)考察表1-1,我我們可以以發(fā)現(xiàn),非非主屬性性部部分依賴賴于主鍵鍵中的; 非非主屬性性,和都都部分依依賴于主主鍵中的的;表1-1的的形式,存存在著以以下潛在在問題:1 數(shù)據(jù)據(jù)冗余:每一個個字段都都有值重重復;2 更新新

17、異常:比如字段段的值,比比如對值值TPPMS了修改改,那么么就要一一次更新新該字段段的多個個值;3 插入入異常:如果新新建了一一個Prrojeect,名名字為TTPT, 但是是還沒有有Empployyee加加入,那那么將會空空缺,而而該字段段是主鍵鍵的一部部分,因因此將無無法插入入記錄;Inserrt iintoo SAAMPLLE(PPRJNNUM, PRRJNAAME, EMMYNUUM, EMYYNAMME, SALLCATTEGOORY, SAALPAACKAAGE) vaaluees(11000003, TTPT, NNULLL, NNULLL, NNULLL, NNULLL)4 刪

18、除除異常:如果一一個員工工 20000003, Kevvin 離職了了,要將將該員工工的記錄錄從表中中刪除,而而此時相相關的SSalaary信信息 CC 也將將丟失, 因為為再沒有有別的行行紀錄下下 Saalarry CC的信息息。Delette ffromm saamplle wwherre EEMYNNUM = 22000003SSeleect disstinnct SALLCATTEGOORY, SAALPAACKAAGE froom SSAMPPLE因此,我們們需要將將存在部部分依賴賴關系的的主屬性性和非主主屬性從從滿足第第一范式式的表中中分離出出來,形形成一張張新的表表,而新新表和舊

19、舊表之間間是一對對多的關關系。由由此,我我們得到到:CREATTE TTABLLE PROOJECCT ( PRJJNUMM IINTEEGERR NOOT NNULLL, PRJJNAMME VARRCHAAR(2200) INN UUSERRSPAACE11;ALTERR TAABLEE PPROJJECTT ADD PRIIMARRY KKEY(PPRJNNUM);Inserrt iintoo PRROJEECT(PRJJNUMM, PPRJNNAMEE) vvaluues(10000011, TPMMS), (10000022, TCTT);表1-2表表 1-3EMYNUUMEMYNA

20、AMESALCAATEGGORYYSALPAACKAAGE2000001Johnsson A 2200002000003Kevinn CC 4400002000004Applee B 330000CREATTE TTABLLE EMPPLOYYEE ( EMYYNUMM IINTEEGERR NOOT NNULLL, EMYYNAMME VARRCHAAR(2200), SALCCATEEGORRY CHAAR(11), SALPPACKKAGEE IINTEEGERR) INN UUSERRSPAACE11;ALTERR TAABLEE EMMPLOOYEEEADD PRIIMARRY KK

21、EY(EMMYNUUM);Inserrt iintoo EMMPLOOYEEE(EMMYNUUM, EMYYNAMME, SALLCATTEGOORY, SAALPAACKAAGE) vaaluees(22000001,Johnnsonn, A, 220000), (20000002, Chhrisstinne, BB, 30000), (22000003, KKeviin, CC,4000), (20000044, Appple, B, 30000);CREATTE TTABLLE PRJJ_EMMY ( PRJJNUMM IINTEEGERR NOOT NNULLL, EMYYNUMM I

22、INTEEGERR NOOT NNULLL) INN UUSERRSPAACE11;ALTERR TAABLEE PPRJ_EMYY ADD PRIIMARRY KKEY(PPRJNNUM, EMYYNUMM);Inserrt iintoo PRRJ_EEMY(PRJJNUMM, EEMYNNUM) vaaluees(11000001, 20000001), (11000001, 20000002),(1000001, 20000003), (11000002, 20000001), (11000002, 20000004);同時,我們們把表11-1的的主鍵,也也就是表表1-22和表11-3的

23、的各自的的主鍵提提取出來來,單獨獨形成一一張表,來來表明表表1-22和表11-3之之間的關關聯(lián)關系系:表 1-44這時候我們們仔細觀觀察一下下表1-2, 1-33, 11-4, 我們們發(fā)現(xiàn)插插入異常常已經(jīng)不不存在了了,當我我們引入入一個新新的項目目 TPPT 的的時候,我我們只需需要向表表1-22 中插插入一條條數(shù)據(jù)就就可以了了, 當當有新人人加入項項目 TTPT 的時候候,我們們需要向向表1-3, 1-44 中各各插入一一條數(shù)據(jù)據(jù)就可以以了。雖雖然我們們解決了了一個大大問題,但但是仔細細觀察我我們還是是發(fā)現(xiàn)有有問題存存在。從二范式轉轉化到三三范式考察表前面面生成的的三張表表,我們們發(fā)現(xiàn),表表

24、1-33存在傳傳遞依賴賴關系,即即:關鍵鍵字段 - 非非關鍵字字段 -非關鍵鍵字段。而而這是不不滿足三三范式的的規(guī)則的的,存在在以下的的不足:1、 數(shù)據(jù)據(jù)冗余:和和的值值有重復復;2、 更新新異常:有重復復的冗余余信息,修修改時需需要同時時修改多多條記錄錄,否則則會出現(xiàn)現(xiàn)數(shù)據(jù)不不一致的的情況;3、 刪除除異常:同樣的的,如果果員工 20000033 Keevinn 離開開了公司司,會直直接導致致 Saalarry CC 的信信息的丟丟失。Delette ffromm EMMPLOOYEEE whheree EMMYNUUM = 20000003Seelecct ddisttincct SSAL

25、CCATEEGORRY, SALLPACCKAGGE ffromm EMMPLOOYEEE因此,我們們需要繼繼續(xù)進行行規(guī)范化化的過程程,把表表1-33拆開,我我們得到到:表 1-55和表 1-66這時候如果果 20000003 KKeviin 離離開公司司,我們們只需要要從表 1-55 中刪刪除他就就可以了了, 存存在于表表1-66中的SSalaary C信息息并不會會丟失。但但是我們們要注意意到除了了表 11-5 中存在在 Keevinn 的信信息之外外, 表表1-44中也存存在 KKeviin 的的信息, 這很容容易理解解, 因因為 KKeviin 參參與了項項目 11000001, TP

26、MMS, 所以當當然也要要從中刪刪除。 至此,我們們將表11-1經(jīng)經(jīng)過規(guī)范范化步驟驟,得到到四張表表,滿足足了三范范式的約約束要求求,數(shù)據(jù)據(jù)冗余、更更新異常常、插入入異常和和刪除異異常。在三范式之之上,還還存在著著更為嚴嚴格約束束的BCC范式和和四范式式,但是是這兩種種形式在在商業(yè)應應用中很很少用到到,在絕絕大多數(shù)數(shù)情況下下,三范范式已經(jīng)經(jīng)滿足了了數(shù)據(jù)庫庫表規(guī)范范化的要要求,有有效地解解決了數(shù)數(shù)據(jù)冗余余和維護護操作的的異常問問題。(3NF:在2NNF的基基礎上,數(shù)數(shù)據(jù)表中中如果不不存在非非關鍵字字段對任任一候選選字段的的傳遞函函數(shù)依賴賴則符合合第三范范式(也也就是說說違反了了數(shù)據(jù)冗冗余) 帳號

27、 身份份證號 姓名 密碼 1001 410010110011 李梅梅 10000001 身份證號和和姓名共共同決定定了密碼碼,姓名名是依賴賴于身份份證號的的,這樣樣就違反反了第三三范式).第四范式式(4NNF)(1)第四四范式(4NFF)的定定義 在4.33.5中中我們曾曾分析了了關系CCTB雖雖然屬于于BCNNF,但但還存在在著數(shù)據(jù)據(jù)冗余、插插入異常常和刪除除異常的的弊端,究究其原因因就是CCTB中中存在非非平凡的的的多值值依賴,而而決定因因素不是是關鍵字字。因而而必須將將CTBB繼續(xù)分分解,如如果分解解成兩個個關系模模式CTTB1(C,TT)和CCTB22(C,BB),則則它們的的冗余度度

28、會明顯顯下降。從從多值依依賴的定定義分析析CTBB1和CCTB22,它們們的屬性性間各有有一個多多值依賴賴CT,CCB,都都是平凡凡的多值值依賴。因因此,含含有多值值依賴的的關系模模式中,減減少數(shù)據(jù)據(jù)冗余和和操作異異常的常常用方法法是將關關系模式式分解為為僅有平平凡的多多值依賴賴的關系系模式。 定義義4.99 設有有一關系系模式RR(U),U是是其屬性性全集,XX、Y是是U的子子集,DD是R上上的數(shù)據(jù)據(jù)依賴集集。如果果對于任任一多值值依賴XXY,此此多值依依賴是平平凡的,或或者X包包含了RR的一個個候選關關鍵字,則則稱R是是第四范范式的關關系模式式,記為為R4NFF。由此定義可可知:關關系模式式CTBB分解后后產(chǎn)生的的CTBB1(CC,T)和CTTB2(C,BB)中,因因為CT,CCB均均是平凡凡的多值值依賴,所所以CTTB1和和CTBB2都是是4NFF。經(jīng)過上面的的分析可可

溫馨提示

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

評論

0/150

提交評論