我们可以借用数据库中的有关技术来梳理数据间的关系。
Overview
数据规范化是指使用多张相关联的表格来组织数据以减少数据冗余的一种技术。
数据冗余,顾名思义,指数据的重复出现。它会带来以下问题:
- 占用更多的数据存储空间
- 数据插入问题:每插入新的记录,都要重复存储一次已有的数据
- 数据删除问题:删除数据时,会把相关联的其他数据也一并删除
- 数据更新问题:需同步更新所有重复的数据,否则会出现数据不一致
Normalization
1st Normal Form
最基础的数据库表格要求,即,所有的数据必须至少是1st Normal Form。
规则:
- Each Column should contain atomic values. 每列只能包含单一值。
- A Column should contain values that are of the same type. 列中只能包含相同类型的值。
- Each Column should have a unique name. 每列的名称必须唯一。
- Order in which data is saved doesn't matter. 数据的存储顺序是任意的。
- Rows uniquely identified. 每行数据均不同。
2nd Normal Form
规则:
- It should be in 1st Normal Form. 必须已经处于1st Normal Form。
- All attributes(Non-Key Columns) dependent on the key. 所有非键列依赖于键。
- It should not have any Partial Dependencies. 不应有任何部分依赖。
Dependency(Functional Dependency):
非主键值可以通过主键来唯一确定。
Partial Dependency:
非主键值只依赖于主键的一部分。
3rd Normal Form
规则:
- It should be in 2nd Normal Form. 必须处于2nd Normal Form。
- It should not have Transitive Dependency. 不应有依赖传递。
Transitive Dependency:
非主键值依赖于主键之外(非主键)的列。
Boyce-Codd Normal Form(3.5 Normal Form or BCNF)
规则:
- It should be in 3rd Normal Form. 必须处于3rd Normal Form。
- For any dependency A->B, A should be a super key. 对于任何依赖关系A->B,A应该是super key。即不存在主键B依赖于非主键A的情况。
4th Normal Form
规则:
- It should be in BCNF. 必须处于BCNF。
- No multi-valued Dependecy.
参考视频:
Database Normalization Series by Studytonight
Normalization - 1NF,2NF,3NF & 4NF by channel5567
网友评论