11 数据库的设计三范式
一、什么数据库范式
- 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
- 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
- 满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般来说,数据库只需满足第三范式(3NF)就行了。
二、第一范式(1NF):
- 任何一张表都应该有主键,并且每一个字段原子性不可再分。即每个字段的数据不能的集合、数组等。
三、第二范式(2NF)
-
建立在第一范式基础上,所有非主键字段完全依赖主键,
不能产生部份依赖
。 -
解决
多对多
问题- 三张表,关系表加外键
t_student学生表
sno(pk) sname 1 张三 2 李四 3 王五 t_teacher教师表
tno(pk) tname 1 张老师 2 李老师 3 王老师 t_student_teacher_relation学生教师关系
id(pk) sno(fk) tno(fk) 1 1 3 2 1 2 3 2 1 4 2 3 5 3 1 6 3 2 - 三张表,关系表加外键
四、第三范式(3NF)
-
建立在第二范式的基础上,所有非主键字段直接依赖主键,不能产生传递依赖。
-
解决
一对多
问题- 两张表,多的表加外键
t_class班级表
cno(pk) cname 101 一班 102 二班 103 三班 t_student学生表
sno(pk) sname cno(fk) 1001 张三 101 1002 李四 101 1003 王五 102
五、注意
在实际开发中,为了满足客户的要求,有时候会拿冗余换执行速度。