第一范式——关系型数据库设计的第一步
目前,只要是使用关系型数据库来设计数据库,都能够满足数据库设计的第一范式。第一范式(1NF,normal form)就是数据库表中的字段都是单一属性的,不可再分。这个单一属性可以是数据库中任何一种基本数据类型,如整型、字符型、日期等。
第二范式——关系型数据库设计的第二步
(2NF)在数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖。也就是说在复合主键(AB)里面的A或者B与其他字段不能存在组合重复。
解决第二范式问题的方法:通常不用组合主键,添加一个编号列,作为单一主键即可满足第二范式。
如果不想添加编号列,就要满足组合主键(AB)里面的A或者B与其他字段不能存在组合重复。
不满足第二范式会引起一下4个问题:
•
数据冗余
•
更新异常
•
插入异常
•
删除异常
第三范式——关系型数据库设计的第三步
3NF是在2NF基础上提出,要求数据表中不存在非关键字段对任一候选关键字段的传递函数依赖。所谓传递函数依赖,指的是如果存在A决定B、B决定C的决定关系,则C传递函数依赖关系于A。
解决不满足3NF的方式:
•
通常将存在依赖关系字段拆分开为多个表,以此解决字段的传递函数依赖。