什么是函数依赖和传递依赖(DBMS)?


让我们首先了解数据库管理系统 (DBMS) 中的函数依赖是什么。

函数依赖

函数依赖指的是数据库中一个属性与另一个属性的关系。借助函数依赖,可以维护数据库中数据的质量。

表示函数依赖的符号是 ->(箭头)。

函数依赖示例

考虑下表。

员工编号姓名城市薪资
1bob班加罗尔25000
2Lucky德里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。

传递依赖示例

考虑下表:

书籍书籍作者作者年龄
ABCHari45
PQRJames60

依赖关系如下:

{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是超键]。

更新于:2021年7月6日

13K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告