判断关系模式R是否满足BCNF?若不满足,给出分解并判断依赖保持性
关系模式R的BCNF判断与分解
一、候选键确认
关系模式( R=(A,B,C,D,E) ),函数依赖集( F={BCE→D, BDE→C, ABE→D, AB→C} )。
验证可得ABE是唯一候选键:
- 由( ABE→D )和( AB→C ),可推导出( ABE→A,B,C,D,E ),覆盖所有属性;
- 无法找到ABE的真子集能决定全部属性,因此ABE是最小的候选键。
二、BCNF合规性判断
BCNF的核心要求:对于每个非平凡函数依赖( X→Y ),X必须是超键。逐一检查函数依赖:
- ( ABE→D ):ABE是候选键(超键),符合BCNF要求;
- ( AB→C ):AB不是超键(无法推导出E),违反BCNF;
- ( BCE→D ):BCE不是超键(无法推导出A),违反BCNF;
- ( BDE→C ):BDE不是超键(无法推导出A),违反BCNF。
结论:R不符合BCNF。
三、BCNF分解方案
采用BCNF分解算法,步骤如下:
- 选取违反BCNF的函数依赖( AB→C ),将R分解为两个子关系:
- ( R_1=(A,B,C) ):函数依赖为( AB→C ),AB是( R_1 )的候选键,符合BCNF;
- ( R_2=(A,B,D,E) ):函数依赖为( ABE→D ),ABE是( R_2 )的候选键,符合BCNF。
最终分解结果:( {R_1(A,B,C), R_2(A,B,D,E)} )。
四、依赖保持性判断
检查原函数依赖集F是否能通过分解后的子关系依赖推导得出:
- ( AB→C ):存在于( R_1 )中,可保持;
- ( ABE→D ):存在于( R_2 )中,可保持;
- ( BCE→D ):BCE分散在( R_1 )(B,C)和( R_2 )(B,E)中,无法通过子关系的依赖推导出该依赖;
- ( BDE→C ):BDE在( R_2 )中,C在( R_1 )中,同样无法通过子关系的依赖推导出该依赖。
结论:该分解不保持函数依赖。
内容的提问来源于stack exchange,提问作者hoshey574
相关产品推荐
相关产品推荐

