数据库设计三范式: 1.什么是设计范式? 设计表的依据,按照这个三范式设计的表不会出现数据冗余 2.三范式都有哪些? 第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分 第二范式:建立在第一范式上,所有非主键字段完全依赖主键,不能产生部分依赖 多对多?三张表,关系表两个外键 t_student 学生表 sno(pk) sname --------------------------- 1 张三 2 李四 3 王五 t_teacher 讲师表 tno(pk) tname ---------------------------- 1 王老师 2 张老师 3 李老师 t_tudent_teacher_relation 学生讲师关系表 id(pk) sno(fk) tno(fk) ------------------------------------------ 1 1 3 2 1 1 3 2 2 4 2 3 5 3 1 6 3 3 第三范式:建立在第二范式基础之上,所有非主键字段直接依赖主键,不能产生传递依赖 一对多?两张表,多的表加外键 班级t_class cno(pk) cname ------------------- 1 a 2 b 3 c 学生t_student sno(pk) sname classno(fk) 101 张三 1 102 李四 1 103 王五 2 104 赵六 2 注: 实际开发中,以满足客户需求为主,有时候会拿冗余换执行速度 3.一对一怎么设计? 方案一:主键共享 t_user_login 用户登陆表 id(pk) username password ---------------------------------- 1 zs 123 2 li 456 t_user_detail 用户详细信息表 id(pk+fk) realname tel 1 张三 11111111 2 李四 22222222 方案二:外键唯一 t_user_login 用户登陆表 id(pk) username password ---------------------------------- 1 zs 123 2 li 456 t_user_detail 用户详细信息表 id(pk) realname tel userid(fk+unique) 1 张三 11111111 1 2 李四 22222222 2