1.數據依賴
數據依賴指的是通過一個關系中屬性間的相等與否體現出來的數據間的相互關系,其中最重要的是函數依賴和多值依賴。
2.函數依賴
設X,Y是關系R的兩個屬性集合,當任何時刻R中的任意兩個元組中的X屬性值相同時,則它們的Y屬性值也相同,則稱X函數決定Y,或Y函數依賴於X。
3.平凡函數依賴
當關系中屬性集合Y是屬性集合X的子集時(Y?X),存在函數依賴X→Y,即一組屬性函數決定它的所有子集,這種函數依賴稱為平凡函數依賴。
4.非平凡函數依賴
當關系中屬性集合Y不是屬性集合X的子集時,存在函數依賴X→Y,則稱這種函數依賴為非平凡函數依賴。
5.完全函數依賴
設X,Y是關系R的兩個屬性集合,X’是X的真子集,存在X→Y,但對每一個X’都有X’!→Y,則稱Y完全函數依賴於X。
6.部分函數依賴
設X,Y是關系R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴於X。
7.傳遞函數依賴
設X,Y,Z是關系R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴於X。
函數依賴
設R(U)是一個屬性集U上的關系模式,X和Y是U的子集。
若對於R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 “X函數確定Y” 或 “Y函數依賴於X”,記作X→Y。
X稱為這個函數依賴的決定屬性集(Determinant)。
Y=f(x)
說明:
1. 函數依賴不是指關系模式R的某個或某些關系實例滿足的約束條件,而是指R的所有關系實例均要滿足的約束條件。
2. 函數依賴是語義范疇的概念。只能根據數據的語義來確定函數依賴。
例如“姓名→年齡”這個函數依賴只有在不允許有同名人的條件下成立
3. 數據庫設計者可以對現實世界作強制的規定。例如規定不允許同名人出現,函數依賴“姓名→年齡”成立。所插入的元組必須滿足規定的函數依賴,若發現有同名人存在, 則拒絕裝入該元組。
例: Student(Sno, Sname, Ssex, Sage, Sdept)
假設不允許重名,則有:
Sno → Ssex, Sno → Sage , Sno → Sdept,
Sno ←→ Sname, Sname → Ssex, Sname → Sage
Sname → Sdept
但Ssex -\→Sage
若X→Y,並且Y→X, 則記為X←→Y。
若Y不函數依賴於X, 則記為X-\→Y。
在關系模式R(U)中,對於U的子集X和Y,
如果X→Y,但Y 不為 X的子集,則稱X→Y是非平凡的函數依賴
若X→Y,但Y 為 X的子集, 則稱X→Y是平凡的函數依賴
例:在關系SC(Sno, Cno, Grade)中,
非平凡函數依賴: (Sno, Cno) → Grade
平凡函數依賴: (Sno, Cno) → Sno
(Sno, Cno) → Cno
部分函數依賴: 若x->y 並且,存在X的真子集x1,使得x1->y,則 y部分依賴於 x。
完全函數依賴:若x->y並且,對於x的任何一個真子集x1,都不存在x1->y 則稱y完全依賴於x。
"