数据库系统概论——最小依赖集

数据库系统概论——最小依赖集

1.求F={A->B,B->A,B->C,A->C,C->A}的最小依赖集(从左到右的顺序)

(1)在F中找到右部为不止一个属性的函数依赖,将其取代为
//例:A->BC应该被取代为A->B,A->C
由于F中无右部为不止一个属性的函数依赖,
F={A->B,B->A,B->C,A->C,C->A}

(2)
①选取函数依赖A->B,令G=F-{A->B}={B->A,B->C,A->C,C->A}
求AG+
X(0)=A i=0
在G中找到左部为X(0)的子集的函数依赖:A->C
X(1)=X(0)∪C=AC X(0)≠X(1)
在G中找到左部为X(1)的子集的函数依赖:A->C,C->A
X(2)=X(1)∪AC=AC X(1)=X(2)
故AG+=AC
而B不属于AC,故A->B保留
F={A->B,B->A,B->C,A->C,C->A}

②选取函数依赖B->A,令G=F-{B->A}={A->B,B->C,A->C,C->A}
求BG+
X(0)=B i=0
在G中找到左部为X(0)的子集的函数依赖:B->C
X(1)=X(0)∪C=BC X(0)≠X(1)
在G中找到左部为X(1)的子集的函数依赖:B->C,C->A
X(2)=X(1)∪AC=ABC X(2)=U
故BG+=ABC
A属于ABC,故B->A舍弃
F={A->B,B->C,A->C,C->A}

③选取函数依赖B->C,令G=F-{B->C}={A->B,A->C,C->A}
求BG+
X(0)=B i=0
在G中找到左部为X(0)的子集的函数依赖:无
X(1)=X(0)∪∅=B X(0)=X(1)
故BG+=B
C不属于B,故B->C保留
F={A->B,B->C,A->C,C->A}

④选取函数依赖A->C,令G=F-{A->C}={A->B,B->C,C->A}
求AG+
X(0)=A i=0
在G中找到左部为X(0)的子集的函数依赖:A->B
X(1)=X(0)∪B=AB X(0) ≠X(1)
在G中找到左部为X(1)的子集的函数依赖:A->B,B->C
X(2)=X(1)∪BC=ABC X(2)=U
故AG+=ABC
C属于ABC,故A->C舍弃
F={A->B,B->C,C->A}

⑤选取函数依赖C->A,令G=F-{C->A}={A->B,B->C}
求CG+
X(0)=C i=0
在G中找到左部为X(0)的子集的函数依赖:无
X(1)=X(0)∪∅=C X(0) =X(1)
故CG+=C
A不属于C,故C->A保留
F={A->B,B->C,C->A}

(3)
F中无左部为不止一个属性的函数依赖,这一步无需考察

得F的一个最小依赖集Fm={A->B,B->C,C->A}

2.求F={A->BC,ABD->CE,E->D}的最小依赖集(从左到右的顺序)

(1)
在F中找到右部为不止一个属性的函数依赖A->BC,将其取代为A->B,A->C
ABD->CE将其取代为ABD->C,ABD->E
F={A->B,A->C,ABD->C,ABD->E,E->D}

(2)
①选取函数依赖A->B,令G=F-{A->B}={ A->C,ABD->C,ABD->E,E-D}
求AG+
X(0)=A i=0
在G中找到左部为X(0)的子集的函数依赖:A->C
X(1)=X(0)∪C=AC X(0)≠X(1)
在G中找到左部为X(1)的子集的函数依赖:A->C
X(2)=X(1)∪C=AC X(1)=X(2)
故AG+=AC
而B不属于AC,故A->B保留
F={ A->B,A->C,ABD->C,ABD->E,E->D }

②选取函数依赖A->C,令G=F-{A->C}={ A->B, ABD->C,ABD->E,E->D }
求AG+
X(0)=A i=0
在G中找到左部为X(0)的子集的函数依赖:A->B
X(1)=X(0)∪B=AB X(0)≠X(1)
在G中找到左部为X(1)的子集的函数依赖:A->B
X(2)=X(1)∪B=AB X(2)= X(1)
故AG+=AB
C不属于AB,故A->C保留
F={ A->B,A->C,ABD->C,ABD->E,E->D }

③选取函数依赖ABD->C,令G=F-{ ABD->C }={ A->B,A->C,ABD->E,E->D}
求BG+
X(0)=ABD i=0
在G中找到左部为X(0)的子集的函数依赖:A->B,A->C,ABD->E
X(1)=X(0)∪BCE=ABCDE X(1)=U
故BG+=ABCDE
C属于ABCDE,故ABD->C丢弃
F={ A->B,A->C, ABD->E,E->D}

④选取函数依赖ABD->E,令G=F-{ ABD->E }={ A->B,A->C,E->D }
求ABDG+
X(0)=ABD i=0
在G中找到左部为X(0)的子集的函数依赖:A->B,A->C
X(1)=X(0)∪BC=ABCD X(0) ≠X(1)
在G中找到左部为X(1)的子集的函数依赖:A->B,A->C
X(2)=X(1)∪BC=ABCD X(2)= X(1)
故ABDG+=ABCD
E属于ABCD,故ABD->E保留
F={ A->B,A->C, ABD->E,E->D }

⑤选取函数依赖E->D,令G=F-{ E->D }={ A->B,A->C, ABD->E }
求EG+
X(0)=E i=0
在G中找到左部为X(0)的子集的函数依赖:无
X(1)=X(0)∪∅=E X(0) =X(1)
故EG+=E
D不属于E,故E->D保留
F={ A->B,A->C, ABD->E,E->D }

(3)
F中无左部为不止一个属性的函数依赖ABD->E,
①选取A
求BDF+
X(0)=BD i=0
在F中找到左部为X(0)的子集的函数依赖:无
X(1)=X(0)∪∅=BD X(0) =X(1)
故BDF+=BD
E不属于BD
F={ A->B,A->C, ABD->E,E->D }

②选取B
求ADF+
X(0)=AD i=0
在F中找到左部为X(0)的子集的函数依赖:A->B,A->C
X(1)=X(0)∪BC=ABCD X(0)≠X(1)
在F中找到左部为X(1)的子集的函数依赖:A->B,A->C, ABD->E
X(2)=X(1)∪BCE=ABCDE X(2)=U
故ADF+= ABCDE
E属于ABCDE,故可以用AD取代ABD,从而用AD->E取代ABD->E
F={ A->B,A->C, AD->E,E->D }

③选取D
求AF+
X(0)=A i=0
在F中找到左部为X(0)的子集的函数依赖:A->B,A->C
X(1)=X(0)∪BC=ABC X(0)≠X(1)
在F中找到左部为X(1)的子集的函数依赖:A->B,A->C
X(2)=X(1)∪BC=ABC X(2)= X(1)
故AF+= ABC
E不属于ABC
F={ A->B,A->C, AD->E,E->D }

得F的一个最小依赖集Fm={ A->B,A->C, AD->E,E->D}

3.参考文献

[1]王珊,萨师煊.数据库系统概论(第五版)[M].北京:高等教育出版社,2014.

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值