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

问题描述 投票:1回答:1

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

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

  1. R2(A,B,F)AC→E,B→F
  2. 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时,我们是否忽略了这种功能依赖?

relational-database database-normalization functional-dependencies decomposition bcnf
1个回答
1
投票

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

因此,假设在原始关系中唯一指定的依赖关系是AC → EB → F,这意味着依赖关系AC → E在分解关系R2(A,B,F)中丢失,关系的(唯一)候选关键字是AB,模式不在2NF (因为F依赖于密钥的一部分),并且要在BCNF中分解该模式,您必须在(AB)(BF)中对其进行分解。

© www.soinside.com 2019 - 2024. All rights reserved.