找到最强的正常形式,如果它不在BCNF中,它会分解吗?

时间:2017-12-15 13:44:01

标签: relational-database database-normalization functional-dependencies decomposition bcnf

我知道在输入是基本的时候如何轻松地解决这些问题。我知道第1,第2和第3范式以及BCNF的规则。然而,我正在通过一些练习练习,我看到了一些不寻常的输入:

  

考虑以下关系和依赖关系集合。   假设每个关系是通过从a分解获得的   与属性ABCDEFGHI的关系以及所有已知的   针对每个问题列出了关系ABCDEFGHI的依赖关系。   (显然,这些问题是相互独立的,因为ABCDEFGHI的给定依赖性是不同的。)

     
      
  1. R2(A,B,F)AC→E,B→F
  2.   
  3. R1(A,C,B,D,E)A→B,C→D
  4.   

我可以解决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时,我们是否忽略了这种功能依赖?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了练习的文本,那么依赖关系就是原始关系(ABCDEFGHI):“每个问题都列出了关于ABCDEFGHI关系的所有已知依赖关系”。

因此,假设在原始关系中,唯一指定的依赖项是AC → EB → F,这意味着依赖项AC → E在分解的关系R2(A,B,F)中丢失,关系的(唯一)候选键是AB,架构不在2NF(因为F取决于键的一部分),并且要在BCNF中分解该架构,你必须分解它位于(AB)(BF)