• 求最小函数依赖集


    如果函数依赖集F满足下列条件,则称F为一个最小函数依赖集,或称极小函数依赖集。

    (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}。

  • 相关阅读:
    实验10 指针2。
    作业5 指针应用1。
    实验9 指针1。
    作业4 函数应用。
    实验8 数组2。
    实验7 综合练习。
    实验6 数组1。
    实验5 函数。
    作业3 应用分支与循环结构解决问题。
    作业2 分支、循环结构。
  • 原文地址:https://www.cnblogs.com/jingchi/p/16071038.html
Copyright © 2020-2023  润新知