分解后的关系能否与原关系一致?BCNF转换问题咨询
BCNF分解问题解答
首先明确BCNF的核心判定标准:一个关系模式属于BCNF,当且仅当每个非平凡函数依赖的左部都是该关系的超键。
先分析原关系R(A,C,D)是否满足BCNF:
- 对于函数依赖
AC→D:AC是主键,属于超键,符合BCNF要求; - 对于函数依赖
D→C:计算D的闭包D⁺={D,C},无法推导出属性A,因此D不是超键——这直接违反了BCNF规则,也就是说原关系R本身并不满足BCNF。
BCNF分解的硬性要求是:所有分解后的组件关系必须都满足BCNF。你提到的分解结果里包含了原关系R(A,C,D),但它本身不符合BCNF,所以这种分解是不合法的。
正确的BCNF分解应该针对违反规则的D→C进行拆分:
- 拆分出R₁(D,C):主键为D,函数依赖
D→C满足BCNF; - 拆分出R₂(A,D):主键为AD(因为A无法单独决定D,D也无法单独决定A),该关系不存在非平凡函数依赖,自然满足BCNF。
综上,BCNF分解的组件关系不能与原关系一致,因为原关系本身不满足BCNF,不符合分解后组件必须全部满足BCNF的要求。
内容的提问来源于stack exchange,提问作者Erbol Kulantaev
相关产品推荐
相关产品推荐

