1NF:数据库表的每一列都是不可分割的基本数据项。

分析:没有多个表示同一属性的列;某一列的值不能为集合。几不能将一对多关系表示为一个表的多个属性或者一个属性的多个值。

解决:创建新表,将“1”作为新表的外键。

举例:



person


id
name
hobby1
hobby1
bobby3
1
mark
playing football
running
swimming


person

id
name
hobbies
1
mark
playing football,running,awimming

2NF:符合1NF;存在主键,并且不存在部分函数依赖(不存在依赖主键的一部分的列)

分析:存在组合键的情况下,某些列只依赖于组合主键的其中一部分,则不合符2NF。

解决:将涉及部分函数依赖的列移出旧表,保存在新表。或使用人工主键代替组合键。

举例:


employee

department
name
managerOfDepartment
开发部门
mark
Jenny

3NF:符合2NF;并且不存在传递依赖。

分析:同一个表中A列依赖B列,B列依赖C列。

解决:将涉及传递函数依赖的列移出旧表,保存在新表。

举例:


customer

name
phone
address
zipCode
mark
1273283
广州×××
510000