算法: 无损分解且保持依赖地分解成3NF模式集
- 对于关系模式R和R上成立的FD集F,先求出F的最小依赖集,然后再把最小依赖集中那些左部相同的FD用合并性合并起来。
- 对最小依赖集中,每个FD X→Y去构成一个模式XY。
- 在构成的模式集中,如果每个模式都不包含R的候选键,那么把候选键作为一个模式放入模式集中。
这样得到的模式集是关系模式R的一个分解,并且这个分解既是无损分解,又能保持FD。
例:设关系R(ABCDE),R的最小依赖集为{A → B,C → D}。从依赖集可知R的候选健为ACE。
解: 先根据最小依赖集,可知ρ ={AB,CD}。然后再加入由候选健组成的模式ACE。
因此最后结果ρ ={AB,CD,ACE}是一个3NF模式集,且R相对于该依赖集是无损分解且保持函数依赖。
算法 : 无损分解成BCNF模式集
对于关系模式R的分解ρ(初始时ρ={R}),如果ρ中有一个关系模式Ri相对于πRi(F)不是BCNF。据前面的定义可知,Ri中存在一个非平凡FD X→Y,有X不包含超键。
此时把Ri分解成XY和Ri-Y两个模