【问题标题】:Third normal form confused第三范式混淆
【发布时间】:2017-05-27 01:49:51
【问题描述】:

我有

R(ABCDE) 其中 AB 为主键 F= { f1: AB->CDE; f2: BD->E }

我很困惑,因为我的教科书说它达到了第 3 范式,但是当我通过在线工具检查时,它说由于 f2 违规,关系达到了第 2 范式。

哪个是对的?

【问题讨论】:

  • @Phrogz:使用R(ABCDE) 主题的变体来表示具有属性 A..E 的关系 R 是相当普遍的,而 F 显然是一组标记的函数依赖关系.依赖f1 重申AB 是主键。依赖f2 会导致各种问题。
  • 第三范式:钥匙,整个钥匙,只有钥匙……所以帮帮我 Codd。 (其实就是 BCNF,但两者关系密切——BCNF 比 3NF 更严格。)
  • 它不在 3NF 中,因为 f2 函数依赖。
  • 使用函数依赖的定义,2NF & 3NF,你的意见和理由是什么?
  • 教材的书名和版本是什么?

标签: database normalization database-normalization third-normal-form


【解决方案1】:

Codd 对 3NF 的定义包括表的每个非主属性都非传递地依赖于每个键的规定。

换句话说,由于 E 同时依赖于 (AB) 和 (BD) 而 C 仅依赖于 (AB),因此这是违反 3NF 的。

在线工具是对的。

要生成这个 3NF,您需要分解为两个关系:ABCD 和 BDE。然而,这带来了与参照完整性执行相关的问题。

【讨论】:

  • 你的理由没有道理。 “因为 E 同时依赖于 (AB) 和 (BD) 但 C 仅依赖于 (AB)”与“包括表的每个非主属性都非传递依赖于每个键的规定没有明确的联系”。期望读者意识到 AB 是唯一的 CK 并且 E 是非素数并不是那么糟糕,但是你没有说 E 对 AB 的传递依赖,而 C 是无关紧要的。并且您将 every 用斜体表示,就好像关系有多个 CK,但事实并非如此。
猜你喜欢
  • 2014-03-27
  • 2013-12-13
  • 1970-01-01
  • 2021-11-21
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2012-11-12
相关资源
最近更新 更多