針對(duì)一個(gè)具體的數(shù)據(jù)庫系統(tǒng),開發(fā)人員要做兩件事創(chuàng)建數(shù)據(jù)庫,編制_第1頁
針對(duì)一個(gè)具體的數(shù)據(jù)庫系統(tǒng),開發(fā)人員要做兩件事創(chuàng)建數(shù)據(jù)庫,編制_第2頁
針對(duì)一個(gè)具體的數(shù)據(jù)庫系統(tǒng),開發(fā)人員要做兩件事創(chuàng)建數(shù)據(jù)庫,編制_第3頁
針對(duì)一個(gè)具體的數(shù)據(jù)庫系統(tǒng),開發(fā)人員要做兩件事創(chuàng)建數(shù)據(jù)庫,編制_第4頁
針對(duì)一個(gè)具體的數(shù)據(jù)庫系統(tǒng),開發(fā)人員要做兩件事創(chuàng)建數(shù)據(jù)庫,編制_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、SQL Server 2000SQL Server 2000 針對(duì)一個(gè)具體的數(shù)據(jù)庫系統(tǒng),開發(fā)人員要做兩件事:針對(duì)一個(gè)具體的數(shù)據(jù)庫系統(tǒng),開發(fā)人員要做兩件事:創(chuàng)建創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)庫,編制應(yīng)用程序編制應(yīng)用程序,其中創(chuàng)建數(shù)據(jù)庫是基礎(chǔ)。,其中創(chuàng)建數(shù)據(jù)庫是基礎(chǔ)。 對(duì)于關(guān)系數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫首先要確定數(shù)據(jù)庫由哪些表對(duì)于關(guān)系數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫首先要確定數(shù)據(jù)庫由哪些表組成,各表有什么屬性,即設(shè)計(jì)關(guān)系模式。組成,各表有什么屬性,即設(shè)計(jì)關(guān)系模式。 如何設(shè)計(jì)合理、高效的關(guān)系數(shù)據(jù)庫呢?設(shè)計(jì)的理論依據(jù)是如何設(shè)計(jì)合理、高效的關(guān)系數(shù)據(jù)庫呢?設(shè)計(jì)的理論依據(jù)是什么呢?本章就是針對(duì)這些問題作一些理論上的探討。什么呢?本章就是針對(duì)這些

2、問題作一些理論上的探討。 第第7 7章章 關(guān)系數(shù)據(jù)庫設(shè)計(jì)理論關(guān)系數(shù)據(jù)庫設(shè)計(jì)理論SQL Server 2000SQL Server 20007.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)7.2 7.2 函數(shù)依賴函數(shù)依賴7.3 7.3 范式范式第第7 7章章 關(guān)系數(shù)據(jù)庫設(shè)計(jì)理論關(guān)系數(shù)據(jù)庫設(shè)計(jì)理論SQL Server 2000SQL Server 20007.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)一、關(guān)系模式一、關(guān)系模式 關(guān)系模式是對(duì)關(guān)系(表)的描述,為了能夠清楚地刻劃出一關(guān)系模式是對(duì)關(guān)系(表)的描述,為了能夠清楚地刻劃出一個(gè)關(guān)系,關(guān)系模式需要由五部分組成,即:個(gè)關(guān)系,關(guān)系模式需要由五部分組成,即:

3、R R(U U,D D,DOMDOM,F(xiàn) F)其中:其中:R R:關(guān)系名關(guān)系名 U U:全體屬性集合全體屬性集合 D D:屬性域的集合屬性域的集合 DOMDOM:U U和和D D之間的映射關(guān)系的集合之間的映射關(guān)系的集合 F F:屬性間數(shù)據(jù)的依賴關(guān)系的集合,即組成關(guān)系的各個(gè)元屬性間數(shù)據(jù)的依賴關(guān)系的集合,即組成關(guān)系的各個(gè)元組必須滿足的完整性約束條件。這些約束或者通過對(duì)屬性取值范組必須滿足的完整性約束條件。這些約束或者通過對(duì)屬性取值范圍的限定,例如學(xué)生成績(jī)必須在圍的限定,例如學(xué)生成績(jī)必須在01000100之間,或者通過屬性值間之間,或者通過屬性值間的相互關(guān)聯(lián)(主要體現(xiàn)于值的相等與否)反映出來,后者稱

4、為數(shù)的相互關(guān)聯(lián)(主要體現(xiàn)于值的相等與否)反映出來,后者稱為數(shù)據(jù)依賴。據(jù)依賴。 SQL Server 2000SQL Server 2000一、關(guān)系模式一、關(guān)系模式 由于在關(guān)系模式由于在關(guān)系模式R R(U U,D D,DOMDOM,F(xiàn) F)中,影響數(shù)據(jù)庫模中,影響數(shù)據(jù)庫模式設(shè)計(jì)的主要是式設(shè)計(jì)的主要是U U和和F F,D D和和DOMDOM對(duì)其影響不大,關(guān)系模式簡(jiǎn)化對(duì)其影響不大,關(guān)系模式簡(jiǎn)化為三元組:為三元組: R R(U U,F(xiàn) F)7.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià) 關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,不同時(shí)刻關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,不同時(shí)刻關(guān)系模式中的關(guān)系可能有所不

5、同,但它們必須滿足關(guān)系模關(guān)系模式中的關(guān)系可能有所不同,但它們必須滿足關(guān)系模式中式中F F所指定的完整性約束條件。即當(dāng)且僅當(dāng)所指定的完整性約束條件。即當(dāng)且僅當(dāng)U U上的一個(gè)關(guān)上的一個(gè)關(guān)系系r r滿足滿足F F時(shí),時(shí),r r稱為關(guān)系模式稱為關(guān)系模式R R(U U,F(xiàn) F)的一個(gè)關(guān)系。的一個(gè)關(guān)系。SQL Server 2000SQL Server 2000二、關(guān)系模式的評(píng)價(jià)二、關(guān)系模式的評(píng)價(jià)1、關(guān)系數(shù)據(jù)庫設(shè)計(jì)的核心關(guān)系數(shù)據(jù)庫設(shè)計(jì)的核心:關(guān)系模式的設(shè)計(jì)。:關(guān)系模式的設(shè)計(jì)。 2、關(guān)系模式的設(shè)計(jì)目標(biāo)關(guān)系模式的設(shè)計(jì)目標(biāo):按照一定的原則從數(shù)量眾多而又相:按照一定的原則從數(shù)量眾多而又相互關(guān)聯(lián)的數(shù)據(jù)中,構(gòu)造出一組

6、既能較好地反映現(xiàn)實(shí)世界,而又互關(guān)聯(lián)的數(shù)據(jù)中,構(gòu)造出一組既能較好地反映現(xiàn)實(shí)世界,而又有良好的操作性能的關(guān)系模式。有良好的操作性能的關(guān)系模式。7.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)SQL Server 2000SQL Server 2000 3 3 、關(guān)系模式的評(píng)價(jià)標(biāo)準(zhǔn)、關(guān)系模式的評(píng)價(jià)標(biāo)準(zhǔn) 例:要求設(shè)計(jì)一個(gè)教學(xué)管理數(shù)據(jù)庫,希望從該數(shù)據(jù)庫中得例:要求設(shè)計(jì)一個(gè)教學(xué)管理數(shù)據(jù)庫,希望從該數(shù)據(jù)庫中得到學(xué)生學(xué)號(hào)、學(xué)生姓名、年齡、系別、系主任姓名、學(xué)生學(xué)習(xí)到學(xué)生學(xué)號(hào)、學(xué)生姓名、年齡、系別、系主任姓名、學(xué)生學(xué)習(xí)的課程和該課程的成績(jī)等信息。若將這些信息設(shè)計(jì)為一個(gè)關(guān)系,的課程和該課程的成績(jī)等信息。若將這些信息設(shè)

7、計(jì)為一個(gè)關(guān)系,關(guān)系模式為:關(guān)系模式為: 教學(xué)(學(xué)號(hào),姓名,年齡,系名,系主任,課程名,成績(jī))教學(xué)(學(xué)號(hào),姓名,年齡,系名,系主任,課程名,成績(jī))7.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)SQL Server 2000SQL Server 2000教學(xué)(學(xué)號(hào),姓名,年齡,系名,系主任,課程名,成績(jī))教學(xué)(學(xué)號(hào),姓名,年齡,系名,系主任,課程名,成績(jī))學(xué)號(hào)學(xué)號(hào)姓名姓名年齡年齡系名系名系系主任主任課程名課程名成績(jī)成績(jī)9800198001李華李華2121計(jì)算機(jī)計(jì)算機(jī)王民王民C C語言語言90909800198001李華李華2121計(jì)算機(jī)計(jì)算機(jī)王民王民高等數(shù)學(xué)高等數(shù)學(xué)80809800298002張平張

8、平2222計(jì)算機(jī)計(jì)算機(jī)王民王民C C語言語言65659800298002張平張平2222計(jì)算機(jī)計(jì)算機(jī)王民王民高等數(shù)學(xué)高等數(shù)學(xué)70709800398003陳兵陳兵2121數(shù)學(xué)數(shù)學(xué)趙敏趙敏高等數(shù)學(xué)高等數(shù)學(xué)95959800398003陳兵陳兵2121數(shù)學(xué)數(shù)學(xué)趙趙敏敏 離散數(shù)學(xué)離散數(shù)學(xué)75759900199001陸莉陸莉2323物理物理王珊王珊普通物理普通物理85857.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)SQL Server 2000SQL Server 2000以上關(guān)系存在下面幾個(gè)問題以上關(guān)系存在下面幾個(gè)問題 (1)(1)數(shù)據(jù)冗余較大數(shù)據(jù)冗余較大。一個(gè)學(xué)生只有一個(gè)姓名,但上面的表中若一個(gè)學(xué)生選

9、。一個(gè)學(xué)生只有一個(gè)姓名,但上面的表中若一個(gè)學(xué)生選幾門課,則該學(xué)生的姓名就要重復(fù)幾次。同樣一個(gè)系也只有一個(gè)系主任,上幾門課,則該學(xué)生的姓名就要重復(fù)幾次。同樣一個(gè)系也只有一個(gè)系主任,上表中系主任的姓名重復(fù)就更多了。表中系主任的姓名重復(fù)就更多了。 (2)(2)修改異常修改異常。假如計(jì)算機(jī)系的系主任換了,那么上表中的四條記錄的系。假如計(jì)算機(jī)系的系主任換了,那么上表中的四條記錄的系主任都需要修改,假如改得不一樣,或少改一處,就會(huì)造成數(shù)據(jù)不一致。主任都需要修改,假如改得不一樣,或少改一處,就會(huì)造成數(shù)據(jù)不一致。 (3)(3)插入異常插入異常。假如新成立了一個(gè)系:化工系,并且也有了系主任,但還。假如新成立了一

10、個(gè)系:化工系,并且也有了系主任,但還沒有招學(xué)生,所以不能在上表中插入化工系的記錄,也就不能在數(shù)據(jù)庫中保沒有招學(xué)生,所以不能在上表中插入化工系的記錄,也就不能在數(shù)據(jù)庫中保存化工系的系名和系主任的信息。同樣如果新增一門課,但還沒有學(xué)生選修,存化工系的系名和系主任的信息。同樣如果新增一門課,但還沒有學(xué)生選修,所以也不能插入該課程。所以也不能插入該課程。 (4)(4)刪除異常刪除異常。如果數(shù)學(xué)系的學(xué)生全畢業(yè)了,則需要?jiǎng)h除該系的學(xué)生記錄,。如果數(shù)學(xué)系的學(xué)生全畢業(yè)了,則需要?jiǎng)h除該系的學(xué)生記錄,但如果該系的學(xué)生全刪除了,則該系的系名、系主任信息也從數(shù)據(jù)庫中刪除但如果該系的學(xué)生全刪除了,則該系的系名、系主任信

11、息也從數(shù)據(jù)庫中刪除了。了。7.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)SQL Server 2000SQL Server 2000結(jié)論:結(jié)論: 以上關(guān)系模式不是一個(gè)好的關(guān)系模式。以上關(guān)系模式不是一個(gè)好的關(guān)系模式。 一個(gè)好的關(guān)系模式,除了能滿足用戶對(duì)信息存儲(chǔ)和查詢一個(gè)好的關(guān)系模式,除了能滿足用戶對(duì)信息存儲(chǔ)和查詢的基本要求外,還應(yīng)具備下列條件:的基本要求外,還應(yīng)具備下列條件:(1)盡可能少的數(shù)據(jù)冗余;)盡可能少的數(shù)據(jù)冗余;(2)沒有插入異常;)沒有插入異常;(3)沒有刪除異常;)沒有刪除異常;(4)沒有更新異常。)沒有更新異常。 7.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)SQL Server 2

12、000SQL Server 2000 對(duì)于有問題的關(guān)系模式,可以通過模式分解的方法使之對(duì)于有問題的關(guān)系模式,可以通過模式分解的方法使之規(guī)范化,上述關(guān)系模式如果分解為如下三個(gè)關(guān)系則可以克服規(guī)范化,上述關(guān)系模式如果分解為如下三個(gè)關(guān)系則可以克服以上出現(xiàn)的問題。以上出現(xiàn)的問題。 學(xué)生(學(xué)號(hào),姓名,年齡,系名)學(xué)生(學(xué)號(hào),姓名,年齡,系名) 系(系名,系主任)系(系名,系主任) 選課(學(xué)號(hào),課程名,成績(jī))選課(學(xué)號(hào),課程名,成績(jī)) 如何分解關(guān)系模式,分解的依據(jù)是什么?下二節(jié)將討論如何分解關(guān)系模式,分解的依據(jù)是什么?下二節(jié)將討論這些問題。這些問題。7.1 7.1 關(guān)系模式的評(píng)價(jià)關(guān)系模式的評(píng)價(jià)SQL Ser

13、ver 2000SQL Server 20007.2 7.2 函數(shù)依賴函數(shù)依賴一、數(shù)據(jù)依賴一、數(shù)據(jù)依賴 數(shù)據(jù)依賴就是指同一關(guān)系中屬性值的相互依賴和相互數(shù)據(jù)依賴就是指同一關(guān)系中屬性值的相互依賴和相互制約,即一個(gè)關(guān)系中屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)制約,即一個(gè)關(guān)系中屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間的相互關(guān)系。如學(xué)生的學(xué)號(hào)將決定學(xué)生姓名,課程名將間的相互關(guān)系。如學(xué)生的學(xué)號(hào)將決定學(xué)生姓名,課程名將決定有哪些參考書等等。決定有哪些參考書等等。 數(shù)據(jù)依賴分?jǐn)?shù)據(jù)依賴分函數(shù)依賴函數(shù)依賴、多值依賴多值依賴和和連接依賴連接依賴等,其中等,其中函數(shù)依賴是最基本的一種數(shù)據(jù)依賴。函數(shù)依賴是最基本的一種數(shù)據(jù)依賴。SQ

14、L Server 2000SQL Server 2000二、函數(shù)依賴二、函數(shù)依賴函數(shù)依賴的定義:函數(shù)依賴的定義: 設(shè)有關(guān)系模式設(shè)有關(guān)系模式R R(U U),),U U是屬性集,是屬性集,X X和和Y Y是是U U的子集,的子集,r r是是R R(U U)的任一個(gè)關(guān)系。如果的任一個(gè)關(guān)系。如果r r中不可能存在兩個(gè)元組在中不可能存在兩個(gè)元組在X X上上的屬性值相等,而的屬性值相等,而Y Y上的屬性值不等,即任意的兩個(gè)元組上的屬性值不等,即任意的兩個(gè)元組t1t1和和t2t2,若,若t1(X)=t2(X)t1(X)=t2(X),必有必有t1(Y)=t2(Y)t1(Y)=t2(Y),那么我們稱屬性組那么

15、我們稱屬性組X X函數(shù)確定函數(shù)確定屬性組屬性組Y Y,或者說或者說Y Y函數(shù)依賴函數(shù)依賴于于X X。記為記為X X Y Y,其中其中X X叫決定因素,叫決定因素,Y Y叫依賴因素。叫依賴因素。7.2 7.2 函數(shù)依賴函數(shù)依賴SQL Server 2000SQL Server 2000 簡(jiǎn)單地說,對(duì)于任意兩個(gè)元組,如果它們的簡(jiǎn)單地說,對(duì)于任意兩個(gè)元組,如果它們的X X屬性組值相屬性組值相同,則它們的同,則它們的Y Y屬性組值也相同,我們就說屬性組值也相同,我們就說X X函數(shù)確定函數(shù)確定Y Y,或者或者說說Y Y函數(shù)依賴于函數(shù)依賴于X X。 更簡(jiǎn)單的表達(dá):對(duì)于每一個(gè)確定的更簡(jiǎn)單的表達(dá):對(duì)于每一個(gè)確

16、定的X X,Y Y的值就被唯一地的值就被唯一地確定,則說確定,則說X X函數(shù)確定函數(shù)確定Y Y,或者說或者說Y Y函數(shù)依賴于函數(shù)依賴于X X。 7.2 7.2 函數(shù)依賴函數(shù)依賴如關(guān)系:公民(身份證號(hào),姓名,地址,工作單位)如關(guān)系:公民(身份證號(hào),姓名,地址,工作單位) 身份證號(hào)一確定,則其地址就唯一確定,因此身份證號(hào)函數(shù)確身份證號(hào)一確定,則其地址就唯一確定,因此身份證號(hào)函數(shù)確定地址。定地址。 而姓名一確定,不一定能確定地址。而姓名一確定,不一定能確定地址。SQL Server 2000SQL Server 2000例:說出下列關(guān)系模式中的一些函數(shù)依賴。例:說出下列關(guān)系模式中的一些函數(shù)依賴。學(xué)生

17、(學(xué)號(hào),姓名,年齡,性別)學(xué)生(學(xué)號(hào),姓名,年齡,性別)選課(學(xué)號(hào),課程號(hào),成績(jī))選課(學(xué)號(hào),課程號(hào),成績(jī))7.2 7.2 函數(shù)依賴函數(shù)依賴SQL Server 2000SQL Server 2000結(jié)論:結(jié)論:如果屬性組如果屬性組A A 屬性組屬性組B B,則,則A BA B函數(shù)依賴關(guān)系是屬性間的一種多對(duì)一的關(guān)系。函數(shù)依賴關(guān)系是屬性間的一種多對(duì)一的關(guān)系。 如果如果X X YY,且且XYXY,則,則X X和和Y Y是一對(duì)一關(guān)系。是一對(duì)一關(guān)系。如學(xué)號(hào)與身份證號(hào)。如學(xué)號(hào)與身份證號(hào)。7.2 7.2 函數(shù)依賴函數(shù)依賴SQL Server 2000SQL Server 2000三、函數(shù)依賴的幾種特例三、

18、函數(shù)依賴的幾種特例 1、平凡函數(shù)依賴與非平凡函數(shù)依賴、平凡函數(shù)依賴與非平凡函數(shù)依賴 由于由于Y X Y X 時(shí),一定有時(shí),一定有XYXY,平凡函數(shù)依賴必然成立,平凡函數(shù)依賴必然成立,沒有意義,所以一般所說的函數(shù)依賴總是指非平凡函數(shù)依賴。沒有意義,所以一般所說的函數(shù)依賴總是指非平凡函數(shù)依賴。若若Y X Y X ,則稱,則稱XYXY為平凡函數(shù)依賴。為平凡函數(shù)依賴。7.2 7.2 函數(shù)依賴函數(shù)依賴如果如果XYXY,且且Y XY X,則,則XYXY 稱為非平凡函數(shù)依賴。稱為非平凡函數(shù)依賴。SQL Server 2000SQL Server 2000推論:如果推論:如果XY ,且,且X是單個(gè)屬性,則是單

19、個(gè)屬性,則X Y2、完全函數(shù)依賴與部分函數(shù)依賴、完全函數(shù)依賴與部分函數(shù)依賴如果如果XY XY ,且對(duì)于任何且對(duì)于任何X XX X,都有都有X YX Y,則稱則稱y y完完全依賴于全依賴于x x,記作記作X YX Y如果如果XYXY,但,但Y Y不完全依賴于不完全依賴于X X,則稱則稱Y Y部分函數(shù)依賴于部分函數(shù)依賴于X X,記作記作X YX Y7.2 7.2 函數(shù)依賴函數(shù)依賴如:選課(學(xué)號(hào),課程號(hào),課程名,成績(jī))如:選課(學(xué)號(hào),課程號(hào),課程名,成績(jī))(學(xué)號(hào),課程號(hào))(學(xué)號(hào),課程號(hào)) 成績(jī)成績(jī)(學(xué)號(hào),課程號(hào))(學(xué)號(hào),課程號(hào)) 課程名課程名因?yàn)橐驗(yàn)?課程號(hào)課程號(hào) 課程名課程名 SQL Server

20、 2000SQL Server 20003、傳遞函數(shù)依賴、傳遞函數(shù)依賴 如果如果XY XY , YZYZ,且且Y XY X, Y XY X,則稱,則稱Z Z傳遞函數(shù)傳遞函數(shù)依賴于依賴于X X。記作。記作X X 傳遞傳遞Z Z 如:學(xué)生(學(xué)號(hào),姓名,系名,系主任)如:學(xué)生(學(xué)號(hào),姓名,系名,系主任)顯然系主任傳遞函數(shù)依賴于學(xué)號(hào),顯然系主任傳遞函數(shù)依賴于學(xué)號(hào),因?yàn)閷W(xué)號(hào)因?yàn)閷W(xué)號(hào)系名,系名系名,系名系主任系主任7.2 7.2 函數(shù)依賴函數(shù)依賴SQL Server 2000SQL Server 2000 思考題:已知關(guān)系模式思考題:已知關(guān)系模式R R(學(xué)生學(xué)號(hào),課程名,學(xué)生專業(yè)號(hào),學(xué)生學(xué)號(hào),課程名,學(xué)生

21、專業(yè)號(hào),專業(yè)名,成績(jī)),說出下面是什么關(guān)系?專業(yè)名,成績(jī)),說出下面是什么關(guān)系?(學(xué)生學(xué)號(hào),課程名,學(xué)生專業(yè)號(hào))(學(xué)生學(xué)號(hào),課程名,學(xué)生專業(yè)號(hào)) 成績(jī)成績(jī) 學(xué)生學(xué)號(hào)學(xué)生學(xué)號(hào) 專業(yè)名專業(yè)名(學(xué)生學(xué)號(hào),專業(yè)名)(學(xué)生學(xué)號(hào),專業(yè)名) 成績(jī)成績(jī)(學(xué)生學(xué)號(hào),課程名)(學(xué)生學(xué)號(hào),課程名) 成績(jī)成績(jī)(課程名,專業(yè)名,成績(jī))(課程名,專業(yè)名,成績(jī)) (課程名,成績(jī))(課程名,成績(jī)) (函數(shù)依賴,部分函數(shù)依賴)(函數(shù)依賴,部分函數(shù)依賴) (函數(shù)依賴,傳遞函數(shù)依賴)(函數(shù)依賴,傳遞函數(shù)依賴) (不是函數(shù)依賴)(不是函數(shù)依賴) (完全函數(shù)依賴)(完全函數(shù)依賴) (平凡函數(shù)依賴)(平凡函數(shù)依賴) 練習(xí) :7.2 7.

22、2 函數(shù)依賴函數(shù)依賴SQL Server 2000SQL Server 20004、侯選碼、侯選碼 我們已經(jīng)知道,如果某屬性組的值能唯一確定整個(gè)元組的我們已經(jīng)知道,如果某屬性組的值能唯一確定整個(gè)元組的值,則稱該屬性組為候選碼或侯選關(guān)鍵字。值,則稱該屬性組為候選碼或侯選關(guān)鍵字。 如(學(xué)號(hào),姓名,性別,年齡)中,學(xué)號(hào)是關(guān)鍵字,如(學(xué)號(hào),姓名,性別,年齡)中,學(xué)號(hào)是關(guān)鍵字, (學(xué)號(hào),姓名)不是關(guān)鍵字,性別不是關(guān)鍵字。(學(xué)號(hào),姓名)不是關(guān)鍵字,性別不是關(guān)鍵字。 現(xiàn)在給出候選碼的精確定義?,F(xiàn)在給出候選碼的精確定義。 設(shè)有關(guān)系模式設(shè)有關(guān)系模式R R(U U),),U U為屬性全集,為屬性全集,X X是是U

23、 U的子集,如果的子集,如果有有X UX U,則稱則稱X X是是R R的一個(gè)候選碼。的一個(gè)候選碼。 也就是也就是X U,X U,且不存在且不存在Y XY X,使得使得Y YU U。 候選碼如果有多個(gè),可以選其中的一個(gè)作為主碼。候選碼如果有多個(gè),可以選其中的一個(gè)作為主碼。7.2 7.2 函數(shù)依賴函數(shù)依賴SQL Server 2000SQL Server 20007.3 7.3 范式范式范式范式:關(guān)系模式滿足的約束條件稱為范式。根據(jù)滿足規(guī):關(guān)系模式滿足的約束條件稱為范式。根據(jù)滿足規(guī)范化的程度不同,范式由低到高分為范化的程度不同,范式由低到高分為1NF1NF,2NF2NF,3NF3NF,BCNFBC

24、NF,4NF4NF,5NF5NF關(guān)系模式的規(guī)范化關(guān)系模式的規(guī)范化:把一個(gè)低一級(jí)的關(guān)系模式分解為高:把一個(gè)低一級(jí)的關(guān)系模式分解為高一級(jí)關(guān)系模式的過程。一級(jí)關(guān)系模式的過程。 SQL Server 2000SQL Server 2000 如果關(guān)系模式如果關(guān)系模式R,其所有屬性都是不可再分的基本數(shù)據(jù)項(xiàng),其所有屬性都是不可再分的基本數(shù)據(jù)項(xiàng),則稱則稱R屬于第一范式,屬于第一范式,R1NF例例1:R(姓名,身份,年齡)姓名,身份,年齡) 姓名姓名 身份身份 年齡年齡 - 張三張三 男學(xué)生男學(xué)生 17 李四李四 女教師女教師 27 林林林林 女作家女作家 29R不屬于不屬于1NF7.3 7.3 范式范式一、第

25、一范式(一、第一范式(1NF1NF)SQL Server 2000SQL Server 2000第一范式是作為一個(gè)關(guān)系模式的最起碼要求,是一定要滿第一范式是作為一個(gè)關(guān)系模式的最起碼要求,是一定要滿足的。足的。第一范式僅是關(guān)系模式的最低要求,僅僅滿足第一范式是第一范式僅是關(guān)系模式的最低要求,僅僅滿足第一范式是不夠的。不夠的。如前面所講的關(guān)系模式:如前面所講的關(guān)系模式:如:教學(xué)(學(xué)號(hào),姓名,年齡,系名,系主任,課程名,如:教學(xué)(學(xué)號(hào),姓名,年齡,系名,系主任,課程名,成績(jī))成績(jī))它滿足第一范式,但存在較大數(shù)據(jù)冗余和插入、刪除、修它滿足第一范式,但存在較大數(shù)據(jù)冗余和插入、刪除、修改異常。改異常。7.

26、3 7.3 范式范式一、第一范式(一、第一范式(1NF1NF)SQL Server 2000SQL Server 2000 如關(guān)系模式如關(guān)系模式R1NF,且每個(gè)非主屬性且每個(gè)非主屬性完全函數(shù)依賴于完全函數(shù)依賴于候選候選碼,則稱碼,則稱R屬于第二范式,屬于第二范式,R2NF。主屬性:候選碼中的屬性稱為主屬性。主屬性:候選碼中的屬性稱為主屬性。非主屬性:不包含在任何候選碼中的屬性稱為非主屬性非主屬性:不包含在任何候選碼中的屬性稱為非主屬性二、第二范式(二、第二范式(2NF2NF)7.3 7.3 范式范式SQL Server 2000SQL Server 20007.3 7.3 范式范式二、第二范式

27、(二、第二范式(2NF2NF)例例1:判斷:判斷R(教師編號(hào),教師地址,課程號(hào),課程名)是否(教師編號(hào),教師地址,課程號(hào),課程名)是否屬于第二范式。屬于第二范式。 候選碼:(教師編號(hào),課程號(hào))候選碼:(教師編號(hào),課程號(hào)) 非主屬性:教師地址,課程名非主屬性:教師地址,課程名因?yàn)橐驗(yàn)? (: (教師編號(hào),課程號(hào)教師編號(hào),課程號(hào)) ) 教師地址教師地址 ( (教師編號(hào),課程號(hào)教師編號(hào),課程號(hào)) ) 課程名課程名所以本關(guān)系模式不屬于第二范式。所以本關(guān)系模式不屬于第二范式。SQL Server 2000SQL Server 2000 例例2 2:判斷:判斷 選課(學(xué)號(hào),課程號(hào),成績(jī))是否屬于選課(學(xué)號(hào)

28、,課程號(hào),成績(jī))是否屬于2NF 2NF ,假如規(guī)定一個(gè)學(xué)生一門課只有一個(gè)成績(jī)假如規(guī)定一個(gè)學(xué)生一門課只有一個(gè)成績(jī)候選碼:(學(xué)號(hào),課程號(hào))候選碼:(學(xué)號(hào),課程號(hào)) 非主屬性:成績(jī)非主屬性:成績(jī)因?yàn)槌煽?jī)完全函數(shù)依賴于(學(xué)號(hào),課程號(hào))因?yàn)槌煽?jī)完全函數(shù)依賴于(學(xué)號(hào),課程號(hào)) 所以屬于所以屬于2NF2NF7.3 7.3 范式范式SQL Server 2000SQL Server 2000 例例3 3:判斷教師上課:判斷教師上課teach(teacher,class,course) 2NF? teach(teacher,class,course) 2NF? 假定一位教師給同一個(gè)班至多上一門課,一門課可以由多

29、位教假定一位教師給同一個(gè)班至多上一門課,一門課可以由多位教師上,一名老師也可上多門課。師上,一名老師也可上多門課。候選碼:(候選碼:(teacher,classteacher,class) 非主屬性:非主屬性: coursecourse因?yàn)橐驗(yàn)閏oursecourse完全函數(shù)依賴于(完全函數(shù)依賴于( teacher,classteacher,class) 所以屬于所以屬于2NF2NF7.3 7.3 范式范式SQL Server 2000SQL Server 2000不滿足第二范式的關(guān)系模式必然存在各種存儲(chǔ)異常。如例不滿足第二范式的關(guān)系模式必然存在各種存儲(chǔ)異常。如例1 1滿足了滿足了2NF2NF

30、是不是就不存在存儲(chǔ)異常呢?不是。是不是就不存在存儲(chǔ)異常呢?不是。例:學(xué)生(學(xué)號(hào),姓名,年齡,系名,系主任,系辦電話)例:學(xué)生(學(xué)號(hào),姓名,年齡,系名,系主任,系辦電話)它滿足它滿足2NF2NF,但還存如下問題;但還存如下問題;存在數(shù)據(jù)冗余:大量的系信息冗余;存在數(shù)據(jù)冗余:大量的系信息冗余;它存在插入異常:系剛成立,沒有學(xué)生時(shí)不能添加系;它存在插入異常:系剛成立,沒有學(xué)生時(shí)不能添加系;它存在刪除異常:某系學(xué)生全部畢業(yè),系的信息丟失;它存在刪除異常:某系學(xué)生全部畢業(yè),系的信息丟失;它存在修改異常:系辦電話改動(dòng),需要改動(dòng)多處。它存在修改異常:系辦電話改動(dòng),需要改動(dòng)多處。因此,滿足了因此,滿足了2NF

31、2NF還不夠。還不夠。7.3 7.3 范式范式SQL Server 2000SQL Server 2000 如果關(guān)系模式如果關(guān)系模式R2NFR2NF,且,且R R的任一非主屬性都的任一非主屬性都不傳遞函數(shù)依賴不傳遞函數(shù)依賴于任何候選碼,則稱于任何候選碼,則稱R R屬于第三范式,屬于第三范式,R3NFR3NF 例例4:判斷上述關(guān)系模式:判斷上述關(guān)系模式 R1(學(xué)號(hào),姓名,年齡,系名,系(學(xué)號(hào),姓名,年齡,系名,系主任)是否滿足主任)是否滿足3NF。步驟:它滿足步驟:它滿足2NF(例(例4已證明)已證明)因?yàn)閷W(xué)號(hào)因?yàn)閷W(xué)號(hào)系名系名 系名系名系主任系主任 所以系主任傳遞函數(shù)依賴于學(xué)號(hào)所以系主任傳遞函數(shù)

32、依賴于學(xué)號(hào)即本關(guān)系模式不滿足即本關(guān)系模式不滿足3NF。三、第三范式(三、第三范式(3NF3NF)7.3 7.3 范式范式SQL Server 2000SQL Server 2000 不滿足不滿足3NF3NF的關(guān)系模式存在各種存儲(chǔ)異常。那么滿足的關(guān)系模式存在各種存儲(chǔ)異常。那么滿足3NF3NF的的關(guān)系模式是不是就不存在存儲(chǔ)異常呢?一般情況下是可以了,關(guān)系模式是不是就不存在存儲(chǔ)異常呢?一般情況下是可以了,但有些特殊情況下依然還存在存儲(chǔ)異常。但有些特殊情況下依然還存在存儲(chǔ)異常。例例5:判斷關(guān)系模式:判斷關(guān)系模式 選課(學(xué)號(hào),姓名,課程號(hào),成績(jī))選課(學(xué)號(hào),姓名,課程號(hào),成績(jī))3NF?步驟:它是否滿足步

33、驟:它是否滿足2NF?不是。?不是。既然不滿足既然不滿足2NF,當(dāng)然不滿足,當(dāng)然不滿足3NF。7.3 7.3 范式范式SQL Server 2000SQL Server 2000如:如:教學(xué)(學(xué)生,教師,課程),假定每一教師只能講一門教學(xué)(學(xué)生,教師,課程),假定每一教師只能講一門課,每門課由若干教師講授,每個(gè)學(xué)生選修某門課時(shí)就對(duì)應(yīng)課,每門課由若干教師講授,每個(gè)學(xué)生選修某門課時(shí)就對(duì)應(yīng)一個(gè)固定的教師。一個(gè)固定的教師。候選碼:(候選碼:(學(xué)生,教師),(學(xué)生,課程)學(xué)生,教師),(學(xué)生,課程)三個(gè)屬性都是主屬性,沒有非主屬性,滿足三個(gè)屬性都是主屬性,沒有非主屬性,滿足2NF和和3NF。但該關(guān)系模式

34、還是有數(shù)據(jù)冗余和存儲(chǔ)異常。如但該關(guān)系模式還是有數(shù)據(jù)冗余和存儲(chǔ)異常。如插入異常:無法存儲(chǔ)不選課的學(xué)生和不開課的教師插入異常:無法存儲(chǔ)不選課的學(xué)生和不開課的教師刪除異常:無法刪除一個(gè)學(xué)生的選課信息刪除異常:無法刪除一個(gè)學(xué)生的選課信息更新異常:某門課的某位教師換了,則選該教師的所有記錄均更新異常:某門課的某位教師換了,則選該教師的所有記錄均需修改。需修改。數(shù)據(jù)冗余大:一個(gè)學(xué)生選多門課,需重復(fù)存放該學(xué)生的信息數(shù)據(jù)冗余大:一個(gè)學(xué)生選多門課,需重復(fù)存放該學(xué)生的信息7.3 7.3 范式范式SQL Server 2000SQL Server 2000問題存在的原因:?jiǎn)栴}存在的原因: 主屬性部分函數(shù)依賴于侯選碼

35、主屬性部分函數(shù)依賴于侯選碼 (注(注2NF,3NF是要求非主屬是要求非主屬性對(duì)侯選碼的要求,而不是主屬性對(duì)侯選碼的要求)性對(duì)侯選碼的要求,而不是主屬性對(duì)侯選碼的要求) 如(學(xué)生,教師)如(學(xué)生,教師)課程,而教師課程,而教師課程,所以課程部分依課程,所以課程部分依賴于碼(學(xué)生,教師)賴于碼(學(xué)生,教師)7.3 7.3 范式范式SQL Server 2000SQL Server 2000四、四、BCBC范式(范式(BCNFBCNF)設(shè)關(guān)系模式設(shè)關(guān)系模式R R(U U)1NF1NF,如果對(duì)于如果對(duì)于R R的每個(gè)非平凡函數(shù)依的每個(gè)非平凡函數(shù)依賴賴X YX Y(Y XY X),),則則X X必包含候選

36、碼,那么必包含候選碼,那么RBCNFRBCNF。即若即若每一個(gè)決定因素都包含碼,則每一個(gè)決定因素都包含碼,則RBCNFRBCNF。由由BCNFBCNF的定義可以看出,每個(gè)的定義可以看出,每個(gè)BCNFBCNF的關(guān)系模式都具有如下的關(guān)系模式都具有如下性質(zhì):性質(zhì):所有非主屬性都完全函數(shù)依賴于每個(gè)侯選碼所有非主屬性都完全函數(shù)依賴于每個(gè)侯選碼所有主屬性都完全函數(shù)依賴于每個(gè)不包含它的侯選碼所有主屬性都完全函數(shù)依賴于每個(gè)不包含它的侯選碼沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性( (即每一即每一個(gè)決定因素都包含碼個(gè)決定因素都包含碼) )從函數(shù)依賴范疇內(nèi),從函數(shù)依

37、賴范疇內(nèi),BCNFBCNF已經(jīng)達(dá)到了最高的要求。已經(jīng)達(dá)到了最高的要求。推論:如果推論:如果R R只有一個(gè)侯選碼,且只有一個(gè)侯選碼,且R R 3NF3NF,則,則R R必屬于必屬于BCNFBCNF7.3 7.3 范式范式SQL Server 2000SQL Server 2000BCNFBCNF與與3NF3NF的區(qū)別的區(qū)別:3NF3NF只強(qiáng)調(diào)非主屬性對(duì)碼的完全直只強(qiáng)調(diào)非主屬性對(duì)碼的完全直接依賴,而接依賴,而BCNFBCNF不僅強(qiáng)調(diào)非主屬性對(duì)碼的完全直接依不僅強(qiáng)調(diào)非主屬性對(duì)碼的完全直接依賴,而且強(qiáng)調(diào)主屬性對(duì)碼的完全直接依賴,它包括賴,而且強(qiáng)調(diào)主屬性對(duì)碼的完全直接依賴,它包括3NF3NF。7.3 7

38、.3 范式范式SQL Server 2000SQL Server 2000 將關(guān)系模式轉(zhuǎn)化為較高級(jí)的范式稱為關(guān)系模式的規(guī)范化。將關(guān)系模式轉(zhuǎn)化為較高級(jí)的范式稱為關(guān)系模式的規(guī)范化。 關(guān)系模式屬于范式的級(jí)別越高,出現(xiàn)異常的概率越小,所關(guān)系模式屬于范式的級(jí)別越高,出現(xiàn)異常的概率越小,所以我們應(yīng)該讓關(guān)系模式盡可能屬于較高級(jí)的范式。以我們應(yīng)該讓關(guān)系模式盡可能屬于較高級(jí)的范式。 關(guān)系模式的規(guī)范化通常是采用分解的辦法,也就是將關(guān)系關(guān)系模式的規(guī)范化通常是采用分解的辦法,也就是將關(guān)系模式分解為幾個(gè)關(guān)系模式,使每個(gè)關(guān)系模式都達(dá)到更高的范式模式分解為幾個(gè)關(guān)系模式,使每個(gè)關(guān)系模式都達(dá)到更高的范式級(jí)別。但這種分解要求信息

39、不能有損失。級(jí)別。但這種分解要求信息不能有損失。 五、關(guān)系模式的規(guī)范化五、關(guān)系模式的規(guī)范化7.3 7.3 范式范式SQL Server 2000SQL Server 2000范式小結(jié):范式小結(jié):1NF 消除非主屬性對(duì)侯選碼的部分依賴消除非主屬性對(duì)侯選碼的部分依賴2NF 消除非主屬性對(duì)侯選碼的傳遞依賴消除非主屬性對(duì)侯選碼的傳遞依賴3NF 消除主屬性對(duì)侯選碼的部分依賴和傳遞依賴消除主屬性對(duì)侯選碼的部分依賴和傳遞依賴BCNF 消除非平凡且非函數(shù)依賴的多值依賴消除非平凡且非函數(shù)依賴的多值依賴 4NF 消除不是由侯選碼蘊(yùn)含的連接依賴消除不是由侯選碼蘊(yùn)含的連接依賴5NF7.3 7.3 范式范式SQL Server 2000SQL Server 2000 例:設(shè)關(guān)系模式例:設(shè)關(guān)系模式R(學(xué)號(hào),課程號(hào),成績(jī),教師姓名,教師地學(xué)號(hào),課程號(hào),成績(jī),教師姓名,教師地址)規(guī)定:每個(gè)學(xué)生每學(xué)一門課只有一個(gè)成績(jī),每門課只有一個(gè)址)規(guī)定:每個(gè)學(xué)生每學(xué)一門課只有一個(gè)成績(jī),每門課只有一個(gè)教師任教,每個(gè)教師只有一個(gè)地址,且教師沒有同名同姓。教師任教,每個(gè)教師只有一個(gè)地址,且教師沒有同名同姓。要求:要求:(1)寫出)寫出R的基本函數(shù)依賴:的基本函數(shù)依賴:存在如下基本函數(shù)依賴:存在如下基本函數(shù)依賴:(學(xué)號(hào),課程號(hào))(學(xué)號(hào),課程號(hào))

溫馨提示

  • 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)論