我知道在输入是基本的时候如何轻松地解决这些问题。我知道第1,第2和第3范式以及BCNF的规则。然而,我正在通过一些练习练习,我看到了一些不寻常的输入:
考虑以下关系和依赖关系集合。 假设每个关系是通过从a分解获得的 与属性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号令我困惑!当R和E都不在R2中时,为什么AC→E?怎么能解决这个问题?这不是一个错误,因为许多其他练习都是这样的:/
另一个问题是,当一个功能依赖在BCNF中而另一个不在时,会发生什么?在将其他人分解为BCNF时,我们是否忽略了这种功能依赖?
答案 0 :(得分:1)
如果我正确理解了练习的文本,那么依赖关系就是原始关系(ABCDEFGHI):“每个问题都列出了关于ABCDEFGHI关系的所有已知依赖关系”。
因此,假设在原始关系中,唯一指定的依赖项是AC → E
和B → F
,这意味着依赖项AC → E
在分解的关系R2(A,B,F)
中丢失,关系的(唯一)候选键是AB
,架构不在2NF(因为F
取决于键的一部分),并且要在BCNF中分解该架构,你必须分解它位于(AB)
和(BF)
。