您好,我目前正在准备考试,考试将在 11 天后举行。我正在与 Carnonical Cover、Dependency Preservation 和 Lossless Decomposition 作斗争。从某种意义上说,我对正常形式和上述主题也有些模糊,每当我做练习时,我似乎都搞砸了。我的问题是这里的方法和想法是否正确:
R(ABCDEFG) 在进行规范覆盖后,提供了以下一组依赖项。我自己没有做规范封面,但任务说我必须假设它已经完成。
Fc:
A -> C
E -> A
C -> ABF
F -> CDG
A+ = ABCDFG
E+ = ABCDEFG
C+ = ABCDFG
F+ = ABCDFG
E = Candidate Key.
这个函数依赖列表在 2NF 中,因为没有部分依赖。然而,它不在 3NF 中,因为存在传递依赖。
但是分解成以下 4 个关系将导致它不仅在 3NF 中,而且在 BCNF 中
R1 = {E,A}
E -> A
R2 = {A, C}
A -> C
R3 = {CABF}
C -> ABF
R4 = {FCDG}
F -> CDG
我使用 R1 中的 A 作为 R2 的外键,使用 R2 中的 C 作为 R3 的外键等。
现在没有传递依赖,并且由于它们各自关系中的所有左侧都是候选键,因此它在 BCNF 中。
它不是也无损和保持依赖关系吗?