第6章 关系数据理论—多值依赖和4NF

第6章 关系数据理论—多值依赖和4NF


本篇文章全部内容来自数据库系统概论第五版—王珊、萨师煊著。
这是对自己学习的总结,如有错误,请大家指正,一起进步!


1、多值依赖

例:学校某一门课程由多个教授讲授,他们使用同一套参考书。每个教师可以讲授多门课程,每种参考是可以供多门课程使用。可以用一个非规范化的关系来表示教师T、课程C和参考书B之间的关系。如表所示:

课程C教师T参考书B
物理李勇普通物理学
物理李勇光学原理
物理李勇物理习题集
物理王军普通物理学
物理王军光学原理
物理王军物理习题集
数学李勇数学分析
数学李勇微分方程
数学李勇高等代数
数学张平数学分析
数学张平微分方程
数学张平高等代数

关系模式Teacher(C,T,B)的码是(C,T,B),所以Teacher属于BCNF,但是当某一课程增加一名讲课教师时,必须插入多个元组,类似的情况,如果某一门教材需要删除时,则必须删除多个元组。

根据以上例子,可以发现这类关系模式具有一种多值依赖的数据依赖。

**定义:**设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X->->Y成立,当且仅当对R(U)的任意关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值,与z值无关。

例:

  • 在关系模式Teacher中,对于一个(物理,光学原理)有一组T值{李勇,王军},这组值仅仅决定于课程C上的值(物理)。对于另一个(物理,普通物理学),它对应的一组T值仍是{李勇,王军},虽然参考书的值已经改变啦,因此T多值依赖于C。

  • 同样在关系模式Teacher中,对于一个(数学,李勇)有一组B值{数学分析,微分方程,高等代数},这组值仅仅决定于课程C上的值(数学)。对于另一个(数学,王军),它对应的一组B值仍是{数学分析,微分方程,高等代数},虽然教师T值已经改变啦,因此B多值依赖于C。

若X->->Y(Y多值依赖于X),而Z是空值,则称Y多值依赖于X为平凡的多值依赖。

例:关系模式WSC(W,S,C)中,W表示仓库,S表示保管员,C表示商品。假设每个仓库由若干个保管员,有若干个商品。每个保管员保管所在仓库的所有商品,每种商品被所有保管员保管。

WSC
W1S1C1
W1S1C2
W1S1C3
W1S2C1
W1S2C2
W2S2C3
W2S3C4
W2S4C5
W2S4C4

多值依赖具有的性质:

  • 多值依赖具有对称性。
  • 多值依赖具有传递性。
  • 函数依赖可以看作是多值依赖的特殊情况。
  • 若X->->Y,X->->Z,则X->->YZ。
  • 若X->->Y,X->->Z,则X->->Y与Z的交集。
  • 若X->->Y,X->->Z,则X->->Y-Z,X->->Z-Y(差集)。

多值依赖和函数依赖的区别:

  • 多值依赖的有效性与属性集的范围有关。
  • 若函数依赖X->Y在R(U)上成立,则对于任何Y的子集都函数依赖于X,在多值依赖中,这种情况不一定成立。

4、4NF(第四范式)

定义:关系模式R<U,F>属于1NF,如果对于R的每个非平凡多值依赖X->->Y(Y不包含于X),X都含有码,则称R<U,F>属于4NF。

4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

对每个非平凡的多值依赖X->->Y,X都含有候选码,于是就有X->Y,所以4NF所允许的非平凡的多值依赖实际上是函数依赖。

例:在关系模式WSC中,W->->C,W->->S,它们都是非平凡的多值依赖。然而W不是码,关系模式WSC的码是(W,S,C),所以关系模式WSC不属于4NF。

一个关系模式达到了BCNF但不是4NF ,仍然具有不好的性质,以WSC为例,WSC不属于4NF,但是WSC属于BCNF。在某一时刻时,某一仓库W1有n个保管员,存放m件物品,则关系中 分量W1的元组数目一定有mxn个。每个保管员重复存储m次,每种物品重复存储n次,数据的冗余度太大。

采用投影分解法,消去非平凡且非函数依赖的多值依赖。

WS(W,S)
WC(W,C)
  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值