数据库系统之关系数据理论——多值依赖到底是什么
Posted guojiaxue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库系统之关系数据理论——多值依赖到底是什么相关的知识,希望对你有一定的参考价值。
自己在家捣鼓了很久还是没弄明白什么是多值依赖,今天网课老师留了题“举出三个多值依赖的例子”,最后看了老师的例子,听了讲解,终于弄明白了怎么判断,怎么举例,什么是多值依赖。
先放上多值依赖的定义:
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x的值而与z值无关。
看概念是很抽象生硬,不便于理解的,通过几个例子来让我们进行最通俗的讲解。
例1:
MSC(M,S,C)中,M表示专业,S表示学生,C表示该专业必修课,假设每个专业有多个学生,有一组必修课,设同专业内所有学生选修的必修课相同。
实例如下,按照语义对于M的每一个值M,S有一个完整的集合对应,而不问C取何值,所以M→→S,由于C与S的完全对称性,必然有M→→C成立。
M S C
M1 S1 C1
M1 S1 C2
M1 S2 C1
M1 S2 C2
··· ··· ···
也就是说,一个专业对应若干个学生,他们之间的关系是一对多(1:n),是多值依赖M→→S;一个学生对应多个必修课,而一个必修课也对应多个学生,他们之间的关系是多对多(n:m);其实M与C没有直接关系,有的只是间接关系(借助C),只是因为C与S完全对称,所以可以推出专业和必修课也是多值依赖M→→C(一对多1:m)。
例2:
关系模式ISA(I,S,A)中,I表示学生兴趣小组,S表示学生,A表示某兴趣小组的活动项目。假设每个兴趣小组有多个学生,有若干活动项目,每个学生必须参加所在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。
实例关系如下,按照语义对于I的每一个值I,S有一个完整的集合对应,而不问A取值如何,所以I→→S,由于S与A的完全对称性,必然有I→→A成立。
I S A
I1 S1 A1
I1 S1 A2
I1 S2 A1
I1 S2 A2
··· ··· ···
也就是说,一个兴趣小组I对应若干个学生S,他们是一对多的关系(1:n),是多值依赖I→→S;一个学生参加多个活动项目A,而一个活动项目又对应多个学生,他们之间的关系是多对多(n:m);其实I与A没有直接关系,有的只是间接关系(借助S),只是因为S与A完全对称,所以可以推出专业和必修课也是多值依赖I→→A(一对多1:m)。
例3:
关系模式WSC(W,S,C)中,W表示仓库,S表示保管员,C表示商品,假设每个仓库又若干名保管员,若干个商品,每个保管员保管所在仓库的所有商品,每种商品被所有保管员保管。
实例如下,按照语义对于W的每一个值W,S有一个完整的集合对应,而不问C取何值,所以W→→S,由于C与S的完全对称性,必然有W→→C成立。
W S C
W1 S1 C1
W1 S1 C2
W1 S2 C1
W1 S2 C2
··· ··· ···
也就是说,一个专业对应若干个学生,他们之间的关系是一对多(1:n),是多值依赖W→→S;一个学生对应多个必修课,而一个必修课也对应多个学生,他们之间的关系是多对多(n:m);其实M与C没有直接关系,有的只是间接关系(借助C),只是因为C与S完全对称,所以可以推出专业和必修课也是多值依赖W→→C(一对多1:m)。
其实还有一种方法可以判断是否该关系模式存在多值依赖:
以例3为例,找到属性W相同值和属性S不同值的任意两个元组,交换他们的S值,重新组成的新元组如果都可以在这个表内找到,那么就存在多值依赖。比如取第一行和第四行,将这两行的S1和S2互换,得到新元组(W1,S2,C1)和(W1,S1,C2),我们发现这两个元组在原表内都存在(在第二行和第三行),其他的也是这样,那么该关系模式就存在多值依赖。
以上是关于数据库系统之关系数据理论——多值依赖到底是什么的主要内容,如果未能解决你的问题,请参考以下文章