平凡依賴,非平凡依賴,完全依賴,部分依賴,傳遞依賴,直接依賴的區別


一. 函數依賴

定義:

設R(U)是屬性集U上的關系模式,X,Y是U的子集。若對於R(U)的任意一個可能的關系r,r不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數確定Y或Y函數依賴於X,記作X->Y。若函數Y不函數依賴於X,則記作X-/->Y。

例如:

一個身份證號碼可以確定一個人的姓名,不存在說身份證號相同,但是是不同的人的情況。(可以做強制性規定一些條件使有的函數依賴成立。比如規定不允許同名人出現,因而使姓名->年齡)

所謂函數依賴是指關系中一個或一組屬性的值可以決定其它屬性的值。函數依賴就像一個函數y = f(x)一樣,x的值給定后,y的值也就唯一地確定了。

 

二. 平凡依賴

定義:

若X->Y,且Y是X的子集(對任一關系模式,平凡函數依賴必然成立),就是平凡函數依賴。

例如:

在學生表(學號,姓名,年級)中,(學號,姓名)可以推出學號和姓名其中的任何一個,這就是平凡函數依賴.

直白點說,就是只要Y是X的子集,Y就依賴於X。

 

三. 非平凡依賴

定義:

若X->Y,但Y不是X的子集,就是非平凡函數依賴。

例如:

在學生表(學號,姓名,年級)中,通過(學號,姓名)可以推出這個學生所在的年級,但年級不是(學號,姓名)的子集,這是非平凡函數依賴.((學號,姓名)就是一個x,學號或者姓名就是一個x')。

 

四. 完全函數依賴

定義:

在R(U)中,如果X->Y。並且對於X的任何一個真子集X‘,都有X'-/->Y,則稱Y對X有完全函數依賴,記作X->Y(箭頭上有個大寫F)。

例如:

eg 1:在學生表(學號,姓名,年級)中,通過屬性“學號”就可以推出“年級”,說明“年級”完全依賴於“學號”,這就是完全函數依賴。

eg 2:“一門課的成績”對(學號,課程號)是完全函數依賴。學號和課程號可以確定對應課程成績,但是學號和課程號它們誰都不能單獨確定成績。

也就是說X內任意一個真子集(真子集不包含它本身),都不能唯一確定Y。

 

五. 部分函數依賴

定義:

若X->Y,但Y不完全函數依賴於X,則稱Y對X部分函數依賴,記作X->Y(箭頭上有個大寫P)。

例如:

eg 1:在學生表(學號,姓名,年級)中,(學號,姓名)雖然也可以推出年級,但是它的真子集姓名卻推不出年級,這就是部分函數依賴,也叫不完全函數依賴。

eg 2:“院系”對(學號,課程號)是部分函數依賴。課程號和學號一起可以確定院系,但學號是(學號,課程號)的真子集,並且學號單獨可以確定院系。

 

六. 傳遞函數依賴

定義:

在R(U)中,如果X->Y(Y不是X的子集),Y-/->X,Y->Z,Z是Y的子集,則稱Z對X傳遞函數依賴。記為X->Z(箭頭上是漢字 “傳遞”)

例如:

學號->院系,院系->院長名,學號->院長名。

直白點說就是X確定Y,Y不是X子集,Y能確定Z,Z不是Y子集,Y不能確定X。

 

七. 直接函數依賴

定義:

在R(U)中,如果X->Y,Y不是X的子集,Y->Z,Z是Y的子集,則稱Z對X傳遞函數依賴。記為X->Z(箭頭上是漢字 “直接”)

 直白點說就是X確定Y,Y不是X子集,Y能確定Z,Z不是Y子集。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM