BCNF规范化咨询:部分候选键及主键场景合规性判断
BCNF相关问题解答
核心规则回顾
BCNF的判定标准是:对于关系模式中的任意非平凡函数依赖X→Y,X必须是该关系的候选键。注意这里的X是否符合要求,只看它在当前关系模式中的角色,和它是不是其他关系的候选键的一部分无关。
练习1解答
关系模式R(B,D)的BCNF判定
在R(B,D)中,候选键是{B}(因为B可以决定D,且没有其他属性能单独或组合决定所有属性)。函数依赖B→D中,B是当前关系的候选键,完全符合BCNF的要求,因此R(B,D)是符合BCNF的,不需要调整为R(B,C,D)。
关于R(A,B,D)、R(A,D)、R(B,C,D)的判定
- R(A,B,D):候选键是
{A}(A是原全局候选键,可决定所有属性)。存在函数依赖B→D,其中B不是该关系的候选键,因此R(A,B,D)不符合BCNF。 - R(A,D):候选键是
{A},唯一的非平凡函数依赖是A→D,A是候选键,符合BCNF。 - R(B,C,D):候选键是
{B,C},存在函数依赖B→D,其中B只是候选键的一部分,不是完整的候选键,因此该函数依赖违反BCNF规则,R(B,C,D)不符合BCNF。你之前的这个判断是错误的。
练习2解答
关系模式R(B(PK),D)中,主键B本质上就是该关系的候选键(因为R的候选键只有{B})。函数依赖B→D中,B是候选键,完全满足BCNF要求,因此R(B(PK),D)符合BCNF。主键的设定只是从候选键中选一个作为主键,不影响BCNF的判定结果。
内容的提问来源于stack exchange,提问作者Lechius
相关产品推荐
相关产品推荐

