本篇主要涉及几种题型:求解属性关于函数依赖集F的闭包、判断候选码、求解最小函数依赖集、求解关系候选码,下面对这几种题型逐一讲解
一.求解属性关于函数依赖集F的闭包
这种题型比较简单,简单说就是从自身集合出发,该属性能够在F中直接或者间接推出什么,就把什么加进去,这样的集合就是所谓的函数闭包,也就是把该属性以及它能推出的所有属性包括进去
例:已知关系模式R(U,F),U={A,B,C,D,E},F={AB→C,B→D,C→E,BE→A},求CE的闭包
刚说过求某个属性的闭包,是从自身出发,也就是这个集合最开始已经有{B,C},下面只需要看这两个属性还能往下推出什么,只要能推出新属性,就把它加进去。根据F中函数依赖,B能推D,就把D加进去,C又可以推E,把E再加进去,而BE又可以推出A,把A也加进去,AB又可以推C,但C已经有了,发现现在能推的都推出来了,最终结果就是{B,C,D,E,A}
二.判断属性或属性组是否为关系候选码
这种题也比较简单,首先我们从候选码定义入手:候选码是能唯一标识某一个元组,而它的真子集不能,在函数依赖里的定义也是类似的,也就是能推出所有属性,但它的真子集不能
所以,思路很明确,即对于单属性,直接判断它能否推出全部属性就行了,也就是求该属性的闭包,看是否为全集;而对于属性组,还要再求它的真子集的闭包,看是否不是全集U,如果有真子集闭包为全集,说明这个属性组不是候选码,应是超码
例:U={A,B,C,D,E},F={AB→C,B→D,C→E,CE→B,AC→B},判断属性组AB是否为候选码
先求解AB的F闭包,根据上

1万+

被折叠的 条评论
为什么被折叠?



