【问题标题】:Is this in 2NF?这是2NF吗?
【发布时间】:2018-01-27 07:57:07
【问题描述】:

我正在研究一些问题,发现这种关系 R(A, B, C, D, E) 与 FD {A -> B, B -> A, B -> E, AC -> D}。 我计算了一下,发现它在 3NF 中。

但是我遇到的问题文件的解决方案关键说它是在 1NF 中。根据它,B -> E 是部分依赖,所以 R 不能在 2NF 中。谁能给我解释一下这背后的逻辑?

【问题讨论】:

  • 请谷歌“stackexchange 作业”。展示你的作品。否则,您要求我们复制您的教科书以证明答案的合理性。 PS 2NF 中的表也在 1NF 中,3NF 中的一张表也在 2NF 中。你真的只想知道它是否在 2NF 中,还是你想问,最高的 NF 是什么(在选择中)?
  • 假设你的 FD 集是一个封面(你大概是指但没有说): B->E 不是部分的。 BC->E 是部分的,因为它 & B->E 持有 & B 都是 BC 的适当/较小的子集。
  • 您的“我有这些 FD”没有意义。 “这些都是持有的FD”?--不可能。 “这些都是持有的不平凡的FD”?--不可能。 “这些是一些持有的FD”?--问题无法回答。找出什么是cover以及应用特定定义/规则/算法的确切条件。要确定 CK 和 NF,我们必须得到构成掩护的 FD。有时是最小/不可约覆盖。并且必须给出所有属性的集合。 See this answer.

标签: database database-normalization functional-dependencies


【解决方案1】:

如果任何非主(即不属于候选键)属性在功能上完全依赖于候选键,则关系处于 2NF。

此定义意味着,如果可以导出依赖关系 X → A,其中 A 不是主要属性,而 X 是候选键的真子集,则这种依赖关系违反 2NF。

这是你的例子的情况:候选键是ACBC,所以DE是非主属性;依赖B → E 有一个行列式,它不是候选键,而只是键的一个子集,所以关系不在 2NF 中。

最后请注意,2NF 仅具有历史意义,并且在许多书籍中都讨论了规范化过程(并提供了正式算法)仅针对 BCNF、3NF 和更高的范式。

【讨论】:

    猜你喜欢
    • 2020-02-21
    • 2012-05-22
    • 1970-01-01
    • 2013-05-11
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    相关资源
    最近更新 更多