如果一个表存在数据冗余并且没有正确规范化,那么数据库将难以处理和更新,而不会面临数据丢失的问题。它还会占用额外的内存空间,如果数据库未规范化,插入、更新和删除异常将非常频繁。
规范化是从一个关系或一组关系中最小化冗余的过程。相关冗余可能导致插入、删除和更新异常。因此,它有助于最大限度地减少关系中的冗余。范式用于消除或减少数据库表中的冗余。
有各种级别的归一化。这些是其中一些:
1. First Normal Form (1NF)
2. Second Normal Form (2NF)
3. Third Normal Form (3NF)
4. Boyce-Codd Normal Form (BCNF)
5. Forth Normal Form (4NF)
6. Fifth Normal Form (5NF)
在本文中,我们将讨论第一范式(1NF)。
第一范式(1NF):
如果关系包含复合或多值属性,则违反第一范式,或者如果关系不包含任何复合或多值属性,则为第一范式。如果该关系中的每个属性都是单值属性,则该关系处于第一范式。
一个表是 1 NF iff:
- 只有单值属性。
- 属性域不改变。
- 每个属性/列都有一个唯一的名称。
- 数据存储的顺序无关紧要。
考虑下面给出的例子。
示例 1:
由于多值属性 STUD_PHONE,表 1 中的关系 STUDENT 不在 1NF 中。其分解为 1NF 如表 2 所示。
示例 2:
ID Name Courses
------------------
1 A c1, c2
2 E c3
3 M C2, c3
在上表中,Course 是一个多值属性,因此它不在 1NF 中。
下表在 1NF 中,因为没有多值属性:
ID Name Course
------------------
1 A c1
1 A c2
2 E c3
3 M c1
3 M c3
注意:如果数据库设计甚至不符合第一范式 (1NF),则它被认为是糟糕的。
https://youtu.be/-JOpBzyrZ_8