数据库 规范覆盖的计算、多值依赖

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
……
B 数学分析 高等代数 微分方程 数学分析 高等代数 微分方程 普通物理 微分方程 普通物理 微分方程 普通物理 微分方程

(1)数据冗余大:有多少教师上同一门 课,参考书就重复多少次;
(2)(2)更新异常:改某一门课的参考 书需要修改该课的所有记录;
(3)插入异常: 某门课增加一个教师,
该课有多少参考书就需要插入多少 个元组; (4)删除异常: 删除某门课的一本参考 书,该课程有多少教师就要删除多 少元组。
函数依赖集的最小覆盖
定义 : 设F 是R(U)上的FD集,如果F满足以下三个条件: (1) F中每个FD的右部只含一个属性。 (2) F中无多余FD。即不存在XA, 满足F与F-{XA}等价。 (3) F中每个FD的左部都不含多余属性。
即不存在XA,X有真子集Z,满足: F与(F-{XA})∪{ZA}等价。 则称F为最小依赖集或最小覆盖。 将最小覆盖中左部相同的FD合并成一个后得到的FD集 称为规范覆盖。
证明: PY, Z( sX=x(r) ) = PY ( sX=x(r) )×PZ( sX=x(r) )成立, 必有PZ, Y( sX=x(r) ) = PZ ( sX=x(r) )×PY( sX=x(r) )成立。 (2)传递性: 若X Y,Y Z , 则X Z -Y 证明非常复杂,大大超出了本课程的范围。
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A,
AC→D, CB→B, CB→E }
(2) 删除F中多余的FD。
G={
C→B, B→A,
AC→D,
(CB)G+={ C, B,… },∵B(CB)G+,∴置F G 。
CB→E }
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
G={
C→B, B→A, C→D, C→A, AC→D, CB→B, CB→E }
(AC)G+={ A,C,…},∵A(AC)G+ ,∴置F G 。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
证明: PY, Z( sX=x(r) ) = PY ( sX=x(r) )×PZ( sX=x(r) )成立, 必有PZ, Y( sX=x(r) ) = PZ ( sX=x(r) )×PY( sX=x(r) )成立。
(2)传递性: 若X Y,Y Z , 则X Z -Y
证明非常复杂,大大超出了本课程的范围。
BF+={ B, A},∵EBF+,∴C不是多余属性,保留。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE }
的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A,
AC→D,
CB→E }
(2) 删除F中多余的FD。
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A, C→D, C→A, AC→D, CB→B, CB→E }
(2) 删除F中多余的FD。
G={
C→B, B→A,
C→A, AC→D, CB→B, CB→E }
U
R(U) X Y Z
说明:
条件必须对R(U)的所有可能 r 关系在X属性组上的所有可
X …
Y …
Z …
能值都成立,只要在某个可
x
能值上条件不成立,则:
………
X Y不成立。
x
………
多值依赖的另一个定义:
设R(U)是U上的关系模式, X,Y,ZU, 且Z=U-X-Y, 若R的任意关系r满足: 只要(x,y1,z1)和(x,y2,z2)是r的元组, 那么(x,y2,z1)和(x,y1,z2)也是r的元组,
F={
C→B, B→A,
AC→D,
CCB→→EE }
(3) 删除F中每个FD左部的多余属性。
CF+={ C, B , A, D, E},∵ECF+,∴B是多余属性,删去。
最后得到F的最小覆盖为:Fm={ C→B, B→A, C→D, C→E } F的规范覆盖为:Fc={ C→BDE, B→A }
多值依赖
(3)复制性: 若X Y, 则X Y。
(4)并规则: 若XY, X Z, 则X YZ。
(5)交规则:若XY, X Z, 则X Y∩Z。
(6)差规则:若XY, XZ, 则XY-Z, XZ-Y。
(7)平凡多值依赖:对U上的多值依赖XY, 若YX, 或
X∪Y=U,则称XY为平凡多值依赖。这是因为:
YX XY (3) XY X
F={
C→B, B→A, C→D, C→A, AC→D, CB→B, CB→E }
(2) 删除F中多余的FD。
G={
B→A, C→D, C→A, AC→D, CB→B, CB→E }
CG+={C, D, A},∵BCG+ ,∴F不变 。
函数依赖来自百度文库的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A, C→D, C→A, AC→D, CB→B, CB→E }
(2) 删除F中多余的FD。
G={
C→B,
C→D, C→A, AC→D, CB→B, CB→E }
BG+={ B },∵ABG+ , ∴F不变 。
函数依赖集的最小覆盖
Y X∩Y Y-X
XX (3) XX (1) XU-X X∪Y=U XY-X XX∩Y
(4)
XY
第四范式
定义:若R∈1NF,且R的每个非平凡多值依赖XY的 左部X都包含R的候选码,则R∈4NF。
若R∈4NF, 则R的每个非平凡多值依赖XY都是函数依赖, 因为X都包含R的候选码, 所以当然有XY 。 定理:若R∈4NF,则R∈BCNF。
(3)复制性: 若X Y, 则X Y。
证明:
X Y: 若X上的 分量相等 ,则Y上 的分量相 等。
r XYZ ………
x y z1 ……… x y zk ………
PY, Z(.) = PY (.) ×PZ(.)
y z1 …
=
y
×
z1 …
y zk
zk
所以X Y
多值依赖的性质
(1)对称性: 若X Y,则X U-X-Y (即Z)
原因: 对于每一门课,Teach表中都 存储了T和B的笛卡尔积, 即下列条 件对每门课x都成立:
PT, B( sC=x(Teach) ) = PT ( sC=x(Teach) )×PB( sC=x(Teach) )
由此引出多值依赖的定义:
定义(多值依赖):
设R(U)是U上的关系模式, X,Y,ZU, 且Z=U-X-Y, 若对R(U)的任意关系r,以及r在X属性组上的任意值x, 都有:PY, Z( sX=x(r) ) = PY ( sX=x(r) )×PZ( sX=x(r) ) 成立, 则称X多值确定Y或Y多值依赖于X,记作X Y。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→B, CB→E }
(2) 删除F中多余的FD。
Teach(C, T, B )存在问题的原因: 存在非平凡多值依赖CT, 且C不含候选码CTB 。
解决办法: 分解关系模式, 消除非平凡多值依赖CT: 1) CT(C, T),候选码: CT (CT仍成立,但已平凡) 2) CB(C, B),候选码:CB (CB仍成立,但已平凡) CT和CB都属于4NF
(2) 删除F中多余的FD。
G={
C→B, B→A,
AC→D, CB→B, CB→E }
CG+={C, B, A, D, E },∵ACG+ ,∴置F G 。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
BC不成立,因为参考书可以跨课程交叉使用。 否则:候选码是TB TBC是部分依赖 Teach∈2NF
Teach关系存在以下4个问题:
Teach( C, T, B ) 存在的问题
Teach CT
数学 邓军 数学 邓军 数学 邓军 数学 陈斯 数学 陈斯 数学 陈斯 物理 李平 物理 李平 物理 王强 物理 王强 物理 邓军 物理 邓军
F={
C→B, B→A,
AC→D, CB→B, CB→E }
(2) 删除F中多余的FD。
G={
C→B, B→A,
CB→B, CB→E }
(AC)G+={ A, C , B, E },∵D (AC)G+ ,∴F不变 。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A,
AC→D,
CB→E }
(2) 删除F中多余的FD。
G={
C→B, B→A,
AC→D
}
(CB)G+={ C, B , A, D },∵E(CB)G+,∴F不变 。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE }
的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A,
AC→D,
CB→E }
(2) 删除F中多余的FD。
F={
C→B, B→A,
AC→D,
CB→E }
(3) 删除F中每个FD左部的多余属性。
CF+={ C, B , A, D, E},∵DCF+,∴A是多余属性,删去。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE }
的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A,
AC→D,
CB→E }
(2) 删除F中多余的FD。
F={
C→B, B→A,
AC→D,
CB→E }
(3) 删除F中每个FD左部的多余属性。
在函数依赖范畴内,BCNF已经非常完美。但是属于
BCNF的关系模式仍可能存在问题。
例如: 假设多个教师上同一门课程,使用同一套参考书:
数学 物理
邓军 陈斯
李平 王强 邓军
数学分析 高等代数 微分方程
普通物理 微分方程
用关系模式Teach( C, T, B ) 表示。 课程 教师 参考书
F = { }, 候选码为CTB, 即全码,所以Teach∈BCNF 注意: TC不成立,因为一个教师可以上多门课。
例:设最小覆盖为:Fm={C→B, B→A, C→D, A→E, B→D}, 则对应的规范覆盖为: Fc={C→BD, B→AD, A→E }。
函数依赖集的最小覆盖
如何计算FD集F的最小覆盖?分三步:
(1) 用分解规则将F中的每个FD右部分解为单属性。 对每个XYF, 若Y=A1A2…Ak (k≥2), 则置: F (F - { XY } )∪{X Ai | i=1,2,…,k } 。 (2) 删除F中多余的FD。 对每个XAF, 令G=F - {XA}, 若AXG+, 则置F G。 因:由AXG+可得XA,故F中的XA多余。 (3) 删除F中每个FD左部的多余属性。 对每个XAF, 设X=B1B2…Bm (m≥2), 逐个考查Bi (i=1..m): 若A(X- Bi)F+, 则置F (F - { XA } )∪{(X- Bi)A}。 因:由A(X-Bi)F+可得(X-Bi)A, 故XA中Bi是多余属性。
则称多值依赖X Y在R(U)上成立。 U
R(U) X Y Z 说明: 两种定义是等价的:
y1 z1
y2 z2 y2 z1
=
y1 z2
y1 y2
×
z1 z2
rX Y Z
………
x y1 z1 …x …y2 z…2 x y2 z1 x y1 z2 ………
………
多值依赖的性质
(1)对称性: 若X Y,则X U-X-Y (即Z)
CG+={C , B, A, D , E},∵DCG+ ,∴置F G 。
函数依赖集的最小覆盖
例: 求F={ AC→A, C→B, B→A, C→D, C→A, AC→D, CB→BE } 的最小覆盖
(1) 用分解规则将F中的每个FD右部分解为单属性。
F={
C→B, B→A,
C→A, AC→D, CB→B, CB→E }
相关文档
最新文档