数据库管理系统中的依赖类型
DBMS 中的依赖是两个或多个属性之间的关系。它在 DBMS 中具有以下类型:
- 函数依赖
- 完全函数依赖
- 传递依赖
- 多值依赖
- 部分依赖
让我们从函数依赖开始:
函数依赖
如果表中存储的信息可以唯一地确定同一表中的其他信息,则称为函数依赖。可以将其视为同一关系中两个属性之间的关联。
如果 P 函数决定 Q,则
| P -> Q |
让我们看一个例子:
<员工>
| 员工ID | 员工姓名 | 员工年龄 |
| E01 | Amit | 28 |
| E02 | Rohit | 31 |
在上表中,**员工姓名** 函数依赖于 **员工ID**,因为对于给定的 **员工ID** 值,**员工姓名** 只能取一个值:
| 员工ID -> 员工姓名 |
如下所示:

完全函数依赖
如果一个属性函数依赖于另一个属性,并且不依赖于其任何真子集,则称该属性完全函数依赖于另一个属性。
例如,如果属性 Q 函数依赖于属性 P,并且不依赖于 P 的任何真子集,则属性 Q 完全函数依赖于属性 P。
让我们看一个例子:
<项目成本>
| 项目ID | 项目成本 |
| 001 | 1000 |
| 002 | 5000 |
<员工项目>
| 员工ID | 项目ID | **天数**(在项目上花费的天数) |
| E099 | 001 | 320 |
| E056 | 002 | 190 |
上述关系说明
| 员工ID,项目ID,项目成本 -> 天数 |
但是,它不是完全函数依赖的。
而子集**{员工ID,项目ID}** 可以很容易地确定员工在项目上花费的**{天数}**。
这总结并给出了我们的完全函数依赖:
| {员工ID,项目ID} -> (天数) |
传递依赖
当间接关系导致函数依赖时,称为传递依赖。
如果 P -> Q 和 Q -> R 为真,则 P-> R 是传递依赖。
多值依赖
当表中一行或多行的存在意味着同一表中的一行或多行时,就会发生多值依赖。
如果一个表具有属性 P、Q 和 R,则 Q 和 R 是 P 的多值事实。
它由双箭头表示:
| ->-> |
例如
| P->->Q Q->->R |
在上述情况下,只有当 Q 和 R 是独立属性时,才存在多值依赖。
部分依赖
部分依赖是指非素属性函数依赖于候选键的一部分的情况。
第二范式 (2NF) 消除了部分依赖。让我们看一个例子:
<学生项目>
| 学生ID | 项目编号 | 学生姓名 | 项目名称 |
| S01 | 199 | Katie | 地理位置 |
| S02 | 120 | Ollie | 集群探索 |
在上表中,我们有部分依赖;让我们看看如何:
主键属性是**学生ID** 和 **项目编号**。
如前所述,非素属性,即 **学生姓名** 和 **项目名称** 应该函数依赖于候选键的一部分,才能成为部分依赖。
**学生姓名** 可以由 **学生ID** 确定,这使得关系成为部分依赖的。
**项目名称** 可以由 **项目ID** 确定,这使得关系成为部分依赖的。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP