資料庫管理系統中的依賴型別
DBMS中的依賴是兩個或多個屬性之間的關係。它在DBMS中具有以下型別:
- 函式依賴
- 完全函式依賴
- 傳遞依賴
- 多值依賴
- 部分依賴
讓我們從函式依賴開始:
函式依賴
如果儲存在表中的資訊可以唯一地確定同一表中的其他資訊,則稱為函式依賴。可以將其視為同一關係的兩個屬性之間的關聯。
如果P函式決定Q,則
P -> Q |
讓我們看一個例子:
<員工>
員工ID(EmpID) | 員工姓名(EmpName) | 員工年齡(EmpAge) |
E01 | Amit | 28 |
E02 | Rohit | 31 |
在上表中,**員工姓名(EmpName)** 函式依賴於 **員工ID(EmpID)**,因為對於給定的**員工ID(EmpID)** 值,**員工姓名(EmpName)** 只能取一個值:
EmpID -> EmpName |
如下所示:
完全函式依賴
如果一個屬性函式依賴於另一個屬性,並且不依賴於它的任何真子集,則該屬性完全函式依賴於另一個屬性。
例如,如果屬性Q函式依賴於屬性P,並且不依賴於P的任何真子集,則屬性Q完全函式依賴於屬性P。
讓我們看一個例子:
<專案成本>
專案ID(ProjectID) | 專案成本(ProjectCost) |
001 | 1000 |
002 | 5000 |
<員工專案>
員工ID(EmpID) | 專案ID(ProjectID) | **天數**(在專案上花費) |
E099 | 001 | 320 |
E056 | 002 | 190 |
上述關係表明
EmpID, ProjectID, ProjectCost -> Days |
然而,它不是完全函式依賴的。
而子集**{EmpID, ProjectID}** 可以很容易地確定員工在專案上花費的**{Days}**。
這總結並給出了我們的完全函式依賴:
{EmpID, ProjectID} -> (Days) |
傳遞依賴
當間接關係導致函式依賴時,稱為傳遞依賴。
如果 P -> Q 和 Q -> R 為真,則 P-> R 是傳遞依賴。
多值依賴
當表中一行或多行的存在意味著同一表中的一行或多行其他行時,就會發生多值依賴。
如果一個表具有屬性P、Q和R,則Q和R是P的多值事實。
它用雙箭頭表示:
->-> |
例如
P->->Q Q->->R |
在上述情況下,只有當Q和R是獨立屬性時,才存在多值依賴。
部分依賴
部分依賴發生在非主屬性函式依賴於候選鍵的一部分時。
第二正規化(2NF) 消除了部分依賴。讓我們看一個例子:
<學生專案>
學生ID(StudentID) | 專案編號(ProjectNo) | 學生姓名(StudentName) | 專案名稱(ProjectName) |
S01 | 199 | Katie | 地理位置(Geo Location) |
S02 | 120 | Ollie | 叢集探索(Cluster Exploration) |
在上表中,我們有部分依賴;讓我們看看如何:
主鍵屬性是**學生ID(StudentID)** 和 **專案編號(ProjectNo)**。
如前所述,非主屬性,即**學生姓名(StudentName)** 和 **專案名稱(ProjectName)**,應該函式依賴於候選鍵的一部分,才能成為部分依賴。
**學生姓名(StudentName)** 可以由 **學生ID(StudentID)** 確定,這使得關係成為部分依賴的。
**專案名稱(ProjectName)** 可以由 **專案ID(ProjectID)** 確定,這使得關係成為部分依賴的。