【问题标题】:When to use the fifth normal form (5NF)?何时使用第五范式(5NF)?
【发布时间】:2016-06-06 14:52:38
【问题描述】:

我是这种标准化形式的新手。我以前使用过 4NF,但目前 5NF 看起来很混乱,我想知道是否有任何规则说明何时应用这种结构是合适的,或者我是否必须开始思考和使用它从现在开始。

PS:我已经读过它并且我有点理解它;我只是想知道在某些情况下使用它是否更好,如果是,何时使用。

【问题讨论】:

  • 现实生活中至少有90%的时间,你会发现如果你达到了BCNF,你也处于5NF。只要有可能,你应该达到 5NF;它会让你的生活更轻松(更新异常更少)。
  • 在工作量上,使用这个 5NF 有多难?
  • IIRC、Date 和 Fagin 证明了“BCNF 加上所有简单的键 => 5NF”和“BCNF 加上任何简单的键 => 4NF”。简单键是单列键。因此,对于许多表,BCNF 也意味着 5NF。当这些规则不带您进入 5NF 时,我会绝对确定 BCNF(“密钥,整个密钥,只有密钥,所以请帮帮我 Codd”)并且大多数情况下不要太担心。如果看起来很麻烦,可能是设计不对。至于完全理解 5NF——它有点棘手;我不确定我是否完全理解。
  • 我刚刚开始使用它,目前看起来很复杂,但我希望尽快掌握它。感谢您的回答。 @JonathanLeffler Leffler

标签: sql sql-server database-normalization


【解决方案1】:

这或多或少是一个主观的话题。但我的主观意见是,5NF 实际上更多的是一个理论概念,而不是一个实际概念。我已经开发数据库 20 多年了,但从未达到过这种程度,也从未想过这样做。

实际上,这意味着您的数据库已经处于 4NF 状态,并且无法在不丢失数据的情况下进一步分解。

【讨论】:

  • 谢谢@Randy 我希望我是团队的一员,该团队声明我们应该使用 5NF,但目前我必须处理它。现在我知道我必须尽可能避免这种 5NF。
【解决方案2】:

什么时候使用第五范式(5NF)?

仅在采访中,而不是在现实中。这太极端了。即使在面试中你被要求解释数据库规范化,你真的不会到第 5 名。前3名,您将被选中。 :)

【讨论】:

  • 这似乎是一个有用的理论知识。感谢您的回答。
  • 是的。因为和这里的其他人一样,我也没有想到或看到有人这样做。你才刚刚开始,最终你会意识到,这只是理论上的好处。 :) 我宁愿专注于掌握前 3 种形式。
  • 选择BCNF,它比3NF强。
猜你喜欢
  • 1970-01-01
  • 2014-05-22
  • 2012-03-08
  • 2015-04-14
  • 2011-03-25
  • 2015-04-28
  • 1970-01-01
  • 2015-04-22
  • 2011-09-02
相关资源
最近更新 更多