版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第5章章 關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫的的 規(guī)范化設(shè)計(jì)規(guī)范化設(shè)計(jì)本章概要本章概要 前面已經(jīng)講述了前面已經(jīng)講述了關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫、關(guān)系模型關(guān)系模型的基本概念以及關(guān)系數(shù)據(jù)的基本概念以及關(guān)系數(shù)據(jù)庫的庫的標(biāo)準(zhǔn)語言標(biāo)準(zhǔn)語言。 如何使用關(guān)系模型設(shè)計(jì)關(guān)系數(shù)據(jù)庫,也就是面對一個(gè)現(xiàn)實(shí)問題,如何使用關(guān)系模型設(shè)計(jì)關(guān)系數(shù)據(jù)庫,也就是面對一個(gè)現(xiàn)實(shí)問題,如何選擇一個(gè)比較好的關(guān)系模式的集合,每個(gè)關(guān)系又應(yīng)該由哪些如何選擇一個(gè)比較好的關(guān)系模式的集合,每個(gè)關(guān)系又應(yīng)該由哪些屬性組成。這屬于數(shù)據(jù)庫設(shè)計(jì)的問題,確切地講是數(shù)據(jù)庫屬性組成。這屬于數(shù)據(jù)庫設(shè)計(jì)的問題,確切地講是數(shù)據(jù)庫邏輯設(shè)邏輯設(shè)計(jì)計(jì)的問題,有關(guān)數(shù)據(jù)庫設(shè)計(jì)的全過程將在后續(xù)章節(jié)詳細(xì)
2、討論的問題,有關(guān)數(shù)據(jù)庫設(shè)計(jì)的全過程將在后續(xù)章節(jié)詳細(xì)討論 本章講述本章講述關(guān)系數(shù)據(jù)庫規(guī)范化理論關(guān)系數(shù)據(jù)庫規(guī)范化理論,這是數(shù)據(jù)庫邏輯設(shè)計(jì)的理論依,這是數(shù)據(jù)庫邏輯設(shè)計(jì)的理論依據(jù)。據(jù)。n要求了解規(guī)范化理論的研究動機(jī)及其在數(shù)據(jù)庫設(shè)計(jì)中的作用要求了解規(guī)范化理論的研究動機(jī)及其在數(shù)據(jù)庫設(shè)計(jì)中的作用n掌握函數(shù)依賴的有關(guān)概念,掌握函數(shù)依賴的有關(guān)概念,n第一范式、第二范式、第三范式的定義,第一范式、第二范式、第三范式的定義,n重點(diǎn)掌握并能夠靈活運(yùn)用關(guān)系模式規(guī)范化的方法和關(guān)系模式重點(diǎn)掌握并能夠靈活運(yùn)用關(guān)系模式規(guī)范化的方法和關(guān)系模式分解的方法,這也是本章的難點(diǎn)。分解的方法,這也是本章的難點(diǎn)。 5.1 5.1 規(guī)范化問題
3、的提出規(guī)范化問題的提出5.1.1 5.1.1 規(guī)范化理論的主要內(nèi)容規(guī)范化理論的主要內(nèi)容n關(guān)系數(shù)據(jù)庫的規(guī)范化理論最早是由關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫的規(guī)范化理論最早是由關(guān)系數(shù)據(jù)庫的創(chuàng)始人的創(chuàng)始人e.f.codde.f.codd提出的提出的n在該理論出現(xiàn)以前,層次和網(wǎng)狀數(shù)據(jù)庫的設(shè)計(jì)在該理論出現(xiàn)以前,層次和網(wǎng)狀數(shù)據(jù)庫的設(shè)計(jì)只是遵循其模型本身固有的原則,而無具體的只是遵循其模型本身固有的原則,而無具體的理論依據(jù)可言,因而帶有盲目性,可能在以后理論依據(jù)可言,因而帶有盲目性,可能在以后的運(yùn)行和使用中發(fā)生許多預(yù)想不到的問題。的運(yùn)行和使用中發(fā)生許多預(yù)想不到的問題。n在關(guān)系數(shù)據(jù)庫系統(tǒng)中,在關(guān)系數(shù)據(jù)庫系統(tǒng)中,關(guān)系模型關(guān)系
4、模型包括一組包括一組關(guān)系關(guān)系模式模式,各個(gè)關(guān)系不是完全孤立的,數(shù)據(jù)庫的設(shè),各個(gè)關(guān)系不是完全孤立的,數(shù)據(jù)庫的設(shè)計(jì)較層次和網(wǎng)狀模型更為重要計(jì)較層次和網(wǎng)狀模型更為重要如何設(shè)計(jì)一個(gè)適合的關(guān)系數(shù)據(jù)庫系統(tǒng),關(guān)鍵如何設(shè)計(jì)一個(gè)適合的關(guān)系數(shù)據(jù)庫系統(tǒng),關(guān)鍵是關(guān)系數(shù)據(jù)庫是關(guān)系數(shù)據(jù)庫模式模式的設(shè)計(jì),一個(gè)好的關(guān)系數(shù)的設(shè)計(jì),一個(gè)好的關(guān)系數(shù)據(jù)庫模式應(yīng)該包括多少據(jù)庫模式應(yīng)該包括多少關(guān)系模式關(guān)系模式,而每一個(gè),而每一個(gè)關(guān)系模式又應(yīng)該包括哪些關(guān)系模式又應(yīng)該包括哪些屬性屬性,又如何將這,又如何將這些相互關(guān)聯(lián)的關(guān)系模式組建一個(gè)適合的些相互關(guān)聯(lián)的關(guān)系模式組建一個(gè)適合的關(guān)系關(guān)系模型模型,這些工作決定了到整個(gè)系統(tǒng)運(yùn)行的效,這些工作決定了到
5、整個(gè)系統(tǒng)運(yùn)行的效率,也是系統(tǒng)成敗的關(guān)鍵所在,所以必須在率,也是系統(tǒng)成敗的關(guān)鍵所在,所以必須在關(guān)系數(shù)據(jù)庫的關(guān)系數(shù)據(jù)庫的規(guī)范化理論規(guī)范化理論的指導(dǎo)下逐步完成的指導(dǎo)下逐步完成 n關(guān)系數(shù)據(jù)庫的規(guī)范化理論主要包括三個(gè)方面的內(nèi)容關(guān)系數(shù)據(jù)庫的規(guī)范化理論主要包括三個(gè)方面的內(nèi)容:函數(shù)函數(shù)依依賴賴范式范式(normal formnormal form)模式設(shè)計(jì)模式設(shè)計(jì)n其中,其中,函數(shù)函數(shù)依依賴賴起著核心的作用,是模式分解和起著核心的作用,是模式分解和模式設(shè)計(jì)的基礎(chǔ),范式是模式分解的標(biāo)準(zhǔn)。模式設(shè)計(jì)的基礎(chǔ),范式是模式分解的標(biāo)準(zhǔn)。5.1.2 5.1.2 關(guān)系模式的存儲異常問題關(guān)系模式的存儲異常問題n數(shù)據(jù)庫的邏輯設(shè)計(jì)為
6、什么要遵循一定的規(guī)范化理論?數(shù)據(jù)庫的邏輯設(shè)計(jì)為什么要遵循一定的規(guī)范化理論?n什么是好的關(guān)系模式?什么是好的關(guān)系模式?n某些不好的關(guān)系模式可能導(dǎo)致哪些問題?某些不好的關(guān)系模式可能導(dǎo)致哪些問題?n下面通過例子進(jìn)行分析下面通過例子進(jìn)行分析: :例如例如要求設(shè)計(jì)要求設(shè)計(jì)教學(xué)管理數(shù)據(jù)庫教學(xué)管理數(shù)據(jù)庫,其關(guān)系模式,其關(guān)系模式scdscd如下:如下: scd(sno, sn, age, dept, mn, cno, score)scd(sno, sn, age, dept, mn, cno, score)n其中,其中,snosno表示學(xué)生學(xué)號,表示學(xué)生學(xué)號,snsn表示學(xué)生姓名,表示學(xué)生姓名,ageage表
7、表示學(xué)生年齡,示學(xué)生年齡,deptdept表示學(xué)生所在的系別,表示學(xué)生所在的系別,mnmn表示系表示系主任姓名,主任姓名,cnocno表示課程號,表示課程號,scorescore表示成績。表示成績。 根據(jù)實(shí)際情況,這些數(shù)據(jù)有如下語義規(guī)定:根據(jù)實(shí)際情況,這些數(shù)據(jù)有如下語義規(guī)定:一個(gè)系有若干個(gè)學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系有若干個(gè)學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系只有一名系主任,但一個(gè)系主任可以同時(shí)一個(gè)系只有一名系主任,但一個(gè)系主任可以同時(shí)兼幾個(gè)系的系主任;兼幾個(gè)系的系主任;一個(gè)學(xué)生可以選修多門功課,每門課程可有若干一個(gè)學(xué)生可以選修多門功課,每門課程可有若干學(xué)生選修學(xué)生選修每個(gè)學(xué)生學(xué)習(xí)課程
8、有一個(gè)成績每個(gè)學(xué)生學(xué)習(xí)課程有一個(gè)成績圖圖5.1 5.1 關(guān)系關(guān)系scdscdsnosnosnsnageagedeptdeptmnmncnocnoscorescores1趙亦17計(jì)算機(jī)劉偉c190s1趙亦17計(jì)算機(jī)劉偉c285s2錢爾18信息王平c557s2錢爾18信息王平c680s2錢爾18信息王平c770s2錢爾18信息王平c570s3孫珊20信息王平c10s3孫珊20信息王平c270s3孫珊20信息王平c485s4李思男自動化劉偉c193 根據(jù)上述的語義規(guī)定,并分析以上關(guān)系中的數(shù)據(jù),根據(jù)上述的語義規(guī)定,并分析以上關(guān)系中的數(shù)據(jù),我們可以看出:我們可以看出:(sno,cno)屬性的組合能唯一屬
9、性的組合能唯一標(biāo)識一個(gè)元組,所以標(biāo)識一個(gè)元組,所以(sno,cno)是該關(guān)系模式是該關(guān)系模式的的主關(guān)系鍵主關(guān)系鍵。但在進(jìn)行數(shù)據(jù)庫的操作時(shí),會出現(xiàn)。但在進(jìn)行數(shù)據(jù)庫的操作時(shí),會出現(xiàn)以下幾方面的問題。以下幾方面的問題。1. 1. 數(shù)據(jù)冗余。數(shù)據(jù)冗余。每個(gè)系名和系主任的名字存儲每個(gè)系名和系主任的名字存儲的次數(shù)等于該系的學(xué)生人數(shù)乘以每個(gè)學(xué)生的次數(shù)等于該系的學(xué)生人數(shù)乘以每個(gè)學(xué)生選修的課程門數(shù),同時(shí)學(xué)生的姓名、年齡選修的課程門數(shù),同時(shí)學(xué)生的姓名、年齡也都要重復(fù)存儲多次,數(shù)據(jù)的冗余度很大,也都要重復(fù)存儲多次,數(shù)據(jù)的冗余度很大,浪費(fèi)了存儲空間。浪費(fèi)了存儲空間。2. 2. 插入異常插入異常。如果某個(gè)新系沒有招生,
10、尚無如果某個(gè)新系沒有招生,尚無學(xué)生時(shí),則系名和系主任的信息無法插入學(xué)生時(shí),則系名和系主任的信息無法插入到數(shù)據(jù)庫中。到數(shù)據(jù)庫中。v因?yàn)樵谶@個(gè)關(guān)系模式中,因?yàn)樵谶@個(gè)關(guān)系模式中,(sno,cno)是主關(guān)是主關(guān)系鍵。根據(jù)關(guān)系的系鍵。根據(jù)關(guān)系的實(shí)體完整性約束,主關(guān)系鍵實(shí)體完整性約束,主關(guān)系鍵的值不能為空,而這時(shí)沒有學(xué)生,的值不能為空,而這時(shí)沒有學(xué)生,snosno和和cnocno均均無值,因此不能進(jìn)行插入操作無值,因此不能進(jìn)行插入操作。v另外,當(dāng)某個(gè)學(xué)生尚未選課,即另外,當(dāng)某個(gè)學(xué)生尚未選課,即cnocno未知,實(shí)未知,實(shí)體完整性約束還規(guī)定,主關(guān)系鍵的值不能部分體完整性約束還規(guī)定,主關(guān)系鍵的值不能部分為空,
11、同樣不能進(jìn)行插入操作為空,同樣不能進(jìn)行插入操作3. 3. 刪除異常刪除異常某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪除全部學(xué)生的記錄則某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪除全部學(xué)生的記錄則系名、系主任也隨之刪除,而這個(gè)系依然存在,在數(shù)據(jù)庫中系名、系主任也隨之刪除,而這個(gè)系依然存在,在數(shù)據(jù)庫中卻無法找到該系的信息。卻無法找到該系的信息。另外,如果某個(gè)學(xué)生不再選修另外,如果某個(gè)學(xué)生不再選修c1c1課程,本應(yīng)該只刪去課程,本應(yīng)該只刪去c1c1,但但c1c1是主關(guān)系鍵的一部分,為保證實(shí)體完整性,必須將整個(gè)是主關(guān)系鍵的一部分,為保證實(shí)體完整性,必須將整個(gè)元組一起刪掉,這樣,有關(guān)該學(xué)生的其它信息也隨之丟失。元組一起刪掉
12、,這樣,有關(guān)該學(xué)生的其它信息也隨之丟失。4. 4. 更新異常更新異常如果學(xué)生改名,則該學(xué)生的所有記錄都要逐一修改如果學(xué)生改名,則該學(xué)生的所有記錄都要逐一修改snsn;又如某系更換系主任,則屬于該系的學(xué)生記錄都要修改又如某系更換系主任,則屬于該系的學(xué)生記錄都要修改mnmn的內(nèi)容,稍有不慎,就有可能漏改某些記錄,這就會造成數(shù)的內(nèi)容,稍有不慎,就有可能漏改某些記錄,這就會造成數(shù)據(jù)的不一致性,破壞了數(shù)據(jù)的完整性。據(jù)的不一致性,破壞了數(shù)據(jù)的完整性。v由于存在以上問題,我們說,由于存在以上問題,我們說,scdscd是一個(gè)不好的關(guān)系模是一個(gè)不好的關(guān)系模式。產(chǎn)生上述問題的原因,直觀地說,是因?yàn)殛P(guān)系中式。產(chǎn)生上
13、述問題的原因,直觀地說,是因?yàn)殛P(guān)系中“包羅萬象包羅萬象”,內(nèi)容太雜了。,內(nèi)容太雜了。v那么,怎樣才能得到一個(gè)好的關(guān)系模式呢?那么,怎樣才能得到一個(gè)好的關(guān)系模式呢?v我們把關(guān)系模式我們把關(guān)系模式scdscd分解為下面三個(gè)結(jié)構(gòu)簡單的關(guān)系模分解為下面三個(gè)結(jié)構(gòu)簡單的關(guān)系模式,如圖式,如圖5.25.2所示。所示。學(xué)生關(guān)系學(xué)生關(guān)系 s (sno,sn,age,dept)s (sno,sn,age,dept)選課關(guān)系選課關(guān)系 sc (sno,cno,score)sc (sno,cno,score)系關(guān)系系關(guān)系 d (dept,mn)d (dept,mn)snosnosnsnageagedeptdeptsno
14、snocnocnoscorescores1趙亦17計(jì)算機(jī)s1s1c1c19090s2錢爾18信息s1c285s3孫珊20信息s2c557s4李思21自動化s2c680s2c7s2c570deptdeptmnmns3c10計(jì)算機(jī)計(jì)算機(jī)劉偉劉偉s3c270信息信息王平王平s3c485自動化自動化劉偉劉偉s4c193圖圖5.2 5.2 分解后的關(guān)系模式分解后的關(guān)系模式 n在以上三個(gè)關(guān)系模式中,實(shí)現(xiàn)了信息的某在以上三個(gè)關(guān)系模式中,實(shí)現(xiàn)了信息的某種程度的分離種程度的分離s s中存儲學(xué)生基本信息,與所選課程及系主任中存儲學(xué)生基本信息,與所選課程及系主任無關(guān);無關(guān);d d中存儲系的有關(guān)信息,與學(xué)生無關(guān);中存
15、儲系的有關(guān)信息,與學(xué)生無關(guān);scsc中存儲學(xué)生選課的信息,而與所學(xué)生及系中存儲學(xué)生選課的信息,而與所學(xué)生及系的有關(guān)信息無關(guān)。的有關(guān)信息無關(guān)。n與與scdscd相比,分解為三個(gè)關(guān)系模式后,數(shù)據(jù)的相比,分解為三個(gè)關(guān)系模式后,數(shù)據(jù)的冗余度明顯降低。冗余度明顯降低。當(dāng)新插入一個(gè)系時(shí),只要在關(guān)系當(dāng)新插入一個(gè)系時(shí),只要在關(guān)系d d中添加一條記中添加一條記錄。錄。當(dāng)某個(gè)學(xué)生尚未選課,只要在關(guān)系當(dāng)某個(gè)學(xué)生尚未選課,只要在關(guān)系s s中添加一條中添加一條學(xué)生記錄,而與選課關(guān)系無關(guān),這就避免了學(xué)生記錄,而與選課關(guān)系無關(guān),這就避免了插入插入異常異常。當(dāng)一個(gè)系的學(xué)生全部畢業(yè)時(shí),只需在當(dāng)一個(gè)系的學(xué)生全部畢業(yè)時(shí),只需在s
16、s中刪除該中刪除該系的全部學(xué)生記錄,而關(guān)系系的全部學(xué)生記錄,而關(guān)系d d中有關(guān)該系的信息中有關(guān)該系的信息仍然保留,從而不會引起仍然保留,從而不會引起刪除異常刪除異常。同時(shí),由于數(shù)據(jù)冗余度的降低,數(shù)據(jù)沒有重復(fù)存同時(shí),由于數(shù)據(jù)冗余度的降低,數(shù)據(jù)沒有重復(fù)存儲,也不會引起儲,也不會引起更新異常更新異常。 n經(jīng)過上述分析,我們說分解后的關(guān)系模經(jīng)過上述分析,我們說分解后的關(guān)系模式是一個(gè)好的關(guān)系數(shù)據(jù)庫模式。式是一個(gè)好的關(guān)系數(shù)據(jù)庫模式。n從而得出結(jié)論,一個(gè)好的關(guān)系模式應(yīng)該從而得出結(jié)論,一個(gè)好的關(guān)系模式應(yīng)該具備以下四個(gè)條件:具備以下四個(gè)條件:1. 1. 盡可能少的數(shù)據(jù)冗余盡可能少的數(shù)據(jù)冗余。2. 2. 沒有插入
17、異常沒有插入異常。3. 3. 沒有刪除異常沒有刪除異常。4. 4. 沒有更新異常沒有更新異常。 v但要注意,一個(gè)好的關(guān)系模式并不是在任何情況下都是但要注意,一個(gè)好的關(guān)系模式并不是在任何情況下都是最優(yōu)的最優(yōu)的n比如查詢某個(gè)學(xué)生選修課程名及所在系的系主任時(shí),比如查詢某個(gè)學(xué)生選修課程名及所在系的系主任時(shí),要通過連接,而連接所需要的系統(tǒng)開銷非常大,因此要通過連接,而連接所需要的系統(tǒng)開銷非常大,因此要以實(shí)際設(shè)計(jì)的目標(biāo)出發(fā)進(jìn)行設(shè)計(jì)要以實(shí)際設(shè)計(jì)的目標(biāo)出發(fā)進(jìn)行設(shè)計(jì)如何按照一定的規(guī)范設(shè)計(jì)關(guān)系模式,將結(jié)構(gòu)復(fù)雜的關(guān)系如何按照一定的規(guī)范設(shè)計(jì)關(guān)系模式,將結(jié)構(gòu)復(fù)雜的關(guān)系分解成結(jié)構(gòu)簡單的關(guān)系,從而把不好的關(guān)系數(shù)據(jù)庫模式分解
18、成結(jié)構(gòu)簡單的關(guān)系,從而把不好的關(guān)系數(shù)據(jù)庫模式轉(zhuǎn)變?yōu)楹玫年P(guān)系數(shù)據(jù)庫模式,這就是轉(zhuǎn)變?yōu)楹玫年P(guān)系數(shù)據(jù)庫模式,這就是關(guān)系的規(guī)范化關(guān)系的規(guī)范化。我們要設(shè)計(jì)的關(guān)系模式中的各屬性是相互依賴、相互制我們要設(shè)計(jì)的關(guān)系模式中的各屬性是相互依賴、相互制約的,這樣才構(gòu)成了一個(gè)結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)恼w。約的,這樣才構(gòu)成了一個(gè)結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)恼w。因此在設(shè)計(jì)關(guān)模式時(shí),必須從語義上分析這些因此在設(shè)計(jì)關(guān)模式時(shí),必須從語義上分析這些依賴關(guān)系依賴關(guān)系。數(shù)據(jù)庫模式的好壞和關(guān)系中各屬性間的依賴關(guān)系有關(guān),數(shù)據(jù)庫模式的好壞和關(guān)系中各屬性間的依賴關(guān)系有關(guān),因此,我們先討論屬性間的依賴關(guān)系,然后再討論關(guān)系因此,我們先討論屬性間的依賴關(guān)系,然后再討論關(guān)系規(guī)范
19、化理論。規(guī)范化理論。 5.2 5.2 函數(shù)依賴函數(shù)依賴5.2.15.2.1函數(shù)依賴的定義及性質(zhì)函數(shù)依賴的定義及性質(zhì)關(guān)系模式中的各屬性之間相互依賴、相互制約的聯(lián)關(guān)系模式中的各屬性之間相互依賴、相互制約的聯(lián)系稱為系稱為數(shù)據(jù)依賴數(shù)據(jù)依賴。數(shù)據(jù)依賴一般分為數(shù)據(jù)依賴一般分為函數(shù)依賴函數(shù)依賴、多值依賴多值依賴和和連接依賴連接依賴。其中其中, ,函數(shù)依賴函數(shù)依賴是最重要的數(shù)據(jù)依賴。是最重要的數(shù)據(jù)依賴。函數(shù)依賴(函數(shù)依賴(functional dependencyfunctional dependency)是關(guān)系模式)是關(guān)系模式中屬性之間的一種中屬性之間的一種邏輯依賴關(guān)系邏輯依賴關(guān)系。v例如在上一節(jié)介紹的關(guān)系
20、模式例如在上一節(jié)介紹的關(guān)系模式scdscd中,中,snosno與與snsn、ageage、deptdept之間都有一種依賴關(guān)系。之間都有一種依賴關(guān)系。v由于一個(gè)由于一個(gè)snosno只對應(yīng)一個(gè)學(xué)生,而一個(gè)學(xué)生只能屬只對應(yīng)一個(gè)學(xué)生,而一個(gè)學(xué)生只能屬于一個(gè)系,所以當(dāng)于一個(gè)系,所以當(dāng)snosno的值確定之后,的值確定之后,snsn,ageage,deptdept的值也隨之被唯一的確定了。的值也隨之被唯一的確定了。v這類似于變量之間的這類似于變量之間的單值函數(shù)關(guān)系單值函數(shù)關(guān)系。設(shè)單值函數(shù)。設(shè)單值函數(shù)y=f(x)y=f(x),自變量,自變量x x的值可以決定一個(gè)唯一的函數(shù)值的值可以決定一個(gè)唯一的函數(shù)值y
21、y。v在這里,我們說在這里,我們說snosno決定函數(shù)(決定函數(shù)(snsn,ageage,deptdept),),或者說(或者說(snsn,ageage,deptdept)函數(shù)依賴于)函數(shù)依賴于snosno5.2 5.2 函數(shù)依賴函數(shù)依賴定義定義5.15.1設(shè)關(guān)系模式設(shè)關(guān)系模式r(ur(u,f)f),u u是屬性全集,是屬性全集,f f是是u u上的函數(shù)依賴集,上的函數(shù)依賴集,x x和和y y是是u u的子集,如果對于的子集,如果對于r(u)r(u)的任意一個(gè)可能的關(guān)系的任意一個(gè)可能的關(guān)系r r,對于,對于x x的每一個(gè)具體值,的每一個(gè)具體值,y y都有唯一的具體值與之對應(yīng),則稱都有唯一的具體
22、值與之對應(yīng),則稱x x決定函數(shù)決定函數(shù)y y,或,或y y函數(shù)依賴于函數(shù)依賴于x x,記作,記作xyxy。我們稱我們稱x x為為決定因素決定因素,y y為為依賴因素依賴因素。當(dāng)當(dāng)y y不函數(shù)依賴于不函數(shù)依賴于x x時(shí),記作:時(shí),記作:x yx y。當(dāng)當(dāng)xyxy且且yxyx時(shí),則記作:時(shí),則記作: x yx y。5.2.1.15.2.1.1 函數(shù)依賴的定義函數(shù)依賴的定義v對于關(guān)系模式對于關(guān)系模式scdscdu=sno,sn,age,dept,mn,cno,scoreu=sno,sn,age,dept,mn,cno,scoref=snosnf=snosn,snoagesnoage,snodepts
23、nodeptv一個(gè)一個(gè)snosno有多個(gè)有多個(gè)scorescore的值與其對應(yīng),因此的值與其對應(yīng),因此scorescore不能唯一地確定,即不能唯一地確定,即scorescore不能函數(shù)依賴于不能函數(shù)依賴于snosno,所以有:所以有:sno scoresno score。v但是但是scorescore可以被(可以被(snosno,cnocno)唯一地確定。所)唯一地確定。所以可表示為:(以可表示為:(snosno,cnocno)scorescore。 函數(shù)依賴函數(shù)依賴檢驗(yàn):檢驗(yàn): ac? ca? abd?辨識:辨識:n滿足依賴的關(guān)系滿足依賴的關(guān)系:依賴在模式的某個(gè)關(guān)系實(shí)例上成立:依賴在模式的
24、某個(gè)關(guān)系實(shí)例上成立n模式上成立的依賴模式上成立的依賴:依賴在模式的所有關(guān)系實(shí)例上都:依賴在模式的所有關(guān)系實(shí)例上都成立成立abcda1b1c1d1a1b2c1d2a2b2c2d2a2b3c2d3a3b3c2d4abc123423533練習(xí)練習(xí)有關(guān)函數(shù)依賴的幾點(diǎn)說明:有關(guān)函數(shù)依賴的幾點(diǎn)說明:1 1平凡的函數(shù)依賴與非平凡的函數(shù)依賴平凡的函數(shù)依賴與非平凡的函數(shù)依賴。當(dāng)屬性集當(dāng)屬性集y y是屬性集是屬性集x x的子集時(shí),則必然存在著的子集時(shí),則必然存在著函數(shù)依賴函數(shù)依賴xy,xy,這種類型的函數(shù)依賴稱為平凡這種類型的函數(shù)依賴稱為平凡的函數(shù)依賴。的函數(shù)依賴。如果如果y y不是不是x x的子集,則稱的子集,
25、則稱xyxy為非平凡的函數(shù)為非平凡的函數(shù)依賴。依賴。若不特別聲明,我們討論的都是非平凡的函數(shù)若不特別聲明,我們討論的都是非平凡的函數(shù)依賴依賴2 2函數(shù)依賴是語義范疇的概念函數(shù)依賴是語義范疇的概念。我們只能根據(jù)語義來確定一個(gè)函數(shù)依賴,而不我們只能根據(jù)語義來確定一個(gè)函數(shù)依賴,而不能按照其形式化定義來證明一個(gè)函數(shù)依賴是否能按照其形式化定義來證明一個(gè)函數(shù)依賴是否成立。成立。例如,對于關(guān)系模式例如,對于關(guān)系模式s s,當(dāng)學(xué)生不存在重名的情,當(dāng)學(xué)生不存在重名的情況下,可以得到?jīng)r下,可以得到:snagesnagesndeptsndept這種函數(shù)依賴關(guān)系,必須是在沒有重名的學(xué)生這種函數(shù)依賴關(guān)系,必須是在沒有重
26、名的學(xué)生條件下才成立的,否則就不存在函數(shù)依賴了。條件下才成立的,否則就不存在函數(shù)依賴了。所以函數(shù)依賴反映了一種語義完整性約束所以函數(shù)依賴反映了一種語義完整性約束3 3函數(shù)依賴與屬性之間的聯(lián)系類型有關(guān)函數(shù)依賴與屬性之間的聯(lián)系類型有關(guān)。(1 1)在一個(gè)關(guān)系模式中,如果屬性)在一個(gè)關(guān)系模式中,如果屬性x x與與y y有有1:11:1聯(lián)系時(shí),則存在函數(shù)依賴聯(lián)系時(shí),則存在函數(shù)依賴xyxy,yxyx,即即x yx y。 例如,當(dāng)學(xué)生無重名時(shí),例如,當(dāng)學(xué)生無重名時(shí),sno snsno sn(2 2)如果屬性)如果屬性x x與與y y有有1:m1:m的聯(lián)系時(shí),則只存的聯(lián)系時(shí),則只存在函數(shù)依賴在函數(shù)依賴xyxy
27、。例如,例如,snosno與與ageage,deptdept之間均為之間均為1:m1:m聯(lián)系,所以聯(lián)系,所以有有snoagesnoage,snodeptsnodept(3 3)如果屬性)如果屬性x x與與y y有有m: nm: n的聯(lián)系時(shí),則的聯(lián)系時(shí),則x x與與y y之間不存在任何函數(shù)依賴關(guān)系。之間不存在任何函數(shù)依賴關(guān)系。 例如,一個(gè)學(xué)生可以選修多門課程,一門課例如,一個(gè)學(xué)生可以選修多門課程,一門課程又可以為多個(gè)學(xué)生選修,所以程又可以為多個(gè)學(xué)生選修,所以snosno與與cnocno之間之間不存在函數(shù)依賴關(guān)系不存在函數(shù)依賴關(guān)系。v由于函數(shù)依賴與屬性之間的聯(lián)系類型有關(guān),由于函數(shù)依賴與屬性之間的聯(lián)
28、系類型有關(guān),所以在確定屬性間的函數(shù)依賴關(guān)系時(shí),可所以在確定屬性間的函數(shù)依賴關(guān)系時(shí),可以從分析以從分析屬性間的聯(lián)系類型屬性間的聯(lián)系類型入手,便可確入手,便可確定屬性間的函數(shù)依賴定屬性間的函數(shù)依賴4 4函數(shù)依賴關(guān)系的存在與時(shí)間無關(guān)函數(shù)依賴關(guān)系的存在與時(shí)間無關(guān)。因?yàn)楹瘮?shù)依賴是指關(guān)系中的所有元組應(yīng)該滿足的約束因?yàn)楹瘮?shù)依賴是指關(guān)系中的所有元組應(yīng)該滿足的約束條件,而不是指關(guān)系中某個(gè)或某些元組所滿足的約束條件,而不是指關(guān)系中某個(gè)或某些元組所滿足的約束條件。條件。當(dāng)關(guān)系中的元組增加、刪除或更新后都不能破壞這種當(dāng)關(guān)系中的元組增加、刪除或更新后都不能破壞這種函數(shù)依賴。函數(shù)依賴。因此,必須根據(jù)語義來確定屬性之間的函
29、數(shù)依賴,而因此,必須根據(jù)語義來確定屬性之間的函數(shù)依賴,而不能單憑某一時(shí)刻關(guān)系中的實(shí)際數(shù)據(jù)值來判斷。不能單憑某一時(shí)刻關(guān)系中的實(shí)際數(shù)據(jù)值來判斷。例如,對于關(guān)系模式例如,對于關(guān)系模式s,假設(shè)沒有給出無重名的學(xué)生,假設(shè)沒有給出無重名的學(xué)生這種語義規(guī)定,則即使當(dāng)前關(guān)系中沒有重名的記錄,這種語義規(guī)定,則即使當(dāng)前關(guān)系中沒有重名的記錄,也只能存在函數(shù)依賴也只能存在函數(shù)依賴snosn,而不能存在函數(shù)依賴,而不能存在函數(shù)依賴snsno,因?yàn)槿绻略黾右粋€(gè)重名的學(xué)生,函數(shù)依,因?yàn)槿绻略黾右粋€(gè)重名的學(xué)生,函數(shù)依賴賴snsno必然不成立。必然不成立。所以函數(shù)依賴關(guān)系的存在所以函數(shù)依賴關(guān)系的存在與時(shí)間無關(guān)與時(shí)間無關(guān),而
30、只與數(shù)據(jù)之,而只與數(shù)據(jù)之間的間的語義規(guī)定語義規(guī)定有關(guān)。有關(guān)。 5 5函數(shù)依賴可以保證關(guān)系分解的無損連接性函數(shù)依賴可以保證關(guān)系分解的無損連接性。設(shè)設(shè)r r(x x,y y,z z),),x x,y y,z z為不相交的屬性集合,如果為不相交的屬性集合,如果xyxy或或xz,xz,則有則有r(xr(x,y y,z)=rxz)=rx,y rxy rx,zz,其中,其中,rxrx,yy表示關(guān)系表示關(guān)系r r在屬性(在屬性(x x,y y)上的投影,即)上的投影,即r r等于其投影在等于其投影在x x上的自然連接,這樣便保證了關(guān)系上的自然連接,這樣便保證了關(guān)系r r分解分解后不會丟失原有的信息,稱作后不
31、會丟失原有的信息,稱作關(guān)系分解的無損連接性關(guān)系分解的無損連接性。例如,對于關(guān)系模式例如,對于關(guān)系模式scdscd,有,有snosno(snsn,ageage,deptdept,mnmn),),scdscd(snosno,snsn,ageage,deptdept,mnmn,cnocno,scorescore)=scdsno=scdsno,snsn,ageage,deptdept,mn scdsnomn scdsno,cnocno,scorescore,也就是說,用其投影在,也就是說,用其投影在snosno上的自然連接可復(fù)原上的自然連接可復(fù)原關(guān)系模式關(guān)系模式scdscd。這一性質(zhì)非常重要,在后一節(jié)
32、的這一性質(zhì)非常重要,在后一節(jié)的關(guān)系規(guī)范化關(guān)系規(guī)范化中要用到。中要用到。 5.2.1.2 5.2.1.2 函數(shù)依賴的基本性質(zhì)函數(shù)依賴的基本性質(zhì)1 1投影性投影性根據(jù)平凡的函數(shù)依賴的定義可知,一組屬性根據(jù)平凡的函數(shù)依賴的定義可知,一組屬性函數(shù)決定它的所有子集函數(shù)決定它的所有子集例如,在關(guān)系例如,在關(guān)系scdscd中,(中,(snosno,cnocno)snosno和和(snosno,cnocno)cnocno2 2擴(kuò)張性擴(kuò)張性若若xyxy且且wzwz,則(,則(x x,w w)(y y,z z)例如,例如,snosno(snsn,ageage),),deptmndeptmn,則有,則有(snosn
33、o,deptdept)(snsn,ageage,mnmn)3 3合并性合并性若若xyxy且且xzxz則必有則必有xx(y y,z z)。)。例如,在關(guān)系例如,在關(guān)系scdscd中,中,snosno(sn,agesn,age),),snosno(dept,mndept,mn),則有),則有snosno(sn,agesn,age,deptdept,mnmn)。4 4分解性分解性若若xx(y y,z z), ,則則xyxy且且xzxz。很顯然,分解性為合。很顯然,分解性為合并性的逆過程。并性的逆過程。由合并性和分解性,很容易得到以下事實(shí):由合并性和分解性,很容易得到以下事實(shí):xaxa1 1,a a2
34、 2,,a,an n成立的充分必要條件是成立的充分必要條件是xaxai i(i=1,2,i=1,2,n,n)成立)成立。 5.2.2 5.2.2 完全函數(shù)依賴與部分函數(shù)依賴完全函數(shù)依賴與部分函數(shù)依賴定義定義5.25.2 設(shè)關(guān)系模式設(shè)關(guān)系模式r(u)r(u),u u是屬性全集,是屬性全集,x x和和y y是是u u的子集的子集n如果如果xyxy,并且對于,并且對于x x的任何一個(gè)真子集的任何一個(gè)真子集x,x,都有都有x yx y,則稱則稱y y對對x x完全函數(shù)依賴完全函數(shù)依賴(full functional dependency),記作,記作 x yx y。n如果對如果對x x的某個(gè)真子集的某
35、個(gè)真子集xx,有,有xyxy,則稱,則稱y y對部對部分函數(shù)依賴分函數(shù)依賴(partial functional dependency),記作記作x yx y。n例如,在關(guān)系模式例如,在關(guān)系模式scdscd中,因?yàn)橹校驗(yàn)閟no scoresno score,且,且cno scorecno score,所以有:(,所以有:(snosno,cnocno) score score 。n而而snoagesnoage,所以(,所以(snosno,cnocno) ageage。f pfp pn由定義由定義5.25.2可知:可知:只有當(dāng)決定因素是組合屬性時(shí),討論部分函數(shù)只有當(dāng)決定因素是組合屬性時(shí),討論部分
36、函數(shù)依賴才有意義,依賴才有意義,當(dāng)決定因素是單屬性時(shí),只能是完全函數(shù)依賴。當(dāng)決定因素是單屬性時(shí),只能是完全函數(shù)依賴。例如,在關(guān)系模式例如,在關(guān)系模式s s(snosno,snsn,ageage,deptdept),),決定因素為單屬性決定因素為單屬性snosno,有,有snosno(snsn,ageage,deptdept),不存在部分函數(shù)依賴),不存在部分函數(shù)依賴5.2.3 5.2.3 傳遞函數(shù)依賴傳遞函數(shù)依賴定義定義5.35.3 設(shè)有關(guān)系模式設(shè)有關(guān)系模式r r(u u),),u u是屬性全集,是屬性全集,x x,y y,z z是是u u的子集,的子集,若若xyxy,但,但y xy x,而,
37、而yzyz(y xy x,z yz y),則),則稱稱z z對對x x傳遞函數(shù)依賴傳遞函數(shù)依賴(transitive functional dependency),記作:,記作:x x z z。如果如果yxyx,則,則x yx y,這時(shí)稱,這時(shí)稱z z對對x x直接函數(shù)依賴直接函數(shù)依賴,而不是傳遞函數(shù)依賴。而不是傳遞函數(shù)依賴。例如,在關(guān)系模式例如,在關(guān)系模式scdscd中,中,snodeptnsnodeptn,但,但deptn snodeptn sno,而,而deptnmndeptnmn,則有,則有sno mnsno mn。當(dāng)學(xué)生不存在重名的情況下,有當(dāng)學(xué)生不存在重名的情況下,有snosnsn
38、osn,snsnosnsno,sno snsno sn,sndeptnsndeptn,這時(shí),這時(shí)deptndeptn對對snosno是是直接函數(shù)依賴直接函數(shù)依賴,而不是傳遞函數(shù)依賴,而不是傳遞函數(shù)依賴 t t5.3 范范 式式 規(guī)范化的規(guī)范化的基本思想基本思想是消除關(guān)系模式中的數(shù)據(jù)冗余,消除數(shù)據(jù)依是消除關(guān)系模式中的數(shù)據(jù)冗余,消除數(shù)據(jù)依賴中的不合適的部分,解決數(shù)據(jù)插入、刪除時(shí)發(fā)生異?,F(xiàn)象賴中的不合適的部分,解決數(shù)據(jù)插入、刪除時(shí)發(fā)生異?,F(xiàn)象這就要求關(guān)系數(shù)據(jù)庫設(shè)計(jì)出來的關(guān)系模式要滿足一定的條件。這就要求關(guān)系數(shù)據(jù)庫設(shè)計(jì)出來的關(guān)系模式要滿足一定的條件。我們把關(guān)系數(shù)據(jù)庫的規(guī)范化過程中為不同程度的規(guī)范化要求
39、設(shè)我們把關(guān)系數(shù)據(jù)庫的規(guī)范化過程中為不同程度的規(guī)范化要求設(shè)立的不同標(biāo)準(zhǔn)稱為立的不同標(biāo)準(zhǔn)稱為范式范式(normal formnormal form)。)。由于規(guī)范化的程度不同,就產(chǎn)生了由于規(guī)范化的程度不同,就產(chǎn)生了不同的范式不同的范式。 滿足最基本規(guī)范化要求的關(guān)系模式叫滿足最基本規(guī)范化要求的關(guān)系模式叫第一范式第一范式, 在第一范式中進(jìn)一步滿足一些要求為在第一范式中進(jìn)一步滿足一些要求為第二范式第二范式, 以此類推就產(chǎn)生了以此類推就產(chǎn)生了第三范式第三范式等概念。等概念。每種范式都規(guī)定了一些限制約束條件。每種范式都規(guī)定了一些限制約束條件。 n范式的概念最早由范式的概念最早由e.f.codde.f.cod
40、d提出。提出。n從從19711971年起,年起,coddcodd相繼提出了關(guān)系的三級規(guī)相繼提出了關(guān)系的三級規(guī)范化形式,即第一范式(范化形式,即第一范式(1nf1nf)、第二范式)、第二范式(2nf2nf)、第三范式()、第三范式(3nf3nf)。)。n19741974年,年,coddcodd和和boyceboyce以共同提出了一個(gè)新的以共同提出了一個(gè)新的范式的概念,即范式的概念,即boyce-coddboyce-codd范式,簡稱范式,簡稱bcbc范式。范式。n19761976年年faginfagin提出了第四范式提出了第四范式( 4nf)( 4nf)n后來又有人定義了第五范式后來又有人定義了
41、第五范式(projectjoinnf)(projectjoinnf)n各個(gè)范式之間的聯(lián)系可以表示為:各個(gè)范式之間的聯(lián)系可以表示為:n5nf 4nf bcnf 3nf 2nf 1nf5nf 4nf bcnf 3nf 2nf 1nf 圖圖5.3 5.3 各種范式之間的關(guān)系各種范式之間的關(guān)系5.3.1 5.3.1 第一范式第一范式n第一范式第一范式(first normal form)是最基本的規(guī)是最基本的規(guī)范形式,即關(guān)系中每個(gè)屬性都是不可再分的簡單項(xiàng)范形式,即關(guān)系中每個(gè)屬性都是不可再分的簡單項(xiàng)定義定義5.45.4 如果關(guān)系模式如果關(guān)系模式r r,其所有的屬性均為簡單,其所有的屬性均為簡單屬性,即每
42、個(gè)屬性都城是不可再分的,則稱屬性,即每個(gè)屬性都城是不可再分的,則稱r r屬于屬于第一范式,簡稱第一范式,簡稱1nf1nf,記作,記作r r 1nf1nf。在第在第3 3章討論關(guān)系的性質(zhì)時(shí),我們把滿足這個(gè)條件的關(guān)系章討論關(guān)系的性質(zhì)時(shí),我們把滿足這個(gè)條件的關(guān)系稱為稱為規(guī)范化關(guān)系規(guī)范化關(guān)系在關(guān)系數(shù)據(jù)庫系統(tǒng)中只討論規(guī)范化的關(guān)系,凡是非規(guī)范化在關(guān)系數(shù)據(jù)庫系統(tǒng)中只討論規(guī)范化的關(guān)系,凡是非規(guī)范化的關(guān)系模式必須化成規(guī)范化的關(guān)系。的關(guān)系模式必須化成規(guī)范化的關(guān)系。在非規(guī)范化的關(guān)系中去掉組合項(xiàng)就能化成規(guī)范化的關(guān)系。在非規(guī)范化的關(guān)系中去掉組合項(xiàng)就能化成規(guī)范化的關(guān)系。每個(gè)規(guī)范化的關(guān)系都屬于每個(gè)規(guī)范化的關(guān)系都屬于1nf1
43、nf,這也是它之所以稱為,這也是它之所以稱為“第第一一”的原因。的原因。 1nf分量是否需要再分,與具體應(yīng)用有關(guān)。如果用到分量是否需要再分,與具體應(yīng)用有關(guān)。如果用到值的一部分,則需要進(jìn)一步分割值的一部分,則需要進(jìn)一步分割如果只是查詢出生日期,則它滿足如果只是查詢出生日期,則它滿足1nf如果查詢兩人生日是否相同,則只比較月、日,如果查詢兩人生日是否相同,則只比較月、日,需要將生日分解,就不滿足需要將生日分解,就不滿足1nf如果比較兩人的生肖呢?如果比較兩人的生肖呢?姓名姓名生日生日王軍王軍78.7.10張立張立79.7.10李明李明80.3.28姓名姓名年年月日月日王軍王軍687.10張立張立6
44、97.10李明李明803.28在在5.15.1節(jié)中給出的關(guān)系模式節(jié)中給出的關(guān)系模式scdscd屬于第一屬于第一范式,但其具有大量的數(shù)據(jù)冗余,具有插范式,但其具有大量的數(shù)據(jù)冗余,具有插入異常、刪除異常、更新異常等弊端。入異常、刪除異常、更新異常等弊端。為什么會存在這種問題呢?為什么會存在這種問題呢?讓我們分析一下讓我們分析一下scdscd中的函數(shù)依賴關(guān)系,中的函數(shù)依賴關(guān)系,它的關(guān)系鍵是(它的關(guān)系鍵是(snosno,cnocno)的屬性組合,)的屬性組合,所以有:所以有: n(snosno,cnocno) scorescorensnosnsnosn,(,(snosno,cnocno) snsnns
45、noagesnoage,(,(snosno,cnocno) ageagensnodeptsnodept,(,(snosno,cnocno) deptdeptnsno mnsno mn,(,(snosno,cnocno) mnmn f p p ppt我們可以用函數(shù)信賴圖表示以上函數(shù)依賴關(guān)系,如圖我們可以用函數(shù)信賴圖表示以上函數(shù)依賴關(guān)系,如圖5.45.4所示。所示。 snsnmnmnscorescoresnosnocnocnoppf由此可見,在由此可見,在scdscd中,既存在完全函數(shù)依賴,又存在部分函數(shù)中,既存在完全函數(shù)依賴,又存在部分函數(shù)依賴和傳遞函數(shù)依賴。依賴和傳遞函數(shù)依賴。這種情況往往在數(shù)
46、據(jù)庫中是不允許的,也正是由于關(guān)系中存在這種情況往往在數(shù)據(jù)庫中是不允許的,也正是由于關(guān)系中存在著復(fù)雜的函數(shù)依賴,才導(dǎo)致數(shù)據(jù)操作中出現(xiàn)了種弊端。著復(fù)雜的函數(shù)依賴,才導(dǎo)致數(shù)據(jù)操作中出現(xiàn)了種弊端??朔@些弊端的方法是用投影運(yùn)算將關(guān)系分解,去掉過于復(fù)雜克服這些弊端的方法是用投影運(yùn)算將關(guān)系分解,去掉過于復(fù)雜的函數(shù)依賴關(guān)系,向更高一級的范式進(jìn)行轉(zhuǎn)換。的函數(shù)依賴關(guān)系,向更高一級的范式進(jìn)行轉(zhuǎn)換。5.3.2 5.3.2 第二范式第二范式v定義定義5.55.5 如果關(guān)系模式如果關(guān)系模式r r 1nf1nf,且每個(gè),且每個(gè)非主屬性非主屬性都完全都完全函數(shù)依賴于函數(shù)依賴于r r的每個(gè)的每個(gè)關(guān)系鍵關(guān)系鍵,則稱,則稱r r
47、屬于屬于第二范式第二范式(second normal form),簡稱,簡稱2nf2nf,記作,記作r r 2nf2nf。在關(guān)系模式在關(guān)系模式scdscd中,中,snosno,cnocno為主屬性,為主屬性,ageage,deptdept,mnmn,mnmn,scorescore均為非主屬性,經(jīng)上述分析,存在非主屬性對關(guān)均為非主屬性,經(jīng)上述分析,存在非主屬性對關(guān)系鍵的部分函數(shù)依賴,所以系鍵的部分函數(shù)依賴,所以scd 2nfscd 2nf。而如圖而如圖5.25.2所示的由所示的由scdscd分解的三個(gè)關(guān)系模式分解的三個(gè)關(guān)系模式s s,d d,scsc,其中其中s s的關(guān)系鍵為的關(guān)系鍵為snosn
48、o,d d的關(guān)系鍵為的關(guān)系鍵為deptdept,都是單屬性,不,都是單屬性,不可能存在部分函數(shù)依賴。可能存在部分函數(shù)依賴。而對于而對于scsc,(,(snosno,cnocno) scorescore。所以。所以scdscd分解后,分解后,消除了非主屬性對關(guān)系鍵的部分函數(shù)依賴,消除了非主屬性對關(guān)系鍵的部分函數(shù)依賴,s s,d d,scsc均屬均屬于于2nf2nf。 fn又如在第又如在第3 3章中,講述全碼的概念時(shí)給出的章中,講述全碼的概念時(shí)給出的關(guān)系模式關(guān)系模式tcstcs(t t,c c,s s),),一個(gè)教師可以講授多門課程,一門課程可以為一個(gè)教師可以講授多門課程,一門課程可以為多個(gè)教師講
49、授,多個(gè)教師講授,同樣一個(gè)學(xué)生可以選聽多門課程,一門課程可同樣一個(gè)學(xué)生可以選聽多門課程,一門課程可以為多個(gè)學(xué)生選聽,以為多個(gè)學(xué)生選聽,(t,c,s)(t,c,s)三個(gè)屬性的組合是關(guān)系鍵,三個(gè)屬性的組合是關(guān)系鍵,t,c,st,c,s都是都是主屬性,而無非主屬性,所以也就不可能存在主屬性,而無非主屬性,所以也就不可能存在非主屬性對關(guān)系鍵的部分函數(shù)依賴,非主屬性對關(guān)系鍵的部分函數(shù)依賴,tcstcs 2nf2nf。n經(jīng)以上分析,可以得到兩個(gè)結(jié)論:經(jīng)以上分析,可以得到兩個(gè)結(jié)論:1 1從從1nf1nf關(guān)系中消除非主屬性對關(guān)系鍵的關(guān)系中消除非主屬性對關(guān)系鍵的部分函數(shù)依賴,則可得到部分函數(shù)依賴,則可得到2nf
50、2nf關(guān)系關(guān)系2 2如果如果r r的關(guān)系鍵為單屬性,或的關(guān)系鍵為單屬性,或r r的全體屬的全體屬性均為主屬性,則性均為主屬性,則r r 2nf2nf5.3.2.2 2nf5.3.2.2 2nf規(guī)范化規(guī)范化2nf2nf規(guī)范化是指把規(guī)范化是指把1nf1nf關(guān)系模式通過投影分解轉(zhuǎn)關(guān)系模式通過投影分解轉(zhuǎn)換成換成2nf2nf關(guān)系模式的集合。關(guān)系模式的集合。分解時(shí)遵循的基本原則就是分解時(shí)遵循的基本原則就是“一事一地一事一地”,讓,讓一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。如一個(gè)關(guān)系只描述一個(gè)實(shí)體或者實(shí)體間的聯(lián)系。如果多于一個(gè)實(shí)體或聯(lián)系,則進(jìn)行投影分解。果多于一個(gè)實(shí)體或聯(lián)系,則進(jìn)行投影分解。下面以關(guān)系模式下
51、面以關(guān)系模式scdscd為例,來說明為例,來說明2nf2nf規(guī)范化的規(guī)范化的過程過程v例例5.15.1 將將scd(sno,sn,age,dept,mn,cno,score)scd(sno,sn,age,dept,mn,cno,score)規(guī)范規(guī)范到到2nf2nf。由由snosnsnosn,snoagesnoage,snodeptsnodept,(,(snosno,cnocno) scorescore,可以判斷,關(guān)系,可以判斷,關(guān)系scdscd至少描述了兩個(gè)實(shí)體,至少描述了兩個(gè)實(shí)體,一個(gè)為一個(gè)為學(xué)生實(shí)體學(xué)生實(shí)體,屬性有,屬性有snosno、snsn、ageage、deptdept、mnmn;另
52、一個(gè)是另一個(gè)是學(xué)生與課程學(xué)生與課程的聯(lián)系(的聯(lián)系(選課選課),屬性有),屬性有snosno、cnocno和和scorescore。根據(jù)分解的原則,我們可以將根據(jù)分解的原則,我們可以將scdscd分解成如下兩個(gè)分解成如下兩個(gè)關(guān)系,如圖關(guān)系,如圖5.55.5所示所示fsnosnosnsnageagedeptdeptmnmns1趙亦17計(jì)算機(jī)劉偉s2錢爾18信息王平s3孫珊20信息王平s4李思21自動化劉偉scsc snosnocnocnoscorescores1c190s1c285s2c557s2c680s2c7s2c570s3c10s3c270s3c485s4c193圖圖5.5 5.5 關(guān)系關(guān)系
53、sdsd和和scscsdsd 對于分解后的兩個(gè)關(guān)系對于分解后的兩個(gè)關(guān)系sdsd和和scsc,主鍵分別為,主鍵分別為snosno和(和(snosno,cnocno),非主屬性對主鍵完全函數(shù)依賴。因此,),非主屬性對主鍵完全函數(shù)依賴。因此,sdsd 2nf2nf,scsc 2nf2nf,而且前面已經(jīng)討論,而且前面已經(jīng)討論,scdscd的這種分解沒有丟失的這種分解沒有丟失任何信息,具有無損連接性。任何信息,具有無損連接性。 分解后,分解后,sdsd和和scsc的函數(shù)依賴分別如圖的函數(shù)依賴分別如圖5.65.6和和5.75.7所示。所示。 snosnosnsnsnosnocnocnoscorescore
54、ageagedeptdeptmnmn圖圖5.6 sd5.6 sd中的函數(shù)依賴關(guān)系中的函數(shù)依賴關(guān)系 圖圖5.7 sc5.7 sc中的函數(shù)依賴關(guān)系中的函數(shù)依賴關(guān)系 分析圖中分析圖中sdsd和和scsc中的數(shù)據(jù),可以看出,它們存儲中的數(shù)據(jù),可以看出,它們存儲的冗余度比關(guān)系模式的冗余度比關(guān)系模式scdscd有了較大輻度的降低有了較大輻度的降低學(xué)生的姓名、年齡不需要重復(fù)存儲多次。這樣便學(xué)生的姓名、年齡不需要重復(fù)存儲多次。這樣便可在一定程度上避免數(shù)據(jù)更新所造成的數(shù)據(jù)不一可在一定程度上避免數(shù)據(jù)更新所造成的數(shù)據(jù)不一致性的問題。致性的問題。由于把學(xué)生的基本信息與選課信息分開存儲,則由于把學(xué)生的基本信息與選課信息
55、分開存儲,則學(xué)生基本信息因沒選課而不能插入的問題得到了學(xué)生基本信息因沒選課而不能插入的問題得到了解決,插入異?,F(xiàn)象得到了部分改善。解決,插入異?,F(xiàn)象得到了部分改善。同樣,如果某個(gè)學(xué)生不再選修同樣,如果某個(gè)學(xué)生不再選修c1c1課程,只在選課課程,只在選課關(guān)系關(guān)系scsc中刪去該該學(xué)生選修中刪去該該學(xué)生選修c1c1的記錄即可,而的記錄即可,而sdsd中有關(guān)該學(xué)生的其它信息不會受到任何影響,也中有關(guān)該學(xué)生的其它信息不會受到任何影響,也解決了部分刪除異常問題。解決了部分刪除異常問題。因此可以說關(guān)系模式因此可以說關(guān)系模式sdsd和和scsc在性能上比在性能上比scdscd有了有了顯著提高。顯著提高。 1
56、.1.2nf2nf規(guī)范化的規(guī)范化的形式化描述形式化描述2.2.設(shè)關(guān)系模式設(shè)關(guān)系模式r r(x x,y y,z z),),r r 1nf1nf,但,但r r 2nf2nf,其中,其中,x x是是鍵屬性鍵屬性,y y,z z是是非鍵屬性非鍵屬性,且,且存在部分函數(shù)依賴,存在部分函數(shù)依賴,x x y y。設(shè)。設(shè)x x可表示為可表示為x1x1、x2x2,其中,其中x1 yx1 y。則。則r r(x x,y y,z z)可以分解為)可以分解為rx1rx1,yy和和rxrx,zz。3.3.因?yàn)橐驗(yàn)閤1yx1y,所以,所以r(xr(x,y y,z)=rx1z)=rx1,y rx1y rx1,x2x2,z=r
57、x1z=rx1,y rxy rx,zz,即,即r r等于其投影等于其投影rx1rx1,yy和和xx,zz在在x1x1上的上的自然連接自然連接,r r的分解的分解具有具有無損連接性無損連接性。4.4.由于由于x1 yx1 y,因此,因此rx1rx1,yy 2nf2nf。若。若rxrx,z z 2nf 2nf,可以按照上述方法繼續(xù)進(jìn)行投影分解,可以按照上述方法繼續(xù)進(jìn)行投影分解,直到將直到將rxrx,zz分解為屬于分解為屬于2nf2nf關(guān)系的集合,且關(guān)系的集合,且這種分解必定是有限的。這種分解必定是有限的。 pf fv2nf2nf的缺點(diǎn)的缺點(diǎn)1 1數(shù)據(jù)冗余。數(shù)據(jù)冗余。每個(gè)系名和系主任的名字存儲的次數(shù)
58、每個(gè)系名和系主任的名字存儲的次數(shù)等于該系的學(xué)生人數(shù)。等于該系的學(xué)生人數(shù)。2 2插入異常。插入異常。當(dāng)一個(gè)新系沒有招生時(shí),有關(guān)該系的當(dāng)一個(gè)新系沒有招生時(shí),有關(guān)該系的信息無法插入。信息無法插入。3 3刪除異常。刪除異常。某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪某系學(xué)生全部畢業(yè)而沒有招生時(shí),刪除全部學(xué)生的記錄也隨之刪除了該系的有關(guān)信息。除全部學(xué)生的記錄也隨之刪除了該系的有關(guān)信息。4 4更新異常。更新異常。更換系主任時(shí),仍需改動較多的學(xué)生更換系主任時(shí),仍需改動較多的學(xué)生記錄記錄。之所以存在這些問題,是由于在之所以存在這些問題,是由于在scdscd中存在著中存在著非主屬性非主屬性對對主鍵的主鍵的傳遞依賴傳遞依賴
59、。分析分析scdscd中的函數(shù)依賴關(guān)系,中的函數(shù)依賴關(guān)系,snosnsnosn,snoagesnoage,snodeptsnodept,deptmndeptmn,sno mnsno mn,非主屬性,非主屬性mnmn對主鍵對主鍵snosno傳遞依賴傳遞依賴t5.3.3 5.3.3 第三范式第三范式定義定義5.65.6 如果關(guān)系模式如果關(guān)系模式r r 2nf2nf,且每個(gè),且每個(gè)非主屬性非主屬性都不都不傳遞依賴傳遞依賴于于r r的每個(gè)關(guān)系鍵,則稱的每個(gè)關(guān)系鍵,則稱r r屬于第三范屬于第三范式式(third normal form),簡稱,簡稱3nf3nf,記作,記作r r 3nf3nf。n第三范式
60、具有如下性質(zhì):第三范式具有如下性質(zhì):1 1如果如果r r 3nf3nf,則,則r r也是也是2nf2nf。n證明:證明:3nf3nf的另一種等價(jià)描述是:對于關(guān)系模式的另一種等價(jià)描述是:對于關(guān)系模式r r,不存,不存在如下條件的函數(shù)依賴,在如下條件的函數(shù)依賴,xyxy(y xy x),),yzyz,其中,其中x x是鍵屬性,是鍵屬性,y y是任意屬性組,是任意屬性組,z z是非主屬性,是非主屬性,z yz y。在。在此定義下,令此定義下,令y xy x,y y是是x x的真子集,則以上條件的真子集,則以上條件xyxy,yzyz就變成了非主屬性對鍵就變成了非主屬性對鍵x x的部分函數(shù)依賴,的部分函
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年BIM工程師技能提升培訓(xùn)課件
- 教學(xué)創(chuàng)新之路:2024年級3dmax教案發(fā)展
- 2024年工程制圖教案:未來教學(xué)模式探索
- 2故宮課件:2024年青少年歷史文化教育平臺
- 2024年教育課件展:0以內(nèi)加減法教學(xué)新思路
- 項(xiàng)目質(zhì)量控制措施
- 2024年高考《錦瑟》課件要點(diǎn)
- 瑞士萬通787-KF水分儀操作規(guī)程
- 2024年狐假虎威課件制作:挖掘故事中的教育價(jià)值
- 2024高考地理一輪復(fù)習(xí)第1部分自然地理-重在理解第7講氣壓帶和風(fēng)帶學(xué)案新人教版
- 小學(xué)體育 跳繩(課堂PPT)
- 35KV輸變電工程環(huán)境保護(hù)及水土保持控制措施(共8頁)
- 深大流行音樂基礎(chǔ)樂理課件_3節(jié)奏
- 婦科住院病歷模板
- 噴霧干燥塔控制系統(tǒng)設(shè)計(jì)-PLC總課程設(shè)計(jì)報(bào)告-概要
- 慢性結(jié)腸炎的中醫(yī)藥治療.ppt
- 初中音樂-《小巫師》課件PPT課件
- 第一次工地會議內(nèi)容與議程
- (2021更新)國家開放大學(xué)電大《課程與教學(xué)論》形考任務(wù)4試題及答案
- 單門門禁一體機(jī)操作流程
- 腸套疊實(shí)用教案
評論
0/150
提交評論