归一化
如果数据库设计不完美,它可能包含异常,这对任何数据库管理员来说都是一个噩梦。管理有异常的数据库几乎是不可能的。以下是异常的类型。
- 更新异常
- 删除异常
- 插入异常
更新异常:-
If data items are scattered and are not linked to each other properly,
那么它可能会导致奇怪的情况。例如,当我们尝试更新一个其副本分散在多个位置的数据项时,一些实例会正确更新,而其他一些实例则保留旧值。此类实例会使数据库处于不一致的状态。
删除异常:-
我们试图删除一条记录,但由于不知情,部分记录未删除,数据也保存在其他地方。
插入异常:-
我们试图在根本不存在的记录中插入数据。
规范化是一种消除所有这些异常并使数据库处于一致状态的方法。
第一范式
第一范式是在关系(表)本身的定义中定义的。此规则定义关系中的所有属性都必须具有原子域。原子域中的值是不可分割的单位。
第二范式
如果我们遵循第二范式,那么每个非主属性都应该在功能上完全依赖于主键属性。也就是说,如果 X → A 成立,则不应该存在 X 的任何真子集 Y,Y → A 也成立。
第三范式
对于处于第三范式的关系,它必须处于第二范式并且以下必须满足 -
* No non-prime attribute is transitively dependent on prime key attribute.
* For any non-trivial functional dependency, X → A, then either −
X is a superkey or,
A is prime attribute.