【例1】关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集。
第一步:将F中所有函数依赖的右边化为单一属性。得到F1={A→B,A→C,ABD→C,ABD→E,E→D}。
第二步:将第一步得到的F1去除其中的冗余依赖关系。假设A→B是冗余依赖关系,去除后F1'={A→C,ABD→C,ABD→E,E→D},我们求A对F'的闭包(算法详见闭包算法)得,A(F1')+ =AC,不包含B,所以A→B不是冗余依赖关系,不能删除。依次判断F1中的所有函数依赖,去除冗余依赖关系。就得出F2={A→B,A→C,ABD→E,E→D}。
第三步:对第二步所得F2去除其冗余属性。我们只关注函数依赖关系左边为多个的情况(一个必不可能为冗余属性),即观察ABD→E是否包含冗余属性。观察F2发现A→B,所以ABD中B是冗余属性可以删除,得到AD→E,最终得到了F的最小依赖关系F3={A→B,A→C,AD→E,E→D},也可以合并为F3={A→BC,AD→E,E→D}。