什么是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晚上

第四范式用于删除数据表中的多值依赖。

因此,第四范式定义了多值依赖。

更新于: 2021年7月6日

10K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.