@[toc]
三范式作用
按照三范式设计的表不会出现数据冗余!!
实际开发以顾客需求为主,有时会用冗余换速度,打破设计三范式!
第一范式
任何一张表都应该有主键,并且每一个字段原子性不可再分!
第二范式
建立在第一范式基础之上!所有非主键字段完全依赖主键,不能产生部分依赖!
举例:
学生表stu 教师表tea 关系表stu_tea 联合主键:sno-tno
sno sname tno tname sno tno sname tname
-------------- -------------- 1 1 张三 王老师
1 张三 1 王老师 1 3 张三 李老师
2 李四 2 张老师 违反第二范式,sname部份依赖于sno
3 王五 3 李老师 tname部份依赖于tno
没有完全依赖主键
正确方案,处理多对多:多对多,三张表,关系表里俩外键!
关系表stu_tea
id(pk) sno tno
1 1 1
2 1 3
第三范式
建立在第二范式基础之上!所有非主键字段直接依赖主键,不能产生传递依赖!
举例:班级名称依赖于班级编号,产生冗余!
解决方案:拆分表! 一对多,两张表,多的表加外键!
学生表-班级编号为外键!
班级表
一对一
主外键共享!