关系模型的属性闭包和最小函数依赖

     函数依赖:    

     平凡函数依赖:X->Y,且YËX

     非平凡依赖:X->Y,且YÍX

     完全函数依赖:x->Y,且没有任何一个X的子集X'能够满足X'->Y

     部分函数依赖:X->Y,存在X的子集X'能够满足X'->Y

     传递函数依赖:X->Y,Y->Z,YËX且Y无法决定X

     关系模型的属性闭包    

     假设{A1,A2,A3...An}是一个属性集合,S是一个函数依赖集合,S集合下的属性集合闭包是集合B,它使每个满足S中所有函数依赖关系,也同时满足A1,A2,...,An->B。也就是说,A1,A2,...,An->B是从S中的函数依赖中推到出来的。{A1,A2,A3...An}的闭包为:{A1,A2,A3...An}+

    求属性集合闭包的过程如下:

    1.假设X为结果属性集,首先将X初始化为{A1,A2,A3...An}。     

    2. 在函数依赖集合中,查找B1,B2,...,Bn->C,其中B1,B2,...,Bn在X中,而C不在X中,则将C加入X中。

    3. 反复进行上一步骤,直到不再有新的属性加入X。

    4.此时的结果集合就是:{A1,A2,A3...An}+

   例如,给出模式R(U,F),U={A,B,C,D,E},F={B->A,D->A,A->E,AC->B,D->C},求属性集AD的闭包。

解答:设V={A,D}。求的是:{A,D}+。在函数依赖集中,首先在V中找关系:A->E,D->C,将C,E加入得V1={A,C,D,E}

在V1中找关系,AC->B,则得到V2=={A,B,C,D,E}。

所以,W={A,D}+  ={A,B,C,D,E}。

 

关系模型的最小函数依赖:

简单讲就是:一个函数依赖集F的最小函数依赖集G就是它的一个等价函数集。

求法:

1.F中的每个函数依赖,都分解为右边只有单一属性的与F等价的函数依赖集G。

2.G中的每个函数依赖,检查它的左边属性是否必须,如不必须就删除,并保持与F的闭包等价。

3.G中的每个函数依赖,检查它是否必需,如不必需就删除,并保持与F的闭包等价。

 《软件设计师冲刺指南》111页

 

posted on 2009-03-27 11:34  王建一  阅读(3109)  评论(2)    收藏  举报

导航