什么是DBMS中的多值依赖?
多值依赖 (MVD) 指的是表中存在一行或多行。这意味着在同一表中存在一行或多行其他行。多值依赖会阻止第四范式。多值依赖涉及表中的至少三个属性。
在DBMS中,它用符号“->->”表示。
X->Y 将X的一个值关联到Y的一个值。
X->->Y(读作X多决定Y)将X的一个值关联到Y的多个值。
当X->->Y且X->->z时,其中Y和Z不依赖于彼此独立时,就会发生非平凡MVD。非平凡MVD会产生冗余。
我们以两种不同的方式使用多值条件:
测试关系以确定它们在给定的实际和多值依赖关系安排下是否合法。
确定合法关系安排的限制。我们将只关注满足给定实际和多值依赖关系安排的关系。
MVD 传递规则
如果A ->B成立,并且B ->C成立,则A ->B ->C成立。
示例
给定的FD集如下:
ISBN--> TITLE,PUBLISHER
ISBN,NO -->AUTHOR
PUBLISHER -->PU_URL
我们需要证明这条规则。考虑A=ISBN,B=PUBLISHER,C=PU_URL。要找到隐含的传递规则,请找到A+的覆盖并计算。
现在从x={ISBN}开始
FD ISBN--> TITLE, PUBLISHER的LHS完全包含在当前属性集x中。
通过FD RHS属性集扩展x,得到x={ISBN,TITLE,PUBLISHER}
现在FD:PUBLISHER -->PU_URL适用
将FD的RHS属性集添加到当前属性集x中,得到x={ISBN,TITLE,PUBLISHER,PU_URL}
在这里我们可以得出结论,ISBN-->PU_URL
第四范式会导致多值依赖。如果关系处于Boyce-Codd范式,则必须删除多值依赖。
解释 - 多值依赖是指如果表中存在依赖关系或关系,则一个值会发生多个依赖关系。
让我们考虑以下示例。考虑下表:
| id | 部门 | 班次 |
|---|---|---|
| 1 | 编码 | 白天 |
| 2 | 人力资源 | 白天 |
| 3 | 网络 | 晚上 |
在上表中,id 2有两个部门人力资源和网络。以及班次时间白天和晚上。
当我们选择id 2的详细信息时,它将生成如下表:
| id | 部门 | 班次 |
|---|---|---|
| 2 | 人力资源 | 白天 |
| 2 | 网络 | 晚上 |
| 2 | 人力资源 | 晚上 |
| 2 | 网络 | 白天 |
这意味着存在多值依赖。在此,部门和班次之间的关系毫无意义。
这可以通过删除多值依赖来纠正,即将此数据分成两个表,如下所示:
表1
| id | 部门 |
|---|---|
| 1 | 编码 |
| 2 | 人力资源 |
| 2 | 网络 |
表2
| id | 班次 |
|---|---|
| 1 | 白天 |
| 2 | 白天 |
| 2 | 晚上 |
第四范式用于删除数据表中的多值依赖。
因此,第四范式定义了多值依赖。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP