【问题标题】:Need assistance with 3NF decomposition需要帮助进行 3NF 分解
【发布时间】:2023-03-22 20:27:02
【问题描述】:

关系 R(A,B,C,D,E) 具有函数依赖关系 A -> B,C,D,E 和 BCD -> E

A 是一把钥匙。 但是,这种关系不在 3NF 中,因为 BCD -> E 是违规的,其中 E 不是素数属性,BCD 不是超键。所以如果我们分解关系,我们得到

R1(A,B,C,D) 和 R2(B,C,D,E) ?还是我在这个分解中不正确

【问题讨论】:

  • 但是如果 A 不是超键且 B 不是主要属性,那么功能依赖(例如 A -> B)是否违反了 3NF?而如果 A -> B 是非平凡的依赖项,则违反 BCNF,A 不是超键
  • 你的分解是正确的,分解产生的关系在 3NF 和 BCNF 中都有。
  • @CuriousPerson,A 是超级键,因为所有键都是超级键。

标签: database-design relational-database functional-dependencies third-normal-form


【解决方案1】:

您的分解是正确的,但从技术上讲,您最好引入第三个关系,因为从 DBA 的角度来看,复合主键不是一个好的做法。

R1(A [PK], X)
R2(X [PK], B, C, D)
R3(X [PK], E)

【讨论】:

  • 标准化到更高的 NF 不会引入新列。这不是标准化。
  • @philipxy 你在开玩笑吗? 1NF -> 2NF 是添加两列或多列而不是一列。
  • 你显然不知道“标准化”、“1NF”或“2NF”是什么意思。
  • @philipxy 所以请阅读我的书"Programming with databases" 以了解 NF 并避免以后的任何人身攻击
猜你喜欢
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多