什么是函数依赖和传递依赖(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