【问题标题】:Finding the strongest normal form and if it isn't in BCNF decompose it?找到最强的范式,如果它不在 BCNF 中分解它?
【发布时间】:2017-12-15 13:44:00
【问题描述】:

当输入是基本的时,我知道如何轻松解决这些问题。我知道第一、第二和第三范式以及 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 号让我很困惑!当 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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多