为什么不使用所有正常形式?

时间:2015-12-25 23:52:37

标签: database

大多数情况下,如果你看到互联网只讨论第3或第4种正常形式,如果你看到有多达7种正常形式,那么为什么他们不会在互联网上讨论它们你几乎找不到任何与它们相关的例子无论是在YouTube上还是在任何其他地方。

1 个答案:

答案 0 :(得分:1)

主要是1.无益于利益和2. DBMS限制的组合。

人们可以归咎于无知的限制 - 设计师和他们的无知。实施者,但可能主要是用户,导致没有市场,导致限制。无知不仅包括规范化的好处,还包括完整性约束。

所有基表都可以标准化为5NF。但是,这可能无法保留所有功能依赖性。保留的约束由关键约束强制执行(某些列集是UNIQUE NOT NULL),而非保留的约束依赖约束(两个列集中的子行集总是相等)。

DBMS限制问题是5NF完整性所必需的声明性约束通常不可用,因此人们不会规范化那么远。但即便如此,如果他们只想使用通常可用的声明性约束(PK,UNIQUE NOT NULL,FK& CHECK)那么他们应该规范化为5NF然后有意识地反规范化,代价是多个表更新事务要处理随之而来的更新异常。

PS普通形式只是在有用属性中找到的不同条件。也有不同的公理和算法。从1NF到6NF的连续体上的正常形式是处理有问题的FD(功能依赖性)和JD(连接依赖性)的那些形式。可以对它们进行排序,以便如果关系值或变量满足形式,则它满足之前但不一定之后的形式。目前:1NF,2NF,3NF,EKNF,BCNF,4NF,ETNF,RFNF又名KCNF,SKNF,5NF又称PJ / NF,过强PJ / NF,6NF。