数据库设计三范式:
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