数据库管理系统中的依赖类型


DBMS中的依赖是两个或多个属性之间的关系。它在DBMS中具有以下类型:

  • 函数依赖
  • 完全函数依赖
  • 传递依赖
  • 多值依赖
  • 部分依赖

让我们从函数依赖开始:

函数依赖

如果存储在表中的信息可以唯一地确定同一表中的其他信息,则称为函数依赖。可以将其视为同一关系的两个属性之间的关联。

如果P函数决定Q,则

P -> Q

让我们看一个例子:

<员工>

员工ID(EmpID)员工姓名(EmpName)员工年龄(EmpAge)
E01Amit28
E02Rohit31

在上表中,**员工姓名(EmpName)** 函数依赖于 **员工ID(EmpID)**,因为对于给定的**员工ID(EmpID)** 值,**员工姓名(EmpName)** 只能取一个值:

EmpID -> EmpName

如下所示:

完全函数依赖

如果一个属性函数依赖于另一个属性,并且不依赖于它的任何真子集,则该属性完全函数依赖于另一个属性。

例如,如果属性Q函数依赖于属性P,并且不依赖于P的任何真子集,则属性Q完全函数依赖于属性P。

让我们看一个例子:

<项目成本>

项目ID(ProjectID)项目成本(ProjectCost)
0011000
0025000

<员工项目>

员工ID(EmpID)项目ID(ProjectID)**天数**(在项目上花费)
E099001320
E056002190

上述关系表明

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)
S01199Katie地理位置(Geo Location)
S02120Ollie集群探索(Cluster Exploration)

在上表中,我们有部分依赖;让我们看看如何:

主键属性是**学生ID(StudentID)** 和 **项目编号(ProjectNo)**。

如前所述,非主属性,即**学生姓名(StudentName)** 和 **项目名称(ProjectName)**,应该函数依赖于候选键的一部分,才能成为部分依赖。

**学生姓名(StudentName)** 可以由 **学生ID(StudentID)** 确定,这使得关系成为部分依赖的。

**项目名称(ProjectName)** 可以由 **项目ID(ProjectID)** 确定,这使得关系成为部分依赖的。

更新于:2023年9月6日

5万+浏览量

启动您的职业生涯

通过完成课程获得认证

开始
广告