什麼是函式依賴和傳遞依賴(DBMS)?
讓我們首先了解資料庫管理系統 (DBMS) 中的函式依賴是什麼。
函式依賴
函式依賴指的是資料庫中一個屬性與另一個屬性的關係。藉助函式依賴,可以維護資料庫中資料的質量。
表示函式依賴的符號是 ->(箭頭)。
函式依賴示例
考慮下表。
| 員工編號 | 姓名 | 城市 | 薪資 |
|---|---|---|---|
| 1 | bob | 班加羅爾 | 25000 |
| 2 | Lucky | 德里 | 40000 |
員工的姓名、薪資和城市資訊可透過員工編號(或員工ID)獲得。因此,可以說城市、薪資和姓名屬性函式依賴於員工編號屬性。
示例
SSN->ENAME read as SSN functionally dependent on ENAME or SSN
determines ENAME.
PNUMBER->{PNAME,PLOCATION} (PNUMBER determines PNAME and PLOCATION)
{SSN,PNUMBER}->HOURS (SSN and PNUMBER combined determines HOURS)
傳遞依賴
傳遞依賴是透過使用三個以上屬性的關係獲得的。
這些依賴用於將資料庫規範化到3NF。
傳遞依賴示例
考慮下表:
| 書籍 | 書籍作者 | 作者年齡 |
|---|---|---|
| ABC | Hari | 45 |
| PQR | James | 60 |
依賴關係如下:
{Book} -> {Book_Author}
{Book_Author} does not -> {Book}
{Book_Author} -> {Age_of_Author}因此,根據傳遞性,{書籍} -> {作者年齡}。因此,如果知道書籍,就必須知道作者的年齡。
問題
關係 R(ABCDEF) 和 F: {AB->C, C->A, B->DE, ABD->F}。找到傳遞依賴。
解答
AB+=ABCDE => AB是候選鍵
C+=CA
B+=BDE
ABD+=ABDFCE => ABD不是候選鍵[因為AB是候選鍵]。
=>鍵屬性={A,B},非鍵屬性={C,D,E}
AB->C 不是傳遞依賴。
C->A 不是傳遞依賴。
B->DE 是傳遞依賴[因為B不是候選鍵/超鍵,DE是非鍵屬性]。
ABD->F 不是傳遞依賴[因為ABD是超鍵]。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP