【发布时间】:2017-12-15 13:44:00
【问题描述】:
当输入是基本的时,我知道如何轻松解决这些问题。我知道第一、第二和第三范式以及 BCNF 的规则。然而,我正在查看一些练习,发现一些不寻常的输入:
考虑以下关系和依赖关系的集合。 假设每个关系都是通过分解得到的 与属性 ABCDEFGHI 的关系以及所有已知的 每个问题都列出了对关系 ABCDEFGHI 的依赖关系。 (显然,这些问题是相互独立的,因为给定的对 ABCDEFGHI 的依赖是不同的。)
- R2(A,B,F) AC → E, B → F
- R1(A,C,B,D,E) A → B, C → D
我可以解决2:
A+=AB
C+=CD
AC+=ABCD
ACE=ABCDE
所以 ACE 是候选键,A、C 和 E 都不是超级键。肯定不是 bcnf 。分解得到(ACE)(AB)(CD)等。
但是 1 号让我很困惑!当 C 和 E 都不在 R2 中时,为什么有 AC → E?这怎么可能解决?这不可能是错误,因为许多其他练习都是这样的:/
另一个问题,当一个函数依赖在 BCNF 中而其他函数依赖不在时会发生什么?我们是否在将其他函数依赖分解为 BCNF 时忽略了这个函数依赖?
【问题讨论】:
-
FD 不能“在”NF。一个关系是否在给定的 NF 中,并且在某些理解的 NF 集合中处于最高 NF 中,具体取决于其中包含的 FD。当所有关系都在 NF 中时,设计或关系集是否在 NF 中。你想说什么?也许一些关于,给定一些 FD 和一个 NF 的定义,根据定义,FD 可能会或可能不会“违反”该 NF?
标签: relational-database database-normalization functional-dependencies decomposition bcnf