自考《數(shù)據(jù)庫(kù)原理》串講-關(guān)系數(shù)據(jù)庫(kù)的模式設(shè)計(jì)
第四章 關(guān)系數(shù)據(jù)庫(kù)的模式設(shè)計(jì)
本章的理論性較強(qiáng),學(xué)習(xí)時(shí)有無(wú)從下手的感覺(jué),在學(xué)習(xí)時(shí)應(yīng)多加思考,從概念出發(fā)去理解理論,前后的理論有較強(qiáng)的聯(lián)系,因此要逐個(gè)理解,但對(duì)于理論的證明等內(nèi)容則不必深究,本章重點(diǎn)是函數(shù)依賴,無(wú)損聯(lián)接、保持依賴和范式的概念。
一、關(guān)系模式的設(shè)計(jì)問(wèn)題( 識(shí)記 )
關(guān)系數(shù)據(jù)庫(kù) 是以關(guān)系模型為基礎(chǔ)的數(shù)據(jù)庫(kù),它利用關(guān)系來(lái)描述現(xiàn)實(shí)世界。一個(gè)關(guān)系既可以用來(lái)描述一個(gè)實(shí)體及其屬性 ,也可以用來(lái)描述實(shí)體間的聯(lián)系。關(guān)系實(shí)質(zhì)上就是一張二維表 ,表的 行稱為元組 ,列稱為屬性 .
關(guān)系模式是用來(lái)定義關(guān)系的,這里的關(guān)系模式我們可以簡(jiǎn)單地理解為一個(gè)表的結(jié)構(gòu),一個(gè)關(guān)系數(shù)據(jù)庫(kù)包含一組關(guān)系,也就是包含一組二維表,這些二維表結(jié)構(gòu)體的集合就構(gòu)成數(shù)據(jù)庫(kù)的模式(也可以理解為數(shù)據(jù)庫(kù)的結(jié)構(gòu))。
關(guān)系數(shù)據(jù)庫(kù) 設(shè)計(jì)理論包括三個(gè)方面內(nèi)容: 數(shù)據(jù)依賴 、范式 、模式設(shè)計(jì)方法。核心內(nèi)容是數(shù)據(jù)依賴。
泛關(guān)系模式 :把現(xiàn)實(shí)問(wèn)題的所有屬性組成一個(gè)關(guān)系模式R(U),這個(gè)關(guān)系模式就稱為泛關(guān)系模式。
數(shù)據(jù)庫(kù)模式 :把泛關(guān)系模式用一組關(guān)系模式的集合ρ來(lái)表示時(shí),這個(gè)ρ就是數(shù)據(jù)庫(kù)模式。
下面我們總結(jié)一下關(guān)系模式的相關(guān)內(nèi)容從“大”到“小”的排列
泛關(guān)系模式→數(shù)據(jù)庫(kù)模式→關(guān)系數(shù)據(jù)庫(kù)→表結(jié)構(gòu)→關(guān)系模式實(shí)例(表)→記錄(行、列。)
關(guān)系模式的存儲(chǔ)異常: 數(shù)據(jù)冗余 、更 新異常 、 插入異常和刪除異常
二、函數(shù)依賴(FD)
1、函數(shù)依賴的定義 ( 領(lǐng)會(huì) ):設(shè)有關(guān)系模式R(A1,A2,……An)或簡(jiǎn)記為R(U),X,Y是U的子集,r是R的任一具體關(guān)系,如果對(duì)r的任意兩個(gè)元組t1,t2,由t1[X]=t2[X]導(dǎo)致t1[Y]=t2[Y],則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記為X→Y.X→Y為模式R的一個(gè)函數(shù)依賴。
這個(gè)定義可以這樣理解 :有一張?jiān)O(shè)計(jì)好的二維表,X,Y是表的某些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上的X值相等,那么必有t1行和t2行上的Y值也相等,這就是說(shuō)Y函數(shù)依賴于X.
2、函數(shù)依賴的邏輯蘊(yùn)涵 ( 識(shí)記 )
設(shè)F是關(guān)系模式R的一個(gè)函數(shù)依賴集,X,Y是R的屬性子集,如果從F中的函數(shù)依賴能夠推出X→Y,則稱F邏輯蘊(yùn)涵X→Y,記為F|=X→Y.
而函數(shù)依賴的閉包F + 是指被F邏輯蘊(yùn)涵的函數(shù)依賴的全體構(gòu)成的集合。
3、鍵和FD的關(guān)系 ( 領(lǐng)會(huì) )
鍵是唯一標(biāo)識(shí)實(shí)體的屬性集。對(duì)于鍵和函數(shù)依賴的關(guān)系:有兩個(gè)條件:設(shè)關(guān)系模式R(A1,A2……An),F(xiàn)是R上的函數(shù)依賴集,X是R的一個(gè)子集,
(1)X→A1A2……An∈F + (它的意思是X能夠決定唯一的一個(gè)元組)
(2)不存在X的真子集Y,使得Y也能決定唯一的一個(gè)元組,則X就是R的一個(gè)候選鍵。(它的意思是X能決定唯一的一個(gè)元組但又沒(méi)有多余的屬性集)
包含在任何一個(gè)候選鍵中的屬性稱為主屬性 ,不包含在任何鍵中的屬性為非主屬性(非鍵屬性),注意主屬性應(yīng)當(dāng)包含在候選鍵中。
4、函數(shù)依賴(FD)的推理規(guī)則 ( 簡(jiǎn)單應(yīng)用 )
前面我們舉的例子中是以實(shí)際經(jīng)驗(yàn)來(lái)確定一個(gè)函數(shù)依賴的邏輯蘊(yùn)涵,但是我們需要一個(gè)推理規(guī)則才能完全確定F或F+的所有函數(shù)依賴。
設(shè)有關(guān)系模式R(U),X,Y,Z,W均是U的子集,F(xiàn)是R上只涉及到U中屬性的函數(shù)依賴集,推理規(guī)則如下:
自反律 :如果Y X U,則X→Y在R上成立。
增廣律 :如果X→Y為F所蘊(yùn)涵,Z U,則XZ→YZ在R上成立。(XZ表示X∪Z,下同)
傳遞律 :如果X→Y和Y→Z在R上成立,則X→Z在R上成立。
合并律 :如果X→Y和X→Z成立,那么X→YZ成立。
偽傳遞律 :如果X→Y和WY→Z成立,那么WX→Z成立。
分解律 :如果X→Y和Z Y成立,那么X→Z成立。
5、函數(shù)依賴推理規(guī)則的完備性 ( 識(shí)記 )
函數(shù)依賴推理規(guī)則系統(tǒng)(自反律、增廣律和傳遞律)是完備的。由推理規(guī)則的完備性可得到兩個(gè)重要結(jié)論:
屬性集X + 中的每個(gè)屬性A,都有X→A被F邏輯蘊(yùn)涵,即X + 是所有由F邏輯蘊(yùn)含X→A的屬性A的集合。
F + 是所有利用Amstrong推理規(guī)則從F導(dǎo)出的函數(shù)依賴的集合
6、函數(shù)依賴集的等價(jià)和覆蓋 ( 識(shí)記)
在關(guān)系模式R(U)上的兩個(gè)函數(shù)依賴集F和G,如果 滿足F + =G + ,則稱F和G是 等價(jià) 的,稱F和G等價(jià)也稱F 覆蓋 G或G覆蓋F.
每個(gè)函數(shù)依賴集F都可以被一個(gè) 右部只有單屬性的函數(shù)依賴集 G所覆蓋。
如果函數(shù)依賴集合F滿足:
(1)F中每一個(gè)函數(shù)依賴的右部都是單屬性;
(2)F中的任一函數(shù)依賴X→A,其F-{X→A}是不等價(jià)的;
(3)F中的任一函數(shù)依賴X→A,Z為X的子集。(F-{X→A})∪{Z→A}與F不等價(jià)。
則稱F為最小函數(shù)依賴集合。
如果函數(shù)依賴集F和G等價(jià),并且G是最小集,那么稱G是F的一個(gè) 最小覆蓋 .
這一段并不要求掌握最小集的求法,但是應(yīng)當(dāng)通過(guò)其求法理解最小集的概念 .
三、關(guān)系模式的分解特性
1、 模式分解中存在的問(wèn)題 :( 識(shí)記 )
模式分解 就是將一個(gè)泛關(guān)系模式 R分解成 數(shù)據(jù)庫(kù)模式ρ ,以ρ代替R的過(guò)程。它不僅僅是屬性集合的分解,它是對(duì)關(guān)系模式上的函數(shù)依賴集、以及關(guān)系模式的當(dāng)前值分解的具體表現(xiàn)。
分解一個(gè)模式有很多方法,但是有的分解會(huì)出現(xiàn)失去函數(shù)依賴、或出現(xiàn)插入、刪除異常等情況,而有的分解則不出現(xiàn)相關(guān)問(wèn)題。
衡量一個(gè)分解的標(biāo)準(zhǔn)有三種: 分解具有無(wú)損聯(lián)接 ; 分解要保持函數(shù)依賴 ;分解 既要保持依賴,又要具有無(wú)損聯(lián)接 .
那么什么是無(wú)損聯(lián)接呢?什么又是保持依賴?
2、 無(wú)損聯(lián)接的定義和性質(zhì) ( 識(shí)記 )
設(shè)R是一關(guān)系模式,分解成ρ={R1,R2,……,Rk},F(xiàn)是R上的一個(gè)函數(shù)依賴集。無(wú)損聯(lián)接就是指R中每一個(gè)滿足F的關(guān)系r(也就是一個(gè)關(guān)系實(shí)例)都有r=π R1 (r)|X|π R2 (r)……|X|π R3 (r),即r為它在Ri上的投影的自然聯(lián)接。
最簡(jiǎn)單的理解, 也就是說(shuō),分解后的關(guān)系 自然連接后 完全等于 分解前的 關(guān)系,則這個(gè)分解相對(duì)于F是無(wú)損聯(lián)接分解。
設(shè)R的分解為ρ={R1,R2},F(xiàn)為R所滿足的函數(shù)依賴集,則分解ρ具有無(wú)損聯(lián)接性的 充分必要條件 是:
R1∩R2→(R1-R2)
R1∩R2→(R2-R1)
也就是說(shuō),分解后的兩個(gè)模式的交能決定這兩個(gè)模式的差集,即R1、R2的公共屬性能夠函數(shù)決定R1或R2中的其他屬性 ,這樣的分解就必定是無(wú)損聯(lián)接分解 .
3、 保持函數(shù)依賴的分解 ( 識(shí)記 )
在分解過(guò)程中,要求模式分解的無(wú)損聯(lián)接是必要的,只有無(wú)損聯(lián)接分解才能保證任何一個(gè)關(guān)系能由它的那些投影進(jìn)行自然聯(lián)接得到恢復(fù)。
同時(shí),分解關(guān)系模式時(shí)還應(yīng)保證關(guān)系模式的函數(shù)依賴集在分解后仍在數(shù)據(jù)庫(kù)模式中保持不變,這就是保持函數(shù)依賴的問(wèn)題。也就是所有分解出的模式所滿足的函數(shù)依賴的全體應(yīng)當(dāng)?shù)葍r(jià)于原模式的函數(shù)依賴集。只有這樣才能確保整個(gè)數(shù)據(jù)庫(kù)中數(shù)據(jù)的語(yǔ)義完整性不受破壞。
四、關(guān)系模式的范式( 領(lǐng)會(huì) )
1、1NF、2NF、3NF、BCNF的定義:
1NF:第一范式 .
即關(guān)系模式中的屬性的 值域 中 每一個(gè)值 都是 不可再分解 的值。如果某個(gè)數(shù)據(jù)庫(kù)模式都是第一范式的,則稱該數(shù)據(jù)庫(kù)模式是屬于第一范式的數(shù)據(jù)庫(kù)模式。
2NF:第二范式 .
如果關(guān)系模式R為 第一范式 ,并且R中每一個(gè) 非主屬性 完全函數(shù)依賴于 R的某個(gè)候選鍵,則稱為 第二范式模式 .
在這里要先了解“非主屬性”、“完全函數(shù)依賴”、“候選鍵”這三個(gè)名詞的含義。
候選鍵 就是指可以唯一決定關(guān)系模式R中某元組值且不含有多余屬性的屬性集。
非主屬性 也就是非鍵屬性,指關(guān)系模式R中不包含在任何建中的屬性。
設(shè)有函數(shù)依賴W→A,若存在X W,有X→A成立,那么稱W→A是局部依賴,否則就稱W→A是 完全函數(shù)依賴 .
在分析是否為第2范式時(shí),應(yīng) 首先確定 候選鍵 ,然后把關(guān)系模式中的非主屬性與鍵的依賴關(guān)系進(jìn)行考察,是否都為完全函數(shù)依賴,如是,則此關(guān)系模式為2NF.如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是2NF的,則此數(shù)據(jù)庫(kù)模式屬于2NF的數(shù)據(jù)庫(kù)模式。
3NF:第三范式 .
如果關(guān)系模式R是 第二范式 ,且 每 個(gè) 非主屬性 都 不 傳遞依賴 于R的 候選鍵 ,則稱R為第三范式的模式。
這里首先要了解 傳遞依賴 的含義: 在關(guān)系模式中,如果Y→X,X→A,且X不決定Y和A不屬于X,那么Y→A是傳遞依賴。
注意的是,這里要求非主屬性都不傳遞依賴于候選鍵。
BCNF :這個(gè)范式和第三范式有聯(lián)系,它是3NF的改進(jìn)形式。若關(guān)系模式R是 第一范式 ,且 每個(gè)屬性 都 不 傳遞依賴于R的候選鍵。這種關(guān)系模式就是BCNF模式。
縱觀四種范式,可以發(fā)現(xiàn)它們之間存在如下關(guān)系:
5、 分解成BCNF模式集的算法( 識(shí)記 )
對(duì)于任一關(guān)系模式,可找到一個(gè)分解達(dá)到3NF,且具有無(wú)損聯(lián)接和保持函數(shù)依賴性。而對(duì)于BCNF分解,則可以保證無(wú)損聯(lián)接但不一定能保證保持函數(shù)依賴集。
無(wú)損聯(lián)接分解成BCNF模式集的算法:
(1)置初值ρ={R};
(2)如果ρ中所有關(guān)系模式都是BCNF,則轉(zhuǎn)(4);
(3)如果ρ中有一個(gè)關(guān)系模式S不是BCNF,則S中必能找到一個(gè)函數(shù)依賴集X→A有X不是S的鍵,且A不屬于X,設(shè)S 1 =XA,S 2 =S-A,用分解S 1 ,S 2 代替S,轉(zhuǎn)(2);
(4)分解結(jié)束。輸出ρ。
在這個(gè)過(guò)程中, 重點(diǎn)在于(3)步 ,判斷哪個(gè)關(guān)系不是BCNF,并找到X和A.這里,S的判斷用BCNF的定義,而X不是S的鍵則依靠分析。
6、 分解成3NF模式集( 識(shí)記 )
算法:
(1)如果R中的某些屬性在F的所有依賴的左邊和右邊都不出現(xiàn),那么這些屬性可以從R中分出去,單獨(dú)構(gòu)成一個(gè)關(guān)系模式。
(2)如果F中有一個(gè)依賴X→A有XA→R,則ρ={R},轉(zhuǎn)(4)
(3)對(duì)于F中每一個(gè)X→A,構(gòu)成一個(gè)關(guān)系模式XA,如果F有有X→A 1 ,X→A 2 ……X→A n ,則可以用模式XA 1 A 2 ……A n 代替n個(gè)模式XA 1 ,XA 2 ……XA n ;
(4)w分解結(jié)束,輸入ρ。
這個(gè)過(guò)程的 重點(diǎn)是這一句 “對(duì)于F中每一個(gè)X→A,構(gòu)成一個(gè)關(guān)系模式XA”,這使我們的分解十分容易,然后依據(jù)合并律(合并律:如果X→Y和X→Z成立,那么X→YZ成立)將有關(guān)模式合并即得到所需3NF模式。
7、 模式設(shè)計(jì)方法的原則( 識(shí)記 )
關(guān)系模式R相對(duì)于函數(shù)依賴集F分解成數(shù)據(jù)庫(kù)模式ρ={R 1 ,R 2 ……R k },一般具有下面 四項(xiàng)特性 :
ρ中每個(gè)關(guān)系模式R i 上應(yīng)具有某種 范式性質(zhì) (3NF或BCNF)
無(wú)損聯(lián)接 性。
保持函數(shù)依賴 集。
最小性 ,即ρ中模式個(gè)數(shù)應(yīng)最少且模式中屬性總數(shù)應(yīng)最少。
一個(gè)好的模式設(shè)計(jì)方法應(yīng)符合下列三條原則:
表達(dá)性
分離性
最小冗余性
8、多值依賴。簡(jiǎn)單了解一下。
?2013年高教自考網(wǎng)絡(luò)輔導(dǎo)課程招生簡(jiǎn)章
更多信息請(qǐng)?jiān)L問(wèn):自學(xué)考試頻道 自學(xué)考試論壇
最新資訊
- 考前必背!自學(xué)考試《中國(guó)近現(xiàn)代史綱要》論述題高頻考點(diǎn)2024-10-19
- 自考報(bào)考策略:科學(xué)搭配科目,加速畢業(yè)進(jìn)程2024-07-20
- 2025年考研考生五一假期,英語(yǔ)科目應(yīng)該如何復(fù)習(xí)?2024-05-03
- 備考指南!2024年4月自學(xué)考試考前要做哪些準(zhǔn)備?2024-03-31
- 考前備考沖刺!自考如何一次就過(guò)?2024-03-30
- 考點(diǎn)匯總:《中國(guó)近現(xiàn)代史綱要》論述題2024-03-25
- 備考資料:《中國(guó)近現(xiàn)代史綱要》簡(jiǎn)答題考點(diǎn)匯總2024-03-25
- 自考可以從哪些維度進(jìn)行備考?2024-02-17
- @自考生,這里有備考技巧2024-02-17
- 自學(xué)考試備考復(fù)習(xí)方法!建議收藏2024-02-16