詳解數據庫函數依賴與鍵【碼】

在上一篇關於範式的文章裏提到了在學習範式前應先了解函數依賴與鍵的定義,所以這篇文章存在的意義就是爲之前的做鋪墊 ORZ

在瞭解函數依賴前,首先要明白數據依賴的概念。
數據依賴:是通過一個關係中屬性間值的相等與否體現出來的數據間的相互關係,數據依賴是現實世界屬性間相互聯繫的抽象,屬於數據內在的性質。其中最重要的是函數依賴多值依賴

依舊是直戳目錄空降相關知識點 ↓↓↓

文章目錄


首先我們仍要給出一張數據表,該表涵蓋我們所要記錄的所有屬性
該關係模式爲:
SLC(Sno,Sname,Sdept(所在系),Loca(住處),Cno(課程號),Grade(成績))
Sno | Sname |Sdept|Loca|Cno|Grade
-------- | —
03001 | 甲|網絡工程|A|C1|95
03001 | 甲|網絡工程|A|C2|88
04001 | 乙|計算機科學與技術|B|C2|93
04001 | 乙|計算機科學與技術|B|C4|75
03002 | 丙|網絡工程|A|C1|77
02001 | 丁|網絡工程|A|C5|82
02002 | 戊|計算機科學與技術|B|C2|87

函數依賴

##定義

· 設R(U)是一個屬性集U上的關係模式,X和Y是U的子集。若對於R(U)上的任何一個可能的關係r,如果r中不可能存在兩個元組,它們在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數決定Y或Y函數依賴於X,記作X->Y。
· 其中X稱爲這個函數依賴的決定屬性組,或稱爲決定因素,Y稱作被決定因素。
· 若Y不函數依賴於X,記作X->(×)Y (ps:僅在本博客中這樣表示),若X->Y,且Y->X,則記作X<–>Y。
簡單來說,在設計學生表時,一個學生的學號能決定學生的姓名,即可稱姓名屬性依賴於學號,這就是一個函數依賴。

對於函數依賴,值得注意以下幾點:
①函數依賴不是指關係模式R中的某個或某些關係滿足的約束條件,而是指R的所有關係均要滿足的約束條件。
②函數依賴是語義範疇的概念,只能根據語義來確定一個函數依賴。例如,Sname->Sno這個函數依賴只有在學生不重名的情況下才能成立,如果允許有重名學生,則Sno就不能函數依賴於Sname。
③如果設計者利用強制性規定(比如不允許同名學生存在)以滿足需要的函數依賴關係,那麼在以後的數據庫操作中必須遵循該規定,不然系統將拒絕執行命令。
##幾種特殊的函數依賴
###平凡函數依賴與非平凡函數依賴

· 當關系中屬性集合Y是屬性集合X的子集時(Y⊆X),存在函數依賴X→Y,即一組屬性函數決定它的所有子集,這種函數依賴稱爲平凡函數依賴。
· 當關系中屬性集合Y不是屬性集合X的子集時,存在函數依賴X→Y,則稱這種函數依賴爲非平凡函數依賴。

例如在關係模式SLC中,(Sno,Cno)->Grade是非平凡數據依賴,(Sno,Cno)->Cno是平凡函數依賴。
顯然,對於任一關係模式,平凡函數依賴都是必然成立的,它不反映新的語義,因此若不特別聲明,總是談論非平凡函數依賴。
###完全函數依賴與部分函數依賴

· 設X,Y是關係R的兩個屬性集合,X’是X的真子集,存在X→Y,但對每一個X’都有X’!→Y,則稱Y完全函數依賴於X,記作X->(f)Y。
· 設X,Y是關係R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴於X,記作X->§Y。

例如在關係模式SLC中,(Sno,Cno)->(f)Grade是完全函數依賴;(Sno,Cno)->§Sname是部分函數依賴。
###傳遞函數依賴

· 在R(U)中,如果X->Y,Y->Z,且Y∉X,Y->(×)X,則稱Z傳遞函數依賴於X,記作X->(t)Z。
在此加上條件Y->(×)X,是因爲如果X->Y,Y->X,則X<–>Y,實際上就是X直接函數依賴於Z,而不是傳遞函數依賴。

例如在關係模式SLC中,由於Sno->Sdept,Sdept->Loca,所以Sno->(t)Loca是傳遞函數依賴。

· 設K是關係模式R(U,F)中的屬性或屬性組合,若K->(f)U,則K爲R的候選鍵。若候選鍵多於一個,則選定其中的一個爲主鍵。
· 包含在任何一個候選鍵中的屬性,稱爲主屬性。其餘稱爲非主屬性或非鍵屬性。最簡單的情況是單個屬性是鍵,最極端的情況是整個屬性組是鍵,稱爲全鍵。

例如在關係模式SLC中,若規定學生不允許重名,則(Sno,Cno)、(Sname,Cno)是候選鍵,Sno,Sname,Cno是主屬性,其餘爲非主屬性。

再舉一個全鍵的例子:在關係模式簽約(演員,製片公司,電影名)中,假設某個演員可以參加不同電影的拍攝,某部電影有不同的演員參與拍攝,某個製片公司可以和不同的演員簽約拍攝不同的電影,那麼想要唯一地確定該關係中的一個元組,必須給出每一個屬性的值,所以這個關係的鍵爲(演員,製片公司,電影名),即全鍵。
##外鍵

關係模式R中屬性或屬性組X並非R的鍵,但X是另一個關係模式的鍵,則稱X是R的外部鍵,簡稱外鍵。

例如對於關係模式S(Sno,Sname,Sdept)和L(Sdept,Loca),Sdept不是關係S的鍵,卻是關係L的鍵,則Sdept是S關係的外鍵。
**需要注意的是,上述提到的X不是R的鍵,並不是說X不是R的主屬性。X不是鍵,但可以是鍵的組成屬性,或者是任意候選鍵中的一個主屬性。**如關係SC(Sno,Cno,Grade)中,Sno不是SC的鍵,是一個主屬性,但它是關係S的鍵,所以Sno是關係SC的外鍵。
##小結
關係間的聯繫,可以通過同時存在於兩個或多個關係中的主鍵和外鍵的取值來建立,主鍵和外鍵提供了一個表示關係間聯繫的途徑。

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