第六章关系数据理论
第六章關(guān)系數(shù)據(jù)理論
- 6.1_問題的提出(略)
- 6.2_規(guī)范化
- 6.2.1_函數(shù)依賴
- 6.2.2_碼
- 6.2.3_范式
- 6.2.4_2NF
- 6.2.5_3NF
- 6.2.6_BCNF
- 6.2.7_多值依賴
- 6.2.8_4NF
- 6.2.9_規(guī)范化小結(jié)
- 6.3_Armstrong公理系統(tǒng)
- 6.3.1_函數(shù)依賴閉包
- 6.3.2_最小依賴集
- 6.3.3_轉(zhuǎn)換為3NF的保持函數(shù)依賴的分解
6.1_問題的提出(略)
6.2_規(guī)范化
6.2.1_函數(shù)依賴
1.函數(shù)依賴
設(shè)R(U)是一個屬性集U上的關(guān)系模式,X和Y是U的子集。
若對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 “X函數(shù)確定Y” 或 “Y函數(shù)依賴于X”,記作X→Y
2.平凡函數(shù)依賴與非平凡函數(shù)依賴
- 非平凡的函數(shù)依賴:如果X→Y,但Y? X,則稱X→Y是非平凡的函數(shù)依賴
- 平凡的函數(shù)依賴:若X→Y,但Y ? X, 則稱X→Y是平凡的函數(shù)依賴
3.完全函數(shù)依賴與部分函數(shù)依賴
- 在R(U)中,如果X→Y,并且對于X的任何一個真子集X’,都有X’推不出Y, 則稱Y對X完全函數(shù)依賴,記作X -F-> Y(即缺了屬性集合X中的任何一個屬性都不能唯一確定Y)
- 若X→Y,但Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴,記作X-P-> Y。
4.傳遞函數(shù)依賴
6.2.2_碼
6.2.3_范式
關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求。滿足不同程度要求的為不同范式
第一范式(1NF):如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則R∈1NF
6.2.4_2NF
第二范式(2NF):若R∈1NF,且每一個非主屬性完全函數(shù)依賴于碼,則R∈2NF。
6.2.5_3NF
第三范式(3NF):關(guān)系模式R<U,F> 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z ? Y), 使得X→Y,Y→Z成立, Y → X,則稱R<U,F> ∈ 3NF。(若R∈3NF,則每一個非主屬性既不部分依賴于碼也不傳遞依賴于碼)
6.2.6_BCNF
6.2.7_多值依賴
6.2.8_4NF
6.2.9_規(guī)范化小結(jié)
6.3_Armstrong公理系統(tǒng)
6.3.1_函數(shù)依賴閉包
與編譯原理的閉包思想一樣
6.3.2_最小依賴集
定義:
(1) F中任一函數(shù)依賴的右部僅含有一個屬性。
(2) F中不存在這樣的函數(shù)依賴X→A,使得F與F-{X→A}等價。(函數(shù)依賴冗余)
(3) F中不存在這樣的函數(shù)依賴X→A, X有真子集Z使得F-{X→A}∪{Z→A}與F等價。 (左部屬性冗余)
求解方法:(分別對應(yīng)定義中的三個條件)
(1)逐一檢查F中各函數(shù)依賴FDi:X→Y,若Y=A1A2 …Ak,k > 2,則用 { X→Aj |j=1,2,…, k} 來取代X→Y。
(2)逐一檢查F中各函數(shù)依賴FDi:X→A,令G=F-{X→A}, 若A∈XG+, 則從F中去掉此函數(shù)依賴。
(3)逐一取出F中各函數(shù)依賴FDi:X→A,設(shè)X=B1B2…Bm,逐一考查Bi (i=l,2,…,m),若A ∈(X-Bi )F+ , 則以X-Bi 取代X。
6.3.3_轉(zhuǎn)換為3NF的保持函數(shù)依賴的分解
【例】 關(guān)系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}
算法一:將關(guān)系R轉(zhuǎn)化3NF的保持函數(shù)依賴的分解
第一步:首先計算處F的最小函數(shù)依賴集,得到F‘={A→BC,AD→E,E→D}。
第二步:觀察U中是否有屬性不再F’中的出現(xiàn),如果有,則這個屬性組成一對關(guān)系R,并在原來的U中刪除這些屬性。而例子中U的屬性都出現(xiàn)在F中,則可以跳過這一步。
第三步:對F‘中的函數(shù)依賴,把左邊的相同分為一組,一組中出現(xiàn)的所有屬性為一個關(guān)系。如F={A→B,A→C,……},左邊都為A的分為一組,得出項的所有屬性組為也給關(guān)系R{A,B,C,…}例題中左邊都不相同,所以一個函數(shù)依賴組為一個關(guān)系得到轉(zhuǎn)化為3NF的保持依賴分解1{A,B,C},R2{A,D,E},R3{E,D}。
算法二:將關(guān)系R轉(zhuǎn)化為3NF的既有無損連接有保持函數(shù)依賴的分解
第一步:先將R轉(zhuǎn)化為3NF的保持函數(shù)依賴的分解,由算法一的出R1{A,B,C},R2{A,D,E},R3{E,D}。
第二步:求出F的候選碼(候選碼求解算法)得出候選碼X為AD和AE。
第三步:將候選碼單獨組成關(guān)系得R4{A,D}和R5{A,E},然后與保持函數(shù)依賴后得分解取并集。得R1{A,B,C},R2{A,D,E},R3{E,D},R4{A,D},R5{A,E}。。、
第四步:觀察新組成得分解模式中,是否存在包含關(guān)系,有責(zé)去掉被包含得。如R3{E,D},R4{A,D},R5{A,E}都包含于R2{A,D,E},則刪除,最終得到轉(zhuǎn)化為3NF的既有無損鏈接有保持函數(shù)依賴的分解R1{A,B,C},R2{A,D,E}。
總結(jié)
- 上一篇: 带头节点循环链表实现队列
- 下一篇: C语言实现AES加密解密