什么是函数依赖集的最小覆盖?给出计算函数依赖集的最小覆盖的算法,并举例说明。(19.6.2节)

区块链毕设网qklbishe.com为您提供问题的解答

什么是函数依赖集的最小覆盖?给出计算函数依赖集的最小覆盖的算法,并举例说明。(19.6.2节)

函数依赖集的最小覆盖,称为最小函数依赖集,或极小函数依赖集。
最小函数依赖集Fm满足下列条件:
(1)F中的任一函数依赖的右部仅有一个属性,即无多余的属性。

(2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价,即无多余的属性。

(3)F中不存在这样的函数依赖X→A,X有真子集Z使得F与F-{X→A}∪{Z→A}等价,即去掉各函数依赖左边的多余属性,A对X为完全函数依赖。

 

最小函数依赖集步骤:
① 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;

② 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不能去掉,依次做下去。直到找不到冗余的函数依赖;

③去掉各依赖左部多余的属性。一个一个地检查函数依赖左部非单个属性的依赖。例如XY→A,若要判Y为多余的,则以X→A代替XY→A是否等价?若A属于(X)+,则Y是多余属性,可以去掉;

④若步骤③改变了函数依赖的左属性,重复②步骤一次。

 

【题1】关系模式R(U,F)中,U=ABCDEG,F={B->D,DG->C,BD->E,AG->B,ADG->BC},求F的最小函数依赖集。
解:
(1)分右

F={B->D,DG->C,BD->E,AG->B,ADG->B,ADG->C}
(2)去多余依赖
①若B->D冗余,则去掉B->D,得G={DG->C,BD->E,AG->B,ADG->B,ADG->C}   

B+ ={B}不包含D,所以不冗余,不能去掉。
②若DG->C冗余,则去掉DG->C,得G={B->D,BD->E,AG->B,ADG->B,ADG->C}

(DG)+ ={DG}不包含C,所以不冗余,不能去掉。
③若BD->E冗余,则去掉BD->E,得G={B->D,DG->C,AG->B,ADG->B,ADG->C}

(BD)+ ={BD}不包含E,所以不冗余,不能去掉。
④若AG->B冗余,则去掉AG->B,得G={B->D,DG->C,BD->E,ADG->B,ADG->C}

(AG)+ ={AG}不包含B,所以不冗余,不能去掉。
⑤若ADG->B冗余,则去掉ADG->B,得G={B->D,DG->C,BD->E,AG->B,ADG->C}

(ADG)+ ={ABCDEG}包含B,所以冗余,去掉。
⑥若ADG->C冗余,则去掉ADG->C,得G={B->D,DG->C,BD->E,AG->B}

(ADG)+ ={ABCDEG}包含C,所以冗余,去掉。
综上:F={B->D,DG->C,BD->E,AG->B}
(3)去左冗余
①看DG->C,若D->C冗余,D+ ={D}不包含C,所以G不能去掉。

②看DG->C,若G->C冗余,G+ ={G}不包含C,所以D不能去掉。

③看BD->E,若B->E冗余,B+ ={BD}不包含E,所以D不能去掉。

④看BD->E,若D->E冗余,D+ ={D}不包含E,所以B不能去掉。

⑤看AG->B,若A->B冗余,A+ ={A}不包含B,所以G不能去掉。

⑥看AG->B,若G->B冗余,G+ ={G}不包含B,所以A不能去掉。

左属性没有变动,所以F的最小函数依赖集为Fm={B->D,DG->C,BD->E,AG->B}。

28:05

以上就是关于问题什么是函数依赖集的最小覆盖?给出计算函数依赖集的最小覆盖的算法,并举例说明。(19.6.2节)的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 什么是函数依赖集的最小覆盖?给出计算函数依赖集的最小覆盖的算法,并举例说明。(19.6.2节)