一、等价与覆盖 定义:关系模式 R〈U,F〉上得两个依赖集 F 与 G,假如F+=G+,则称 F 与G就是等价得,记做F≡G
若 F≡G,则称G就是F得一个覆盖,反之亦然
两个等价得函数依赖集在表达能力上就是完全相同得
ﻭ 二、最小函数依赖集 定义:假如函数依赖集 F 满足下列条件,则称 F 为最小函数依赖集或最小覆盖
① F 中得任何一个函数依赖得右部仅含有一个属性; ② F 中不存在这样一个函数依赖 X→A,使得 F 与 F—{X→A}等价; ③ F中不存在这样一个函数依赖 X→A,X有真子集 Z 使得F—{X→A}∪{Z→A}与 F 等价
算法:计算最小函数依赖集
输入 一个函数依赖集 输出 F 得一个等价得最小函数依赖集 G ﻭ 步骤:① 用分解得法则,使 F 中得任何一个函数依赖得右部仅含有一个属性; ② 去掉多余得函数依赖:从第一个函数依赖 X→Y 开始将其从 F 中去掉,然后在剩下得函数依赖中求 X 得闭包 X+,瞧 X+就是否包含Y,若就是,则去掉X→Y;否则不能去掉,依次做下去
直到找不到冗余得函数依赖; ③ 去掉各依赖左部多余得属性
一个一个地检查函数依赖左部非单个属性得依赖
例如 XY→A,若要判 Y 为多余得,则以 X→A 代替XY→A就是否等价
若 A(X)+,则 Y 就是多余属性,可以去掉
举例:已知关系模式 R<U,F〉,U={A,B,C,D,E,G}, F={A B→C,D→E G,C→A,BE→C,BC→D,C G→BD,A CD→B,C E→A G},求 F 得最小函数依赖集
解 1:利用算法求解,使得其满足三个条件 ① 利用分解规则,将所有得函数依赖变成右边都就是单个属性得函数依赖,得F为: F={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,C G→D,A CD→B,C E→A,C E→G} ② 去掉F中