數據庫——設計關係模式要用的概念

函數依賴 閉包 自反 增廣 傳遞 範式 關係模式的分解

來不及解釋了,快上車!!~~~

函數依賴

1.函數依賴(FD)是關係模式內最常見的數據依賴,屬於語義範疇的概念
2. 函數依賴定義爲:設R(U)是屬性集U上的關係模式。X,Y是U的子集,若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則成X函數確定Y或者Y函數依賴與X, 記作:X→Y。
3. 平凡的函數依賴:如果X→Y,但Y∈X,則稱X→Y是平凡的函數依賴
4. 非平凡的函數依賴:如果X→Y,但Y∉X,則稱X→Y是非平凡的函數依賴。通常情況下總是討論非平凡的函數依賴
5. 完全函數依賴:在R(U)中,如果X→Y,並且對於x的任何一個真子集X’,都有X´不能決定Y,則稱Y對X完全函數依賴,記作:X-f->Y (f即 full)
6. 部分函數依賴:在R(U)中,如果X→Y,但Y不完全函數依賴於X,則稱Y對X部分函數依賴,記作:X-p->Y (p即part) 部分函數依賴也稱爲局部函數依賴
7. 傳遞依賴:在R(U,F)中,如果X→Y,Y∉X,Y→Z,Y不完全函數依賴於X,則稱Z對X傳遞依賴
8. 候選碼:設K爲R(U,F)中屬性的組合,若K-f->U,且對於K的任何一個真子集K’,都有K’不能決定U,則K爲R的候選碼(候選關鍵字)。若有多個候選碼,則選其中一個座位主碼(主鍵),包含在任何一個候選碼中的屬性稱之爲主屬性,反之稱之爲非主屬性

函數依賴的邏輯蘊涵

定義:設有關係模式R(U)及其函數依賴集F,如果對於R的任一個滿足F的關係r函數依賴X→Y都成立,則稱F邏輯蘊涵X→Y,或稱X→Y可以由F推出。

例:關係模式 R=(A,B,C),函數依賴集F={A→B,B→C}, F邏輯蘊涵A→C。
證:設u,v爲r中任意兩個元組:
若A→C不成立,則有u[A]=v[A],而u[C]≠v[C]
而且A→B, B→C,知
u[A]=v[A], u[B]=v[B], u[C]=v[C],
即若u[A]=v[A]則u[C]=v[C],和假設矛盾。
故F邏輯蘊涵A→C。
滿足F依賴集的所有元組都函數依賴X→Y(X→Y不屬於F集),則稱F邏輯蘊涵X→Y
(X→Y由F依賴集中所有依賴關係推斷而出)

Armstrong公理

1、定理:若U爲關係模式R的屬性全集,F爲U上的一組函數依賴,設X、Y、Z、W均爲R的子集,對R(U,F)有:
F1(自反性):若X≥Y(表X包含Y),則X→Y爲F所蘊涵;(F1’:X→X)
F2(增廣性): 若X→Y爲F所蘊涵,則XZ→YZ爲F所蘊涵;(F2’:XZ→Y)
F3(傳遞性): 若X→Y,Y→Z爲F所蘊涵,則X→Z爲F所蘊涵;
F4(僞增性):若X→Y,W≥Z(表W包含Z)爲F所蘊涵,則XW→YZ爲F所蘊涵;
F5(僞傳性): 若X→Y,YW→Z爲F所蘊涵, 則XW→Z爲F所蘊涵;
F6(合成性): 若X→Y,X→Z爲F所蘊涵,則X→YZ爲F所蘊涵;
F7(分解性): 若X→Y,Z≤Y (表Z包含於Y)爲F所蘊涵,則X→Z爲F所蘊涵。
函數依賴推理規則F1∽F7都是正確的。

2、Armstrong公理:
推理規則F1、F2、F3合稱Armstrong公理;
F4 ∽ F7可由F1、F2、F3推得,是Armstrong公理的推論部分。

函數依賴的閉包

 
定義:若F爲關係模式R(U)的函數依賴集,我們把F以及所有被F邏輯蘊涵的函數依賴的集合稱爲F的閉包,記爲F+。
即:F+={X→Y|X→Y∈F∨“應用Armstong公理從F中導出的任何X→Y”}

 △ F包含於F+,如果F=F+,則F爲函數依賴的一個完備集。
 △ 規定:若X爲U的子集,X→Φ 屬於F+。

  例:R=ABC,F={A→B, B→C}, 求F+
  解: F+ ={A→Φ,AB→Φ,AC→Φ,ABC→Φ,B→Φ,C→Φ,
            A→A,AB→A,AC→A,ABC→A,B→B,C→C,
            A→B,AB→B,AC→B,ABC→B,B→C,
            A→C,AB→C,AC→C,ABC→C,B→BC,
            A→AB,AB→AB,AC→AB,ABC→AB,BC→Φ,
            A→AC,AB→AC,AC→AC,ABC→AC,BC→B,
            A→BC,AB→BC,AC→BC,ABC→BC,BC→C,
            A→ABC,AB→ABC,AC→ABC,ABC→A,BC→BC}

   例:已知關係模式R中
       U={A,B,C,D, E, G},
       F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG},判斷BD→AC是否屬於F+

   解:由D→EG知D→E,BD→BE             … ①
       又知BE→C,C→A 所以BE→A, BE→AC … ②
       由①、②知,BD→AC,所以BD→AC被F所蘊涵,即BD→AC屬於F+

   例:已知關係模式R中
       U={A,B,C,E, H, P, G},
       F={AC→PE, PG→A, B→CE, A→P, GA→B, GC→A, PAB→G, AE→GB, ABCP→H},證明BG→HE屬於F+
    證:由B→CE知B→C,B→E, BG→GC         … ①
        又知GC→A,A→P 所以BG→A, BG→ABCP … ②
        又ABCP→H,由①、②知BG→HE,所以BG→HE被F所蘊涵,
        即BG→HE屬於F+

屬性集閉包

 
1、定義:若F爲關係模式R(U)的函數依賴集,X是U的子集,則由Armstrong公理推導出的所有X→Ai所形成的屬性集

例:設R=ABC,F={A→B, B→C}當X分別爲A,B,C是求X+。
解:當X=A時,X+=ABC
當X=B時,X+=BC
當X=C時,X+=C
* X代表的屬性集可以決定的屬性集(包括本身)

2、定理:當且僅當Y屬於X+時,X→Y能根據Armstron公理由F導出。
證:設Y=A1,A2,…,An
①充分條件:當Y屬於X+時,對於每個i,X→Ai可由公理導出。
再用合併規則可得X→Y。
②必要條件:若X→Y能夠由公理導出,則根據分解規,
X→Ai(i=1,2,…,n)成立,所以Y屬於X+。

3、計算X+
(1)算法依據:若F爲關係模式R(U)的函數依賴集,X,Z,W是U的子集,對於任意的Z→W∈F,若 X≥Z(表X包含Z),則X→XW。

(2)算法:
a.令X+ = X;
b.在F中依次查找每個沒有被標記的函數依賴,若“左邊屬性集”包含於X+ ,則令 X+ = X+∪“右邊屬性集”,爲被訪問過的函數依賴設置訪問標記。
c.反覆執行b直到X+不改變爲止。
(先令X+等於本身,然後在F+中依次查找左邊包含於X+的屬性,把其右邊的對應屬性併到X中)

(3)算法實現
輸入:關係模式R的子集X,R上的函數依賴集F。
輸出:X關於F的閉包X+

算法僞語言描述:
Closure(X,F)
{
olds=Φ; news=X; G=F;
while (olds!=news)
{
olds=news;
for (G中的每個函數依賴W→Z)
{
if (news包含W)
{
news=news∪Z;
從G中刪除函數依賴W→Z;
}
}
}
return news;
}

例:已知關係模式R中
U={A,B,C,D, E, G},
F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG},
求(BD)+,判斷BD→AC是否屬於F+
解:X+=BDEGCA
結論:(BD)+=ABCDEG,BD→AC可由F導出,即BD→AC屬於F+

例:已知關係模式R中
U={A,B,C,E, H, P, G},
F={AC→PE, PG→A, B→CE, A→P, GA→B,GC→A, PAB→G, AE→GB, ABCP→H},
證明BG→HE屬於F+
證:因爲,(BG)+ =ABCEHPG,
所以BG→HE可由F導出,即BG→HE屬於F+

4、結論
判定函數依賴X→Y是否能由F導出的問題,可轉化爲求X+並判定Y是否是X+子集的問題。
即求閉包問題可轉化爲求屬性集問題。
判定給定函數依賴X→Y是否蘊涵於函數依賴集F算法實現:

輸入:函數依賴集合F,函數依賴X→Y
輸出:若X→Y∈F+輸出真,否則輸出假

算法僞語言描述:
number(F,X→Y)
{ if (Y包含於close(X,F))
return 真
else
return 假
}

{Ai|i=1,2,…}稱爲X對於F的閉包,記爲X+。

關係模式的分解

  1. 關係模式的分解有幾個不同的衡量標準:①分解具有無損連接;②分解要保持函數依賴;③分解既要保持函數依賴,又要具有無損連接
  2. 無損連接性判定定理:關係模式R分解爲兩個關係模式R1和R2,滿足無損連接性的充分條件是R1∩R2→(R1-R2)或R1∩R2→(R2-R1)
  3. 保持函數依賴的定義是:若滿足(F1∪F2)+=F+,則分解保持函數依賴,其中Fi函數依賴集F在Ri上的投影
  4. 在泛關係模式R分解成數據庫模式ρ={R1,R2…Rk}時,泛關係r在ρ的每一模式Ri(1≤i≤n)上投影后再連接起來,比原來r中多出來的元組,稱爲“寄生元組”或外元組。實際上,寄生元組表示錯誤的信息
  5. 先存在r(泛關係)的情況下,再去談論分解,這是關係數據庫理論中著名的泛關係假設
    在無泛關係假設時,對兩個關係進行自然連接中被丟失的元組稱爲懸掛元組
  6. 懸掛元組是造成兩個關係不存在泛關係的原因
  7. 模式分解的優點:①能消除數據冗餘和操作異常的現象;②在分解了的數據庫中可以存儲懸掛元組,存儲泛關係中無法存儲的信息
  8. 模式分解的缺點:①分解以後,檢索操作需要做笛卡爾積或鏈接操作,這將付出時間代價;②在有泛關係假設時,對數據庫中的關係進行自然連接時,可能產生寄生元組(即損失了信息);在無泛關係假設時,由於數據庫可能存在懸掛元組,因此有可能不存在泛關係
  9. 無損分解的測試方法。①輸入:關係模式R=(A1,A2…An),F是R上成立的函數依賴集,ρ={R1,R2…Rn}是R的一個分解;②輸出:判斷ρ相對於F是否具有無損分解特性。無損分解的測試算法如下:

        1.構造一張k行n列的表格,每列對應一個屬性Aj(1≤j≤n),每行對應一個模式Rj(1≤i≤k)。如果Aj在Ri中,那麼在表格的第i行第j列處填上符號aj,否則填上bij。
        2.把表格看成模式R的一個關係,反覆檢查F中每個FD在表格中是否成立,若不成立,則修改表格中的值,修改方法爲:對於F中一個函數依賴X→Y,如果表格中有兩行在X值上相等,在Y值上不相等,那麼把這兩行在Y值上也改成相等的值,如果Y值中一個是aj,那麼另一個也改成aj;如果沒有aj那麼用其中一個bij替換另一個字(儘量把下表ij改成較小的數)。一直到表格不能修改爲止,這個過程成爲chase(追蹤)過程
        3.若修改後的最後一直表格中有一方全是a,即a1,a2...an,則稱ρ相對於F是無損分解,否則稱爲損失分解

10.如果某個分解能保持FD集,那麼在數據輸入或更新時,只要每個關係模式本身的FD約束被滿足,就可以確保整個數據庫中數據的語義完整性不受破壞
11.關係模式在分解時應保持等價,有數據等價和依賴等價兩種,分別用無損分解和保持依賴兩個特徵來衡量。
12.數據等價是指兩個數據庫實例贏表示同樣的信息內容。如果是無損分解,那麼對泛關係反覆的投影和連接都不會丟失信息
13.依賴等價是指兩個數據庫模式應有相同的依賴集閉包,在依賴集閉包相等的情況下,數據的語義是不會出差錯的

範式

a.範式是衡量關係模式優劣的標準,它表達了模式中數據依賴之間應滿足的聯繫
b.第一範式(1NF):若關係模式R的每一個分量是不可分的數據項,則R∈1NF
c.2NF:若R∈1NF,且每一個非主屬性完全函數依賴於碼,則R屬於2NF。換言之,當1NF消除了非主屬性對碼的部分函數依賴時,則稱爲2NF。典型有:捐贈信息(捐贈編號。捐贈校友,捐贈時間,受益人身份證號,受益人姓名),其中捐贈編號和受益人身份證號是主鍵,但是存在” 捐贈編號→捐贈校友,捐贈時間“和”受益人身份證號→受益人姓名“的部分依賴,所以這個不是2NF
d.3NF:若R∈2NF,且每一個非主屬性既不部分依賴於碼,也不傳遞依賴於碼,則R∈3NF。換言之:當2NF消除了非主屬性對碼的部分函數傳遞時,稱爲3NF。典型有:校友信息(校友編號,姓名,工作單位,職位,院系,班級,入學年份,身份證號)班級爲班級編號,包含院系編號,入學年份和專業方向編號。可以知道 校友編號應該是主鍵,同時身份證號也是該關係模式的決定性因素,因此他們都是候選鍵。由“班級→入學年份 ”和“校友編號→班級”,出現了“ 校友編號→入學年份”,雖然每一個非主屬性不部分依賴與碼,但是傳遞依賴與碼了,因此這不是3NF
e.BCNF:關係模式R∈1NF,若X→Y且Y∉X時,X必含碼,則R屬於BCNF。換言之,當3NF消除了主屬性對碼的部分和傳遞函數依賴時,則稱爲BCNF。注意:BCNF是3NF消除主屬性的部分和傳遞函數依賴,2NF 1NF晉級是消除非主屬性的依賴
他們之間的相互關係是:1NF⊃2NF⊃3NF⊃BCNF
f.BCNF的關係模式都具有如下3個性質


1.所有非主屬性都完全函數依賴於每個候選碼
2.所有主屬性都完全函數依賴於每個不包含於他的候選碼
3.沒有任何屬性完全函數依賴於非碼的任何一組屬性
4.多值依賴MVD:設R(U)施屬性集U上的一個關係模式,X,Y是U的子集,若對R(U)的任一關係r,對於X的一個給定的值存在着Y的一組值與其對應,同時Y的這組值又不以任何方式與U-X-Y中的屬性相關,那麼稱Y多值依賴於X,記爲X→→Y

e.4NF:關係模式R∈1NF,若對於R的每個非平凡多值依賴X→→Y且Y∉X時,X必含碼,則R∈4NF
對於4NF關係進行投影,消除原關係中不是由候選碼所蘊含的函數依賴,即可得到一組5NF關係,5NF是最終範

g.規範化理論提供了一套完整的模式分解算法,按照這套算法可以做到:


1.若要求分解具有無損連接性,那麼模式分解一定能夠達到4NF
2.若要求分解保持函數依賴,那麼模式分解一定能夠達到3NF,但不一定能夠達到BCNF
3.若要求分解即具有無損連接性,又保持函數依賴,則模式分解一定能夠達到3NF,但不一定能夠達到BCNF。

h.模式設計方法的原則:關係模式R相對於函數依賴集F分解成數據庫模式ρ={R1,R2,..Rn},一般應具有以下特性。


ρ中每個關係模式Ri是3NF或BCNF
保持無損連接
保持函數依賴集F
ρ中模式個數最少和屬性總數最少

i.一個好的模式設計方法應符合3條原則:表達性、分離性和最小冗餘性
j.表達性設計兩個數據庫模式的等價性問題,即數據等價和依賴等價,分別用無損連接和保持函數依賴性來衡量
k.分離性是指屬性間的”獨立聯繫“;應該用不同的關係模式表達
l.最小冗餘性要求在分解後的數據庫,能表達原來數據庫的所有信息這個前提下實現
關係模式設計方法基本上可以分爲分解與合成兩大類。

選自:

函數依賴與關係模式分解的一些技巧整理

函數閉包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章