第一范式(1NF)
确保每个列中的数据是不可再分的。即,每个列只能包含一个值,而不是一个列表或数组。
每个列有多个数据的要拆成多个表。
错误:
正确:
第二范式 (2NF)
在第一范式的基础上,非主键字段必须完全依赖于主键。如果一个表中的非主键字段只依赖于主键的一部分,则需要将该字段拆分到另一个表中。 不存在部分依赖。
错误:
订单日期由订单ID、客户ID和产品ID联合主键共同决定,
而客户名称只依赖于客户ID不依赖于订单ID和产品ID,(部分依赖)
而产品名称只依赖于产品ID不依赖于订单ID和客户ID,(部分依赖)
所以要拆分写。
正确:
第三范式(3NF)
在第一二范式的基础上,非主键字段不能依赖于其他非主键字段。如果某个非主键字段依赖于另一个非主键字段,则需要将该字段拆分到另一个表中。不存在传递依赖。
错误:
姓名由员工ID和部门ID 联合主键共同决定,
部门名称依赖于部门ID,不依赖于员工ID,(部分依赖)
经理姓名依赖于经理ID,经理ID又依赖于部门ID,(传递依赖)
所以要拆分写。
正确:
总结
第一范式(1NF):确保每个字段都是原子的,不可再分。
第二范式(2NF):满足1NF,并且消除部分依赖。
第三范式(3NF):满足2NF,并且消除传递依赖。