關系與關系模式的聯系:
關系模式是相對穩定的,靜態的,是把所有元組刪去后的一張空表格,是對元組數據組織方式的結構描述,而關系卻是動態變化的,不穩定的,是將若干元組填入關系模式后得到的一個取值實例。每一個關系對應一個關系模式,每一個關系模式可以定義多個關系。
關系模式R(U)對應的具體關系通常用小寫字母r來表示。
函數依賴:
設R(U)是屬性集U={A1, A2, …, An}上的關系模式,X和Y是U的子集。若對R(U)的任一具體關系r中的任意兩個元組t1和t2,只要t1[X]=t2[X] 就有t1[Y]=t2[Y]。則稱"X函數確定Y" 或"Y函數依賴於X",記作X→Y,X為這個函數依賴的決定因素。
函數依賴要求R(U)的一切具體關系r都要滿足的約束條件。
若X→Y且Y→X,則記作X⇿Y
平凡函數依賴:X→Y,Y⊆X // 對於任一關系模式,平凡函數依賴必然是成立的
非平凡函數依賴:X→Y,Y⊄X
完全函數依賴:
如果X→Y,且對於X的任何一個真子集X',都有X不函數確定Y ,則稱Y對X完全函數依賴或者X完全決定Y,記作:
部分函數依賴:
如果X→Y,但Y不是完全函數依賴於X,則稱Y 對X部分函數依賴,記作:
傳遞函數依賴:
如果X→Y,Y→Z,且 Y→X,Y⊄X,Z⊄Y,則稱Z對X傳遞函數依賴,記作:
候選鍵:
對關系模式R(U),設K⊆U,且K完全函數確定U,則K為能夠唯一確定關系中任何一個元組(實體)的最少屬性集合,稱K為R(U)的候選鍵或候選關鍵字。
【R(U,F),U={ A,B,C,D,E,G },F={AB→C,CD→E,E→A,A→G},求候選鍵】
因G只在右邊出現,所以G一定不屬於候選碼
而B,D只在左邊出現,所以B,D一定屬於候選碼
BD的閉包還是BD,則對BD進行組合,除了G以外,BD可以跟A,C,E進行組合
先看ABD
ABD本身自包ABD,而AB→C,CD→E,A→G,所以ABD的閉包為ABDCEG=U
再看BDC
CD→E,E→A,A→G,BDC本身自包,所以BDC的閉包為BDCEAG=U
最后看BDE
E→A,A→G,AB→C,BDE本身自包,所以BDE的閉包為BDEAGC=U
因為(ABD)、(BCD)、(BDE)的閉包都是ABCDEG所以本問題的候選碼有3個分別是ABC、BCD和BDE
主鍵:
通常在R(U)的多個候選鍵中任意選定一個候選鍵作為主鍵,也稱為主碼或主關鍵字。
當關系模式的屬性全體是候選鍵時,屬性全體也就是主鍵,可稱為全鍵或全碼。
主屬性與非主屬性:
對關系模式R(U),包含在任何一個候選鍵中的屬性稱為主屬性,不包含在任何候選鍵中的屬性稱為非主屬性或非碼屬性。
外鍵:
對關系模式R(U),設X⊆U。若X不是R(U)的主鍵,但X是另一個關系模式的主鍵,則稱X是R(U)的外鍵或外部關鍵字。
函數依賴的邏輯蘊涵:
對於滿足函數依賴集F的關系模式R(U,F)的任意一個具體關系r,若函數依賴X→Y都成立,則稱F邏輯蘊涵X→Y,記為FX→Y。
若在F中沒有X→Y函數依賴,但可以通過F中的現有函數依賴推導得出X→Y,則也記FX→Y。
F的閉包:
被函數依賴集F邏輯蘊涵的函數依賴所構成的集合,稱為F的閉包,記作F+。即:F+={X→Y | FX→Y}。顯然F⊆ F+
函數依賴完備集:
當函數依賴集F= F+
Armstrong公理系統:
自反律:如果Y⊆X⊆ U,則X→Y成立,即FX→Y。
增廣律:如果X→Y成立,則XZ→YZ 成立(XZ是X∪Z的簡單記法),即若FX→Y,則F
XZ→YZ。
傳遞律:如果X→Y,Y→Z成立,則X→Z成立,即若FX→Y,F
Y→Z,則F
X→Z。
合並律:如果X→Y和X→Z成立,那么X→YZ成立,即若FX→Y,F
X→Z,則F
X→YZ。
偽傳遞律:如果X→Y和WY→Z成立,那么WX→Z成立,即FX→Y,F
WY→Z,則F
WX→Z。
分解律:如果X→Y和Z⊆Y成立,那么X→Z成立,即若FX→Y,Z⊆Y,則F
X→Z。
推論:對關系模式R(U),設X⊆U,{A1, A2 ,…,Am}⊆U,則X→{A1, A2 ,…, Am}成立的充分必要條件是
X→Ai (i=1,2,…,m)成立。
屬性集X關於F的閉包X+F :
顯然X⊆X+F⊆U
閉包的計算:
設F是屬性集U上的函數依賴集,X,Y 是U的子集,則X→Y能由F根據Armstrong公理導出的充分必要條件是 Y⊆X+。
【設關系模式R(U),其屬性集上函數依賴:F={AB→C, B→D, C→E, EC→B, AC→B},令X={A, B},求X+】
解:
第1次:
X(0)= Ø,X(1)={A, B},F= Ø
由於X(0)≠X(1),令X(0)=X(1)={A, B}
函數依賴集F'={ AB→C, B→D},令F=F-F'={C→E, EC→B, AC→B},
將F'中的每一個函數依賴的右端屬性C,D並入X(1)中,即令X(1)={A, B}∪{C, D}={A, B, C, D}
第2次:
由於X(0)≠X(1),令X(0)=X(1)= {A, B, C, D};
函數依賴集F'={C→E, AC→B},令F=F-F'={EC→B}
將F'中的每一個函數依賴的右端屬性E, B並入X(1)中,即令X(1)={A, B, C, D }∪{E, B}={A, B, C, D, E}
第3次:
由於X(0)≠X(1),令X(0)=X(1)= {A, B, C, D, E }
函數依賴集F'={EC→B},令F=F-F'= Ø
將F'中的每一個函數依賴的右端屬性B並入X(1)中,即令X(1)={A, B, C, D, E }∪{B}={A, B, C, D, E}
第4次:
由於X(0)=X(1),輸出X(1)={A, B, C, D, E}=X+
{A,B}→U={A, B, C, D, E},由於{A}U,{B}
U,所以{A,B}是侯選鍵
函數依賴集的等價與覆蓋:
如果G+=F+,就說函數依賴集F與G等價,且F覆蓋G,G覆蓋F,它的充分必要條件是F⊆G+ ,G⊆F+
每個函數依賴集F都可以被一個右部只有單屬性的函數依賴集G所覆蓋。
最小函數依賴集,也稱為最小依賴集或最小覆蓋:
F中任一函數依賴的右部僅含有一個屬性。
F中不存在這樣的函數依賴X→A,使得F與F-{X→A}等價。 // 右部沒有冗余的函數依賴
F中不存在這樣的函數依賴X→A,X有真子集Z使得F-{X→A}∪{Z→A}與F等價。 // 左部沒有冗余的屬性
每個函數依賴集F都有最小覆蓋,並且不唯一。
最小依賴集的計算:
首先將函數依賴集中的每一個依賴的右部進行分裂,再消除冗余函數依賴和每個函數依賴左部的冗余屬性。