您好,欢迎访问一九零五行业门户网

最小函数依赖集怎么求

推荐教程:常见问题
假设:关系模式r(u,f)中,u=abcdeg,f={b->d,dg->c,bd->e,ag->b,adg->bc}
求f的最小函数依赖集
步骤:
① 用分解的法则,使f中的任何一个函数依赖的右部仅含有一个属性;
②  去掉多余的函数依赖:从第一个函数依赖x→y开始将其从f中去掉,然后在剩下的函数依赖中求x的闭包x+,看x+是否包含y,若是,则去掉x→y;否则不能去掉,依次做下去。直到找不到冗余的函数依赖;
③去掉各依赖左部多余的属性。一个一个地检查函数依赖左部非单个属性的依赖。例如xy→a,若要判y为多余的,则以x→a代替xy→a是否等价?若a属于(x)+,则y是多余属性,可以去掉。
解:
(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)
①假设d->c冗余,d+ =d不包含c,所以g不能去掉。
②假设g->c冗余,g+ =g不包含c,所以d不能去掉。
③假设b->e冗余,b+ =bd不包含e,所以d不能去掉。
④假设d->e冗余,d+ =d不包含e,所以b不能去掉。
⑤假设a->b冗余,a+ =a不包含b,所以g不能去掉。
⑥假设g->b冗余,g+ =g不包含b,所以a不能去掉。
所以,fm={b->d,dg->c,bd->e,ag->b}
以上就是最小函数依赖集怎么求的详细内容。
其它类似信息

推荐信息