模式 R = (A,B,C,D,E)
功能依赖 F1 = {A->BC , CD->E, B->D, E->A}
功能依赖 F2 = {A->D, A->E, DE->BC, B->A, D->C}
根据F1,候选键-A、E、BC、CD
根据F2,候选键-A、B、DE
模式在 3NF 中的条件:
对于所有 X->Y,以下至少一项为真:
1. X 是超键
2. X->Y 是平凡的(即 Y 属于 X)
3. YX 中的每个属性都包含在一个候选键中
我知道根据 F1,R 在 3NF 中,但根据 F2,R 不在 3NF 中。
根据 F2,R 不在 3NF 中,因为在功能依赖 D->C 中,
1. D 不是超键
2. D->C 不是平凡的
3. 作为 C 的 CD 不包含在任何候选键中。
所以根据 F2,R 不在 3NF 中。
现在如何将其转换为 3NF?
我尝试了以下方法:将
R 分解为 (A,B,D,E) (C,D) (B,C,D,E) 以同时保留依赖关系。
这是正确的,还有其他分解方法吗?