数据库作业15:第六章: 关系数据理论

相关补充及实际引例

关系模式

关系模式由五部分组成,是一个五元组:
R(U,D,DOM,F)
R 符号化的元组语义
U 一组属性
D 属性组U中的属性所来自的域
DOM 为属性到域的映射
F 为属性组U上的一组数据依赖

由于D、DOM与模式设计关系不大
因此在本章中把关系模式看作一个三元组:R<U,F>

作为二维表,关系要符合一个基本的条件:
每个分量必须是不可分开的数据项。
满足了这个条件的关系模式就属于第一范式(1NF)

数据依赖

数据依赖是一个关系内部属性与属性之间的一种约束关系

  • 通过属性间值的相等与否体现出来的数据间相互联系
  • 是现实世界属性间相互联系的抽象
  • 是数据内在的性质
  • 是语义的体现

数据依赖主要类型有函数依赖多值依赖

数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论


规范化

函数依赖

定义6.1
设R(U)是一个属性集U上的关系模式,X和Y是U的子集
若对于R(U)的任意一个可能的关系r,
r中不可能存在两个元组在X上的属性值相等,而在Y的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”
记作XYX \rightarrow Y

既然叫做函数依赖,阅读定义之后我们知道如果Y函数依赖于X,则:
一个X的值只能确定一个Y的值,就类似于函数定义中的自变量和函数值的意义对应的关系
[例]Student(Sno,Sname,Ssex,Sage,Sdept),假设不允许重名,则有:
SnoSsexSno\rightarrow Ssex
SnoSageSno\rightarrow Sage
SnoSdeptSno\rightarrow Sdept
SnoSnameSno\leftarrow\rightarrow Sname
SnameSsexSname\rightarrow Ssex
SnameSageSname\rightarrow Sage
SnameSdeptSname\rightarrow Sdept
Ssex↛SageSsex\not\rightarrow Sage,Ssex↛SdeptSsex\not\rightarrow Sdept
数据库作业15:第六章: 关系数据理论

平凡与非平凡的函数依赖

XYX\rightarrow Y,但Y⊈XY\not\subseteq X非平凡的函数依赖。
XYX\rightarrow Y,但YXY\subseteq X平凡的函数依赖。
XYX\rightarrow Y则X称为这个函数依赖的决定因素

完全函数依赖和部分函数依赖

定义6.2
在R(U)中,如果XYX \rightarrow Y,并且对于X的任何一个真子集X‘,都有X↛YX' \not\rightarrow Y则称Y对X完全函数依赖,记作XFYX \overset F\rightarrow Y
XYX \rightarrow Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XPYX \overset P\rightarrow Y

[例]在关系SC(Sno,Cno,Grade)中,有:
由于Sno↛GradeSno\not\rightarrow Grade,Cno↛GradeCno\not\rightarrow Grade
因此:
(Sno,Cno)FGrade(Sno,Cno)\overset F\rightarrow Grade
(Sno,Cno)PSno(Sno,Cno)\overset P\rightarrow Sno
(Sno,Cno)PCno(Sno,Cno)\overset P\rightarrow Cno

传递函数依赖

定义6.3
在R(U)中,如果XYX \rightarrow Y(Y⊈XY\not\subseteq X),Y↛XY\not\rightarrow X,YZY\rightarrow Z,Z⊈YZ\not\subseteq Y,则称Z对X传递函数依赖,记为XZX\overset {传递}\rightarrow Z

注:如果YXY\rightarrow X,即XYX\leftarrow\rightarrow Y,则Z直接依赖于X,而不是函数依赖。
[例] 在关系Std(Sno,Sdept,Mname)中,有:
SnoSdeptSno\rightarrow Sdept,SdeptMnameSdept\rightarrow Mname,
Mname传递函数依赖于Sno


定义6.4
设K为R<U,F>中的属性或属性组合。若KFUK\overset F\rightarrow U,则K称为R的一个候选码
如果U部分函数依赖于K,即KPUK\overset P\rightarrow U,则K称为超码
候选码是最小的超码,即K的任意真子集都不是候选码。
若关系模式R有多个候选码,则选定其中的一个作为主码

主属性与非主属性

包含在任何一个候选码中的属性,称为主属性
不包含在任何码中的属性称为非主属性
如果整个属性组是码,称为全码

[例 6.2]
S(Sno,Sdept,Sage)中,单个属性Sno是码
SC(Sno,Cno,Grade)中,(Sno,Cno)是码

[例 6.3]R(P,W,A)
P: 演奏者 W:作品 A:听众
一个演奏者可以演奏多个作品
某一个作品可以被多个演奏者演奏
听众可以欣赏不同演奏者的不同作评
所以综上,码为(P,W,A),即全码。

定义6.5
关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,也称外码


范式

范式是符合某一种级别的关系模式的集合。
种类如下图描述:
数据库作业15:第六章: 关系数据理论
通俗理解,范式就是关系模式,以上种类的范式就是关系模式按要求进行分类然后赋予他们新的定义。

各范式之间存在联系:

某一关系模式R为第n范式,可以简记为,R∈nNF
1NF2NF3NFBCNF4NF5NF1NF\supset 2NF\supset 3NF\supset BCNF\supset 4NF\supset 5NF
用饼状图描述各类范式间关系如下:
数据库作业15:第六章: 关系数据理论
如上文所述,第一范式的定义如下
作为二维表,关系要符合一个基本的条件:
每个分量必须是不可分开的数据项。
满足了这个条件的关系模式就属于第一范式(1NF)

一个低一级的范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化

第二范式 2NF

定义6.6
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF

[例 6.4]S-L-C(Sno,Sdept,Sloc,Cno,Grade),Sloc为学生的住处,并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno).
函数依赖有:

  • (Sno,Cno)Grade(Sno,Cno)\rightarrow Grade
  • SnoSdeptSno\rightarrow Sdept,(Sno,Cno)Sdept(Sno,Cno)\rightarrow Sdept
  • SnoSlocSno\rightarrow Sloc,(Sno,Cno)Sloc(Sno,Cno)\rightarrow Sloc
  • SdeptSlocSdept\rightarrow Sloc
    非主属性Sdept、Sloc并不完全依赖于码
    所以,关系模式S-L-C不属于2NF

出现这种问题的原因:

例子中有两类非主属性:

  • 一类如Grade,它对码完全函数依赖
  • 另一类如Sdept、Sloc,它们对码不是完全函数依赖

解决办法
用投影分解把关系模式S-L-C分解称两个关系模式

  • SC(Sno,Cno,Grade)
  • S-L(Sno,Sdept,Sloc)
    经过分解之后,SC的码是(Sno,Cno),SL的码是Sno,这样使得非主属性对码都是完全函数依赖

第三范式 3NF

定义6.7
设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z⊉YZ\not\supseteq Y),使得XYX\rightarrow Y,YZY\rightarrow Z成立,Y↛XY\not\rightarrow X不成立,则称R<U,F>∈3NF
SC没有传递依赖,因此SC∈3NF
S-L中SnoSdeptSno\rightarrow Sdept(Sdept↛SnoSdept\not\rightarrow Sno),sDeptSlocsDept\rightarrow Sloc,可得SnoSlocSno\overset {传递}\rightarrow Sloc
解决的办法如下,将S-L分解成

  • S-D(Sno,Sdept)∈3NF
  • D-L(Sdept,Sloc)∈3NF

BCNF

通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。
定义6.8
设关系模式R<U,F>∈1NF,若XYX\rightarrow YYXY\subseteq X时X必含有码,则R<U,F>∈BCNF
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF

数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论
数据库作业15:第六章: 关系数据理论

多值依赖

[例 6.9]设学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。
关系模式Teaching(C,T,B)

  • 课程C
  • 教师T
  • 参考书B

非规范化关系如下表所示
数据库作业15:第六章: 关系数据理论
定义6.9
设R(U)是属性集U上的一个关系模式。,X,Y,Z是U的子集,并且Z=U-X-Y。关系模式中多值依赖XYX\rightarrow\rightarrow Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关

[例]Teaching(C,T,B)
Teaching具有唯一候选码(C,T,B),即全码。Teaching∈BCNF对于C的每一个值,T有一组值与之对应,而不论B取何值。因此T多值依赖与C,即CTC\rightarrow\rightarrow T

平凡多值依赖和非平凡的多值依赖

XYX\rightarrow\rightarrow Y,而Z=\emptyset,则称XYX\rightarrow\rightarrow Y平凡的多值依赖
否则称XYX\rightarrow\rightarrow Y非平凡的多值依赖

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

数据库作业15:第六章: 关系数据理论
按照语义对于W的每一个值,S有一个完整的集合与之对应而不论C取何值。所以WSW\rightarrow\rightarrow S。由于C与S的完全对称性,必然有WCW\rightarrow\rightarrow C成立。

数据库作业15:第六章: 关系数据理论

第四范式 4NF

定义6.10
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖XYX\rightarrow\rightarrow Y(YXY\nsubseteq X),X都含有码,则,R<U,F>∈4NF

由介绍范式关系的开篇可知,如果一个关系模式是4NF,则必为BCNF。
在[例 6.10]的WSC中,WSW\rightarrow\rightarrow SWCW\rightarrow\rightarrow C,他们都是非平凡多值依赖,而W不是码,关系模式WSC的码是(W,S,C),即All-key,因此,WSC4NFWSC\notin4NF,可以把WSC分解成WS(W,S),WC(W,C),WS4NFWS\in 4NF,WC4NFWC\in 4NF

规范化过程
数据库作业15:第六章: 关系数据理论


课后习题

数据库作业15:第六章: 关系数据理论
一个系有若干专业 :系\rightarrow专业名
每个专业每年只招一个班 :(专业名,入学年份)\leftarrow\rightarrow班号
每个班有若干学生 :学号\rightarrow班号
一个系的学生住在同一个宿舍区: 宿系名\rightarrow宿舍区
学生参加某学会有一个入会年份 (学号,学会名)\rightarrow入会年份

关系模式如下:
学生(学号、姓名、出生年月、班号)
候选码:学号 外码:班号
班级(班号、专业名、班级人数、入校年份)
候选码:班号,(专业名,入校年份)
专业(专业名,系名)
候选码:专业名 外码:系名
系(系名、系号、系办公室地点、系人数,宿舍区)
候选码:系号、系名。
学会(学会名、成立年份、地点、学会人数)
候选码:学会名
学生参加学会(学号,学会名,入会年份)
候选码:(学号,学会名)
不存在传递函数依赖、部分函数依赖。
数据库作业15:第六章: 关系数据理论
6、
(1)
A→BCDE, BCDE⊈A, A是码;
BC→DE, DE⊈BC, BC必含有码.
BC含有码时是BCNF。
(2)
码:ACE, BCE, CDE.
(3)
不存在非主属性,属于3NF.
A, BC, DE不含码,不属于BCNF。

7、
(1)正确
(2)正确
(3)正确
(4)正确
(5)正确
(6)正确
(7)正确
(8)错误:例如上面的关系模式 (学号,学会名)\rightarrow入会年份 ,但是↛学号\not\rightarrow入会年份↛学会名\not\rightarrow入会年份

8、
(1)
若R是BCNF,X →Y且Y ⊈X时X必含有码,每一个决定因素都含码。
若R是3NF,那么,R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇\ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立
如果已经确定了R是BCNF,那么每一个决定因素都含码,Y含码,Y→X成立,所以,如果R是BCNF,那么它也是3NF。
(2)
若R是3NF,那么,R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ \Y), 使得X→Y,Y→Z成立,Y ↛ X不成立
若R不属于2NF,R中有非主属性部分函数依赖于任一个候选码,也就是说有非主属性Z部份依赖于X,假设部分依赖的属性组为Y的话,那么Z⊈YZ\not\subseteq Y,XYX\rightarrow Y,YZY\rightarrow Z,YXY\rightarrow X与3NF定义矛盾,也就不属于3NF

附加题

一.
Y(X1,X2,X3,X4)
(X1,X2)→X3
X2→X4

  1. 侯选码?(X1,X2)
  2. 属于第几范式?X4对码有部分函数依赖,所以是第一范式

二.
R(A,B,C,D)
F={AB→D,AC→BD,B→C}

  1. 侯选码?(A,B)(A,C)
  2. 最高属于第几范式?

三.
R(X,Y,Z,W)
F={Y←→W,XY→Z}

  1. 侯选码?(X,Y)(X,W)
  2. 最高属于第几范式?2NF

四.
R(A,B,C,D,E) F={A→B,CE→A,E→D}

  1. 求候选码。(C,E)
  2. 最高属于第几范式,为什么?D对码部分依赖,所以是1NF
  3. 分解到3NF。R1(A,B),R2(E,D),R3(A,C,E)。

五.
R(商店编号,商品编号,数量,部门编号,负责人)
每个商店的每种商品只在一个部门销售
()(商店编号,商品编号)\rightarrow 部门编号
每个商店的每个部门只有一个负责人,
()(商店编号,部门编号)\rightarrow负责人
每个商店的每种商品只有一个库存数量。
()(商店编号,商品编号)\rightarrow数量

  1. 求候选码。(商店编号,商品编号)
  2. R已达第几范式?为什么?
    首先不存在非主属性对候选码的部分依赖,所以是2NF
    其次,Z负责人,Y(商店编号,部门编号),X(商店编号,商品编号),存在Z到X的传递依赖,所以不是3NF
  3. 若不属于3NF,分解成3NF。
    R1(商店编号,商品编号,数量,部门编号)
    R2(商店编号,部门编号,负责人)