解题步骤:
1.依赖投影到个分解
2.各依赖并起来是否有FD
第二步没有成立的情况下
3.没有存在的算闭包是否存在
例一:
步骤一:
R(ABCD),F={B->A,A->C},p={AB,AC,AD},p是否保持FD
AB
选一个
x0=A,x1=AC
x0=B,x1=ABC
则函数依赖有A->C,B->AC
所以映射到投影是B->A
以上仅为分析过程,最后在答题中写的过程是B->A
AC
选一个
x0=A,x1=AC
我们会发现从A就能推出AC,到下一轮划掉A,无法从C中选择两个,所以依赖只有A->C
映射到投影是A->C
AD
x0=A,x1=AC
x0=D,x1=D
函数依赖为A->C
映射到投影为空集
所以整体下来
R1(AB),F1={B->A}
R2(AC),F2={A->C}
R3(AD),F3是空集
步骤二:
F1UF2UF3=F成立
在考试中如何规范书写呢?
F={B->A,A->C}
(AB)+=ABC,(F1)={B->A}
(AC)+=AC,(F2)={A->C}
(AD)+=ACD,(F3)=
所以
F1UF2UF3=F成立
例二:
R(ABCD),F={A->B,B->C,C->D,D->A},p={AB,BC,AD},p是否保持FD
步骤一
AB
x0=A,x1=ABCD
x0=B,x1=BCDA
函数依赖A->BCD,B->CDA
映射到投影为F1={A->B,B->A}
以此类推
R2=(BC),F2={B->C,C->B}
R3=(AD),F2={A->D,D->A}
可以看到函数的依赖为B->C,C->B,A->D,D->A,对于F来说少了C->D,进入步骤三:
x0=C x1=CDAB,即C->D可以推出来
所以p也是保持函数依赖的
如果只有两个元素,如:
R(A,B,C,D,E,F)
F{A->BC,CD->E,B->D,BE->F,EF->A}
求{ABCD}{EFA}:
F的闭包=F1+F2
F1={A,B,C,D}={A->B,A->C,B->D}
F2={E,F,A}={EF->A,A->E,A->F}
注:以上不仅包含直接依赖,还包含传递依赖,例如:
CD->E,E->A,尽管E没有包含在{A,B,C,D}中,但是可以推出CD->A,那么就应该加CD->A这一项
所以F的闭包={A->B,A->C,B->D,EF->A,A->E,A->F}
再看G的闭包,即{A->BC,CD->E,B->D,BE->F,EF->A}
判断F中的函数依赖能不能由G导出
A->B,A->C能由G中的A->BC导出
B->D,能由G导出
其余同理,如果F中所有函数依赖都能由G导出,那么就是具有函数依赖保持性!!!!
与判断无损连接相关,一起看看吧💖💖💖