DBMS 中的依赖关系类型
DBMS 中的依赖关系是两个或多个属性之间的关系。它在 DBMS 中具有以下类型 -
- 功能依赖关系
- 完全功能依赖关系
- 传递依赖关系
- 多值依赖关系
- 部分依赖关系
让我们从功能依赖关系开始 -
功能依赖关系
如果表中存储的信息可以唯一地确定同一张表中的另一条信息,则称为功能依赖关系。将其视为同一关系的两个属性之间的关联。
如果 P 在功能上确定 Q,则
P -> Q |
Let us see an example −
<Employee>
EmpID | EmpName | EmpAge |
E01 | Amit | 28 |
E02 | Rohit | 31 |
在上表中,EmpName 在功能上依赖于EmpID ,因为对于给定的EmpID值,EmpName 只能取一个值:
EmpID -> EmpName |
如下所示 -
完全功能依赖
如果一个属性在功能上依赖于另一个属性,而不是其任何真子集,则该属性完全功能依赖于该属性。
例如,如果属性 Q 在功能上依赖于 P,而不是 P 的任何真子集,则该属性完全功能依赖于另一个属性 P。
让我们看一个例子 -
<ProjectCost>
ProjectID | ProjectCost |
001 | 1000 |
002 | 5000 |
<EmployeeProject>
EmpID | ProjectID | Days (spent on the project) |
E099 | 001 | 320 |
E056 | 002 | 190 |
The above relations states:
EmpID, ProjectID, ProjectCost -> Days |
但是,它不是完全功能依赖的。
而子集{EmpID, ProjectID} 可以轻松确定员工在项目上花费的 {Days}。
这总结并给出了我们完全功能依赖关系 −
{EmpID, ProjectID} -> (Days) |
传递依赖
当间接关系导致功能依赖时,它被称为传递依赖。
如果 P -> Q 且 Q -> R 为真,则 P-> R 是传递依赖。
多值依赖
当表中存在一行或多行意味着同一表中存在一行或多行时,就会发生多值依赖。
如果表具有属性 P、Q 和 R,则 Q 和 R 是 P 的多值事实。
它由双箭头表示 −
->-> |
对于我们的示例:
P->->QQ->->R |
在上述情况下,仅当 Q 和 R 是独立属性时,才存在多值依赖关系。
部分依赖
部分依赖发生在非主属性在功能上依赖于候选键的一部分时。
第二范式 (2NF)消除了部分依赖性依赖关系。让我们看一个例子 -
<StudentProject>
StudentID | ProjectNo | StudentName | ProjectName |
S01 | 199 | Katie | Geo Location |
S02 | 120 | Ollie | Cluster Exploration |
在上表中,我们有部分依赖关系;让我们看看如何 -
主要关键属性是StudentID 和 ProjectNo.
如前所述,非主要属性,即StudentName 和ProjectName 应该在功能上依赖于候选键的一部分,即部分依赖。
StudentName 可以通过StudentID 确定,这使得关系部分依赖。
ProjectName 可以通过ProjectID确定,这使得关系部分依赖。