- 第一范式,在建表的过程中,抽取的所有的列属性,保证其列属性原子性,是将现实业务抽取能力的一种体现。如果将人建立一张表,则鼻子是一个属性,耳朵是一个属性,不可以将耳朵和鼻子当做一个属性。
人: 满足第一范式
人ID | 鼻子 | 耳朵 | 脸 |
|
|
|
|
|
|
人: 不满足第一范式
人ID | 鼻子耳朵 | 脸 |
|
|
|
|
|
|
|
2. 第二范式,在一张表中,每一行数据中所有字段都必须依赖主键字段,不能出现局部依赖。第二范式是为了解决了表的原子性。如果一张表中出现了局部依赖,则就必须考虑将表拆成多张表。
比如建立了一张人狗表:
人狗:不满足第二范式。出现了局部依赖,狗鼻子依赖狗ID。
人ID | 人鼻子 | 人脸 | 狗ID | 狗鼻子 |
|
|
|
|
|
下面是满足第二范式的。
人表
人ID | 人鼻子 | 人脸 |
|
|
|
狗表
狗ID | 狗鼻子 | 狗脸 |
|
|
|
|
|
3. 第三范式,是在第二范式满足的情况下(出现了多张表),解决了表与表之间关联性的问题。表与表之间关联,只关联其他表的主键,而不能关联其他表非主键的其他字段。
比如上面如果人表和狗表关联,则人表只关联其狗表的主键(狗ID),而不能关联其其他字段。
满足第三范式:
人ID | 人鼻子 | 人脸 | 狗ID |
|
|
|
|
不满足第三范式:
人ID | 人鼻子 | 人脸 | 狗ID | 狗鼻子 |
|
|
|
|
|
总结:
满足了第一范式,证明了你建立了一张合格的关系型表。(有抽取属性的能力)
满足了第二范式,证明了你建立多个合格的关系型表。(有抽取表的能力)
满足了第三范式:证明了你有能力将有关系的表合格的关联了起来。(有关联表的能力)