? ? ? ?? ? ? ?
1、函數依賴的定義
設R(U)是屬性集U.上的關系模式,X, Y是U的子集。若對于R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X集合上的屬性值相等,而在Y上的屬性值不等,
則稱X函數確定Y或Y函數依賴于X,記作X→Y。
理解:X,Y為兩個集合,對于集合X中的所有元素,在Y集合中都能找到對應。
當X值不同時:X既可以對應Y的相同元素,也能對應不同元素。
當X值相同時:X只能對應Y中的相同元素。
2、如何判斷是否存在函數依賴
必備公式如下:
1.X和Y是一對一的關系,則X→Y,Y→X
2.X和Y是多對一的關系,則X→Y
3.X和Y是多對多或是一對多的關系,則X與Y不存在依賴關系
3、函數依賴的分類
3.1 平凡函數依賴
定義:若X->Y,且Y是X的子集(對任一關系模式,平凡函數依賴必然成立),就是平凡函數依賴。
舉例:
在學生表(學號,姓名,年級)中,(學號,姓名)可以推導學號和姓名其中的任何一個,就是所謂的平凡函數依賴。
簡單來說,就是只要Y是X的子集,Y就依賴于X。
3.2? 非平凡函數依賴
定義:若X->Y,但Y不是X的子集,就是非平凡函數依賴。
舉例:學生表(學號,姓名,年級,性別)中,通過(學號,姓名)可以推出這個學生所在的年級,但年級不是(學號,姓名)的子集,這是非平凡函數依賴.((學號,姓名)就是一個x,學號或者姓名就是一個x')。
3.3. 完全函數依賴
定義:在R(U)中,如果X->Y。并且對于X的任何一個真子集X‘,都有X'-/->Y,則稱Y對X有完全函數依賴,記作X->Y(箭頭上有個大寫F)。
舉例:
1:在學生表(學號,姓名,年級)中,通過屬性“學號”就可以推出“年級”,說明“年級”完全依賴于“學號”,這就是完全函數依賴。
2:“一門課的成績”對(學號,課程號)是完全函數依賴。學號和課程號可以確定對應課程成績,但是學號和課程號它們誰都不能單獨確定成績。
也就是說X內任意一個真子集(真子集不包含它本身),都不能唯一確定Y。?
3.4. 部分函數依賴
定義:若X->Y,但Y不完全函數依賴于X,則稱Y對X部分函數依賴,記作X->Y(箭頭上有個大寫P)。
舉例:
1:在學生表(學號,姓名,年級)中,(學號,姓名)雖然也可以推出年級,但是它的真子集姓名卻推不出年級,這就是部分函數依賴,也叫不完全函數依賴。
2:“院系”對(學號,課程號)是部分函數依賴。課程號和學號一起可以確定院系,但學號是(學號,課程號)的真子集,并且學號單獨可以確定院系。
3.5 傳遞函數依賴
定義:在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。?
3.6 直接函數依賴
定義:在R(U)中,如果X->Y,Y不是X的子集,Y->Z,Z是Y的子集,則稱Z對X傳遞函數依賴。記為X->Z(箭頭上是漢字 “直接”)
簡單來說就是X確定Y,Y不是X子集,Y能確定Z,Z不是Y子集。
IT技術分享社區
個人博客網站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識