第3章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論(1)_第1頁
第3章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論(1)_第2頁
第3章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論(1)_第3頁
第3章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論(1)_第4頁
第3章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論(1)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、問題提出問題提出設(shè)計(jì)關(guān)系數(shù)據(jù)庫需要設(shè)計(jì)關(guān)系數(shù)據(jù)庫需要掌握什么知識(shí)呢?掌握什么知識(shí)呢?可以隨便手工湊嗎?可以隨便手工湊嗎?隨便湊的數(shù)據(jù)庫有什隨便湊的數(shù)據(jù)庫有什么缺點(diǎn)?么缺點(diǎn)?第第3章章 關(guān)系數(shù)據(jù)庫的設(shè)關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論計(jì)理論知識(shí)要求:知識(shí)要求: 函數(shù)依賴。 范式3.1 3.1 實(shí)體類型的屬性關(guān)系 數(shù)據(jù)庫設(shè)計(jì)主要采用手工試湊法,缺乏科學(xué)理論依據(jù)和工程方法的支持,依賴于設(shè)計(jì)人員的經(jīng)驗(yàn)和水平,從而難以保證工程的質(zhì)量,增加了系統(tǒng)維護(hù)的代價(jià)。 規(guī)范法設(shè)計(jì)從本質(zhì)上看仍然屬于手工設(shè)計(jì)方法,其基本思想是過程迭代和逐步求精。 目前常用的實(shí)用化和產(chǎn)品化的數(shù)據(jù)庫設(shè)計(jì)工具軟件有Oracle公司推出的Design 和s

2、ybase 公司的PowerDesigner,這些工具軟件能自動(dòng)或輔助設(shè)計(jì)人員完成數(shù)據(jù)庫設(shè)計(jì)過程中的很多任務(wù),但使用起來還都屬于規(guī)范法設(shè)計(jì)方法。I.R.Palmer主張將數(shù)據(jù)庫設(shè)計(jì)當(dāng)成一步步的過程并采用一些輔助手段實(shí)現(xiàn)每一過程。 基于E-R模型的數(shù)據(jù)庫設(shè)計(jì)方法、基于3NF(第三范式)的設(shè)計(jì)方法和基于抽象語法規(guī)范的設(shè)計(jì)方法,都是在數(shù)據(jù)庫設(shè)有一定的難度和復(fù)雜度 。不規(guī)范:產(chǎn)生數(shù)據(jù)冗余,帶來很多問題。規(guī)范:提高數(shù)據(jù)的結(jié)構(gòu)化、共享性、一致性和可操作性。范式:規(guī)范化的程度,級(jí)別。規(guī)范化:在關(guān)系數(shù)據(jù)庫中的每個(gè)關(guān)系都需要進(jìn)行規(guī)范化,使之達(dá)到一定的規(guī)范化程度。關(guān)系數(shù)據(jù)庫的規(guī)范化理論主要包括三個(gè)方面的內(nèi)容: 函

3、數(shù)依賴 范式(Normal Form) 模式設(shè)計(jì)其中,函數(shù)依賴起著核心的作用,是模式分解和模式設(shè)計(jì)的基礎(chǔ),范式是模式分解的標(biāo)準(zhǔn)實(shí)體的聯(lián)系模式實(shí)體的聯(lián)系模式 1:1 1:n N:m3.2 數(shù)據(jù)的函數(shù)依賴數(shù)據(jù)的函數(shù)依賴 省省=f(城市城市):只要給出一個(gè)具體的城市值,就會(huì)有唯一一:只要給出一個(gè)具體的城市值,就會(huì)有唯一一個(gè)省值和它對(duì)應(yīng),個(gè)省值和它對(duì)應(yīng),如如“廣州市廣州市”在在“廣東省廣東省”,這里,這里“城市城市”是自變量是自變量X,“省省”是因變量或函數(shù)值是因變量或函數(shù)值Y。把把X函數(shù)決定函數(shù)決定Y,或,或Y函數(shù)依賴于函數(shù)依賴于X表示為:表示為:XY如果有關(guān)系模式如果有關(guān)系模式R(A1,A2,An

4、),X和和Y為為A1,A2,An的子集,的子集,則對(duì)于關(guān)系則對(duì)于關(guān)系R中的任意一個(gè)中的任意一個(gè)X值,都只有一個(gè)值,都只有一個(gè)Y值與之對(duì)應(yīng),值與之對(duì)應(yīng),則稱則稱X函數(shù)決定函數(shù)決定Y,或,或Y函數(shù)依賴于函數(shù)依賴于X。 例1:對(duì)學(xué)生關(guān)系模式 Student(Sno, Sname, Sdept, Sage)有以下依賴關(guān)系: SnoSname, SnoSdept, SnoSage (Sno, Cno)Grade 函數(shù)依賴定義函數(shù)依賴定義設(shè)有關(guān)系模式設(shè)有關(guān)系模式R(A1,A2,An),X和和Y均為均為A1,A2,An的子集,的子集,r是是R的的任一具體關(guān)系,任一具體關(guān)系,t1、t2是是r中的任意兩個(gè)元組;

5、中的任意兩個(gè)元組;如果由如果由t1X=t2X可以推導(dǎo)出可以推導(dǎo)出t1Y=t2Y,則稱,則稱X函數(shù)決定函數(shù)決定Y,或,或Y函數(shù)函數(shù)依賴于依賴于X,記為,記為XY。在以上定義中特別要注意,只要在以上定義中特別要注意,只要 t1X=t2X t1Y=t2Y成立,就有成立,就有XY。也就是說只有當(dāng)。也就是說只有當(dāng)t1X=t2X為真,而為真,而t1Y=t2Y為假為假時(shí),函數(shù)依賴時(shí),函數(shù)依賴XY不成立;而當(dāng)不成立;而當(dāng)t1X=t2X為假時(shí),不管為假時(shí),不管t1Y=t2Y為為真或?yàn)榧伲加姓婊驗(yàn)榧?,都有XY成立。成立。 一些術(shù)語和符號(hào)一些術(shù)語和符號(hào) 1.1. 如果如果X XY Y,但,但Y Y不包含于不包含于

6、X X,則稱,則稱X XY Y是非平凡的函數(shù)依賴是非平凡的函數(shù)依賴。 2 . . 如果如果X XY Y,但,但Y Y包含于包含于X X,則稱,則稱X XY Y是平凡的函數(shù)依賴是平凡的函數(shù)依賴。 若無特別聲明,我們討論的都若無特別聲明,我們討論的都是非平凡的函數(shù)依賴是非平凡的函數(shù)依賴。術(shù)語和符號(hào)(續(xù))術(shù)語和符號(hào)(續(xù)) 3.3. 如果如果X XY Y,則,則X X稱為稱為決定因子決定因子。 4. 4. 如果如果X XY Y,并且,并且Y YX X,則記作,則記作X XY Y。 如果XY成立,并且對(duì)于X的某個(gè)真子集X 有XY成立,則稱Y部分函數(shù)依賴于X,并記作:術(shù)語和符號(hào)(續(xù))術(shù)語和符號(hào)(續(xù)) 如果

7、XY,并且對(duì)于X的一個(gè)任意真子集X 都有X/Y,則稱Y完全函數(shù)依賴于X,并記作:YXpYXf如果XY(非平凡函數(shù)依賴,并且Y/X)、YZ,則稱Z傳遞函數(shù)依賴于X,記作:示例示例 例例1 1:有關(guān)系模式:有關(guān)系模式SCSC(Sno,Sname,Cno,Credit,GradeSno,Sname,Cno,Credit,Grade),主碼),主碼為(為(SnoSno, , CnoCno),則函數(shù)依賴關(guān)系有:),則函數(shù)依賴關(guān)系有: 示例示例例例2 2:假設(shè)有關(guān)系模式:假設(shè)有關(guān)系模式S S( Sno,Sname,Dept,Dept_masterSno,Sname,Dept,Dept_master),其中

8、各),其中各屬性分別為:學(xué)號(hào)、姓名、所在系和系主任(假設(shè)一個(gè)系只有一個(gè)主屬性分別為:學(xué)號(hào)、姓名、所在系和系主任(假設(shè)一個(gè)系只有一個(gè)主任),主碼為任),主碼為SnoSno,則函數(shù)依賴關(guān)系有:,則函數(shù)依賴關(guān)系有: 例如,要求設(shè)計(jì)成績(jī)關(guān)系例如,要求設(shè)計(jì)成績(jī)關(guān)系( (學(xué)號(hào)學(xué)號(hào), ,課程代碼課程代碼, ,姓名姓名, ,年齡年齡, ,系別系別號(hào),系別名稱,成績(jī)號(hào),系別名稱,成績(jī)) ) 根據(jù)實(shí)際情況,這些數(shù)據(jù)有如下語義規(guī)定:根據(jù)實(shí)際情況,這些數(shù)據(jù)有如下語義規(guī)定:1. 1. 一個(gè)系有若干個(gè)學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系有若干個(gè)學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;2. 2. 一個(gè)學(xué)生可以選修多門功課,每門課程可

9、有若干學(xué)生選一個(gè)學(xué)生可以選修多門功課,每門課程可有若干學(xué)生選修;修;3. 3. 每個(gè)學(xué)生學(xué)習(xí)課程有一個(gè)成績(jī)。每個(gè)學(xué)生學(xué)習(xí)課程有一個(gè)成績(jī)。為什么要討論函數(shù)依賴,進(jìn)為什么要討論函數(shù)依賴,進(jìn)行規(guī)范化行規(guī)范化根據(jù)上述的語義規(guī)定,并分析以上關(guān)系中的數(shù)據(jù),我們可以看出:根據(jù)上述的語義規(guī)定,并分析以上關(guān)系中的數(shù)據(jù),我們可以看出:(學(xué)號(hào)學(xué)號(hào),課程代課程代碼碼)屬性的組合能唯一標(biāo)識(shí)一個(gè)元組,所以屬性的組合能唯一標(biāo)識(shí)一個(gè)元組,所以(學(xué)號(hào)學(xué)號(hào),課程代碼課程代碼)是該關(guān)系模式的主關(guān)鍵是該關(guān)系模式的主關(guān)鍵字。但在進(jìn)行數(shù)據(jù)庫的操作時(shí),會(huì)出現(xiàn)以下幾方面的問題。字。但在進(jìn)行數(shù)據(jù)庫的操作時(shí),會(huì)出現(xiàn)以下幾方面的問題。1. 1.

10、數(shù)據(jù)冗余數(shù)據(jù)冗余。每個(gè)系別號(hào)和系別名稱的名字存儲(chǔ)的次數(shù)等于該系的學(xué)生人數(shù)每個(gè)系別號(hào)和系別名稱的名字存儲(chǔ)的次數(shù)等于該系的學(xué)生人數(shù)乘以每個(gè)學(xué)生選修的課程門數(shù),同時(shí)學(xué)生的姓名、年齡也都要重復(fù)存儲(chǔ)多次,乘以每個(gè)學(xué)生選修的課程門數(shù),同時(shí)學(xué)生的姓名、年齡也都要重復(fù)存儲(chǔ)多次,數(shù)據(jù)的冗余度很大,浪費(fèi)了存儲(chǔ)空間。數(shù)據(jù)的冗余度很大,浪費(fèi)了存儲(chǔ)空間。2. 2. 插入異常插入異常。如果某個(gè)新系沒有招生,尚無學(xué)生時(shí),則系別號(hào)和系別名稱的如果某個(gè)新系沒有招生,尚無學(xué)生時(shí),則系別號(hào)和系別名稱的信息無法插入到數(shù)據(jù)庫中。信息無法插入到數(shù)據(jù)庫中。 因?yàn)樵谶@個(gè)關(guān)系模式中,因?yàn)樵谶@個(gè)關(guān)系模式中,(學(xué)號(hào)學(xué)號(hào),課程代碼課程代碼)是主關(guān)鍵

11、字。根據(jù)關(guān)系的是主關(guān)鍵字。根據(jù)關(guān)系的實(shí)體完實(shí)體完整性約束,主關(guān)鍵字的值不能為空,而這時(shí)沒有學(xué)生,學(xué)號(hào)和課程代碼均整性約束,主關(guān)鍵字的值不能為空,而這時(shí)沒有學(xué)生,學(xué)號(hào)和課程代碼均無值,因此不能進(jìn)行插入操作。無值,因此不能進(jìn)行插入操作。 另外,當(dāng)某個(gè)學(xué)生尚未選課,即課程代碼未知,實(shí)體完整性約束還規(guī)定,另外,當(dāng)某個(gè)學(xué)生尚未選課,即課程代碼未知,實(shí)體完整性約束還規(guī)定,主關(guān)鍵字的值不能部分為空,同樣不能進(jìn)行插入操作。主關(guān)鍵字的值不能部分為空,同樣不能進(jìn)行插入操作。3. 3. 刪除異常刪除異常。 某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪除全部學(xué)生的記錄則系別號(hào)、系別名稱某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪除全部學(xué)生的

12、記錄則系別號(hào)、系別名稱也隨之刪除,而這個(gè)系依然存在,在數(shù)據(jù)庫中卻無法找到該系的信息。也隨之刪除,而這個(gè)系依然存在,在數(shù)據(jù)庫中卻無法找到該系的信息。 另外,如果某個(gè)學(xué)生不再選修另外,如果某個(gè)學(xué)生不再選修C1C1課程,本應(yīng)該只刪去課程,本應(yīng)該只刪去C1C1,但,但C1C1是主關(guān)系鍵的是主關(guān)系鍵的一部分,為保證實(shí)體完整性,必須將整個(gè)元組一起刪掉,這樣,有關(guān)該學(xué)生一部分,為保證實(shí)體完整性,必須將整個(gè)元組一起刪掉,這樣,有關(guān)該學(xué)生的其它信息也隨之丟失。的其它信息也隨之丟失。4. 4. 更新異常。更新異常。 如果學(xué)生改名,則該學(xué)生的所有記錄都要逐一修改姓名;如果學(xué)生改名,則該學(xué)生的所有記錄都要逐一修改姓名

13、; 又如某系更換系名稱,則屬于該系的學(xué)生記錄都要修改系別名稱的內(nèi)容,稍又如某系更換系名稱,則屬于該系的學(xué)生記錄都要修改系別名稱的內(nèi)容,稍有不慎,就有可能漏改某些記錄,這就會(huì)造成數(shù)據(jù)的不一致性,破壞了數(shù)據(jù)有不慎,就有可能漏改某些記錄,這就會(huì)造成數(shù)據(jù)的不一致性,破壞了數(shù)據(jù)的完整性。的完整性。很顯然,該成績(jī)關(guān)系不是一個(gè)很好的關(guān)系范式,需要應(yīng)用規(guī)范化理論進(jìn)行優(yōu)化。很顯然,該成績(jī)關(guān)系不是一個(gè)很好的關(guān)系范式,需要應(yīng)用規(guī)范化理論進(jìn)行優(yōu)化。3.3 應(yīng)用規(guī)范化理論的步驟應(yīng)用規(guī)范化理論的步驟應(yīng)用規(guī)范化理論對(duì)上述產(chǎn)生的關(guān)系的邏輯模式進(jìn)行初步優(yōu)化,以減少乃至消除關(guān)系模式中存在的各種異常,改善完整性、一致性和存儲(chǔ)效率。

14、規(guī)范化理論是數(shù)據(jù)庫邏輯設(shè)計(jì)的指南和工具,規(guī)范化過程可分為兩個(gè)步驟:確定規(guī)范式級(jí)別,實(shí)施規(guī)范化處理。1確定范式級(jí)別考查關(guān)系模式的函數(shù)依賴關(guān)系,確定范式等級(jí),逐一分析各關(guān)系模式,考查是否存在部分函數(shù)依賴,傳遞函數(shù)依賴等,確定它們分別屬于第幾范式。2實(shí)施規(guī)范化處理確定范式級(jí)別后,利用第4章的規(guī)范化理論,逐一考察各個(gè)關(guān)系模式,根據(jù)應(yīng)用要求,判斷它們是否滿足規(guī)范要求,可用已經(jīng)介紹過的規(guī)范化方法和理論將關(guān)系模式規(guī)范化。在關(guān)系數(shù)據(jù)庫規(guī)范中建立了一個(gè)范式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一級(jí)比一級(jí)有更嚴(yán)格的要求。圖圖 各種范式之間的關(guān)系各種范式之間的關(guān)系3.3.1 第第1范式范式第一范式

15、(First Normal Form)是最基本的規(guī)范形式,即關(guān)系中每個(gè)屬性都是不可再分的簡(jiǎn)單項(xiàng)。集合、數(shù)組和結(jié)構(gòu)不能作為某一屬性出現(xiàn),嚴(yán)禁關(guān)系中出現(xiàn)“表中有表”的情況。在任何一個(gè)關(guān)系數(shù)據(jù)庫系統(tǒng)中,第一范式是關(guān)系模式的一個(gè)最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。下面右表的關(guān)系滿足第一范式。姓名姓名電話號(hào)碼電話號(hào)碼宿舍宿舍家庭家庭張強(qiáng)張強(qiáng)3208000087110000王麗王麗3208000187110001姓名姓名宿舍宿舍電話電話家庭家庭電話電話張強(qiáng)張強(qiáng)320800003208000187110000王麗王麗87110001很顯然,成績(jī)關(guān)系很顯然,成績(jī)關(guān)系(學(xué)號(hào)學(xué)號(hào),課程代碼

16、課程代碼,姓名姓名,年齡年齡,系別號(hào),系別號(hào),系別名稱,姓名,成績(jī)系別名稱,姓名,成績(jī))不可再分,滿足第一范式。不可再分,滿足第一范式。實(shí)質(zhì)就是實(shí)質(zhì)就是原原子性子性,不可,不可再分割再分割3.3.2 第二范式(第二范式(2NF)在第一范式中進(jìn)一步滿足一些要求為第二范式。如果關(guān)系模式在第一范式中進(jìn)一步滿足一些要求為第二范式。如果關(guān)系模式R R 1NF1NF,且每,且每個(gè)非主屬性都個(gè)非主屬性都完全函數(shù)完全函數(shù)依賴于依賴于R R的每個(gè)關(guān)鍵字,則稱的每個(gè)關(guān)鍵字,則稱R R屬于屬于第二范式第二范式。(Second Normal Form),簡(jiǎn)稱,簡(jiǎn)稱2NF2NF,記作,記作R R 2NF2NF。對(duì)于對(duì)于

17、成績(jī)關(guān)系成績(jī)關(guān)系( (學(xué)號(hào)學(xué)號(hào), ,課程代碼課程代碼, ,姓名姓名, ,年齡年齡, ,系別號(hào),系別名稱,成績(jī)系別號(hào),系別名稱,成績(jī)) ) ,學(xué),學(xué)號(hào),課程代碼為主屬性,其余均為非主屬性,姓名、年齡、系別號(hào)、系別名號(hào),課程代碼為主屬性,其余均為非主屬性,姓名、年齡、系別號(hào)、系別名稱等并不依賴課程代碼主關(guān)鍵字,而只是依賴學(xué)號(hào)主關(guān)鍵字,不符合第二范稱等并不依賴課程代碼主關(guān)鍵字,而只是依賴學(xué)號(hào)主關(guān)鍵字,不符合第二范式的要求。式的要求。解決方法:將原成績(jī)關(guān)系分解為兩個(gè)關(guān)系:分解時(shí)遵循的基本原則就是解決方法:將原成績(jī)關(guān)系分解為兩個(gè)關(guān)系:分解時(shí)遵循的基本原則就是“一一事一地事一地”,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體

18、或者實(shí)體間的聯(lián)系。,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。1 1)學(xué)生系關(guān)系)學(xué)生系關(guān)系( (學(xué)號(hào)學(xué)號(hào), ,姓名姓名, ,年齡年齡, ,系別號(hào),系別名稱系別號(hào),系別名稱) ),描述學(xué)生實(shí)體;,描述學(xué)生實(shí)體;2 2)課程關(guān)系(學(xué)號(hào))課程關(guān)系(學(xué)號(hào), ,課程代碼課程代碼, ,成績(jī)成績(jī)) ),描述學(xué)生與課程的聯(lián)系。,描述學(xué)生與課程的聯(lián)系。3.3.3 第第3范式范式 如果關(guān)系模式R2NF,且每個(gè)非主屬性都不傳遞依賴不傳遞依賴于R的每個(gè)關(guān)系鍵,則稱R屬于第三范式第三范式(Third Normal Form),簡(jiǎn)稱3NF,記作R3NF。 和2NF的規(guī)范化時(shí)遵循的原則相同,即“一事一地一事一地”,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。對(duì)于經(jīng)2NF后的學(xué)生系關(guān)系(學(xué)號(hào),姓名,年齡,系別號(hào),系別名稱),仍有下述問題;1數(shù)據(jù)冗余。每個(gè)系別號(hào)和系別名稱的名字存儲(chǔ)的次數(shù)等于該系的學(xué)生人數(shù)。2插入異常。當(dāng)一個(gè)新系沒有招生時(shí),有關(guān)該系的信息無法插入。3刪除異常。某系學(xué)生全部畢業(yè)而沒有招生時(shí),

溫馨提示

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

評(píng)論

0/150

提交評(píng)論