`
836811384
  • 浏览: 551126 次
文章分类
社区版块
存档分类
最新评论

函数依赖保持性

 
阅读更多

<!--DWLayoutTable-->
<!--DWLayoutTable-->
<!--DWLayoutTable-->
<!-- InstanceBeginEditable name="nav" -->你现在的位置:首页 >> 教学内容 >> 第7章 | 重难点 <!-- InstanceEndEditable --> 概念搜索
<!-- InstanceBeginEditable name="main" -->§7.3.2 函数依赖保持性

定义5 设关系模式R具有属性集U和函数依赖集F,ρ=(R1,...,Rk)是R的一个分解,Ui是Ri的属性集,Fi是F在Ui的投映。
若F+=(∪i=1kFi)+,则称分解ρ具函数依赖保持性?

[算法2]函数依赖保持性的判断算法
输入:函数依赖集合F、F1、F2、…、Fk,记G=(i=1kFi)
输出:是否F+=G+
方法
(1)for 每个x→y∈F do
if y 不属于x关于G的闭包 then 输出 ‘F+≠G+’停止
endfor;
(2)输出‘F+=G+’停止.
由引理4, F+=G+的充分必要条件是GF+及FG+
由G的定义,前者是必然的,只需考虑后者。
该算法实际上是通过判断FG+来判别F+=G+

关系模式分解的例子:
考虑右图所示的关系模式,比较几个分解方案,是否具有函数依赖保持性

学生(学号,系属,主任) F={学号→系属,系属→主任}

分解1 ρ1={P(学号),Q(系属),R(主任)}.
F1=F2=F3=φ, G+=(F1→F2→F3)+=φ,
因F+≠G+,故ρ1不具有函数依赖保持性。

分解2 ρ2={P(学号,系属),R(学号,主任)}.
F1={学号→系属},F2={学号→主任} ,
G+=(F1∪F2)+ ={学号→系属,学号→主任,学号→系属主任,学号主任→系属主任,学号系属→主任系属},
因G+缺少‘系属→主任’,故F+≠G+,
从而ρ2不具有函数依赖保持性。

分解3 ρ3={P(学号,系属),R(系属,主任)}.
F1={学号→系属},F2={系属→主任},
容易看到G=(F1∪F2)=F,故F+=G+
故ρ3具有函数依赖保持性。

<!-- InstanceEndEditable -->
<!-- InstanceEnd -->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics