前端之家收集整理的这篇文章主要介绍了
函数依赖保持性,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
|
§7.3.2 函数依赖保持性@H_403_49@ @H_403_49@ 定义5 设关系模式R具有属性集U和函数依赖集F,ρ=(R1,...,Rk)是R的一个分解,Ui是Ri的属性集,Fi是F在Ui的投映。@H_403_49@ 若F+=(∪i=1kFi)+,则称分解ρ具函数依赖保持性? [算法2]函数依赖保持性的判断算法@H_403_49@ 输入:函数依赖集合F、F1、F2、…、Fk,记G=(∪i=1kFi) @H_403_49@ 输出:是否F+=G+@H_403_49@ 方法@H_403_49@ (1)for 每个x→y∈F do @H_403_49@ if y 不属于x关于G的闭包 then 输出 ‘F+≠G+’停止@H_403_49@ endfor;@H_403_49@ (2)输出‘F+=G+’停止.@H_403_49@ 由引理4, F+=G+的充分必要条件是GF+及FG+,@H_403_49@ 由G的定义,前者是必然的,只需考虑后者。@H_403_49@ 该算法实际上是通过判断FG+来判别F+=G+。@H_403_49@ 关系模式分解的例子:@H_403_49@ 考虑右图所示的关系模式,比较几个分解方案,是否具有函数依赖保持性@H_403_49@ @H_403_49@ 学生(学号,系属,主任) F={学号→系属,系属→主任} @H_403_49@ @H_403_49@ 分解1 ρ1={P(学号),Q(系属),R(主任)}.@H_403_49@ F1=F2=F3=φ,G+=(F1→F2→F3)+=φ,@H_403_49@ 因F+≠G+,故ρ1不具有函数依赖保持性。@H_403_49@ @H_403_49@ 分解2 ρ2={P(学号,系属),R(学号,主任)}.@H_403_49@ F1={学号→系属},F2={学号→主任},@H_403_49@ G+=(F1∪F2)+ ={学号→系属,学号→主任,学号→系属主任,学号主任→系属主任,学号系属→主任系属},@H_403_49@ 因G+缺少‘系属→主任’,故F+≠G+,@H_403_49@ 从而ρ2不具有函数依赖保持性。@H_403_49@ @H_403_49@ 分解3 ρ3={P(学号,系属),R(系属,主任)}.@H_403_49@ F1={学号→系属},F2={系属→主任},@H_403_49@ 容易看到G=(F1∪F2)=F,故F+=G+ ,@H_403_49@ 故ρ3具有函数依赖保持性。
|
|
原文链接:https://www.f2er.com/javaschema/287250.html