我对这种形式的正常化很陌生。我以前曾使用过 4NF,但目前 5NF 似乎很混乱,我想知道是否有任何规则说明何时适合应用这种结构,或者我是否必须开始思考和使用它从现在开始。
PS:我读过它并且我有点理解;我只是想知道是否存在什么情况下最好使用它,如果是的话,什么时候使用它。
这或多或少是一个主观话题。但我的主观看法是,5NF 实际上更多的是一个理论概念,而不是一个实际概念。我开发数据库已经有 20 多年了,但从未达到这个程度,也从未想过达到这个程度。
实际上,这意味着您的数据库已经处于 4NF 状态,无法在不丢失数据的情况下进一步分解。
何时使用第五范式(5NF)?
仅在采访中,而非现实中。那太极端了。即使在面试过程中你被要求解释数据库规范化,你也不会被期望直到第五个。前 3 个,您将被选中。 :)
创建三路或更多路连接时,您应该规范化为 5NF,因为 5NF 确保您不会在多值连接依赖项之间产生依赖关系,否则在这种情况下可能会出现这种情况。
当规范化到 5NF 时,尤其是重新开始时,可以更容易地从 6NF 及其琐碎的联接依赖性开始,本质上意味着每个表最多有一个非键属性的列式存储(表 1 = 表 1.1 的视图/联接, 1.2、1.x 等),然后从具有相同简单(一个属性)自然键或代理键的 6NF 表创建 5NF 表。
简单的键,因为 Fagin 和 C. J. Date 在 “保证关系数据库中更高范式的简单条件”,第 14 页中的证明。第469章 (取自另一个Stackoverflow答案):