数据库设计三范式
什么是设计范式?
- 设计表的依据,根据这个三范式规则设计的表,不会出现数据冗余
第一范式
- 任何一张表都要有主键,每个字段具有原子性,不可再分
第二范式
- 在以上范式基础上
- 所有非主键字段完全依赖主键,不要产生部分依赖
第三范式
- 以上范式基础上
- 所有非主键字段必须直接依赖主键,不能产生传递依赖
注意
- 实际开发,以满足客户的需求为主,有时候会拿冗余换执行速度
多对多怎么设计?
方案:三张表,关系表里两外键
t_student 学生表
sno(pk) sname
___________________________________
1 zs
2 ls
3 wu
t_teacher 讲师表
tno(pk) tname
____________________________________
1 t_wang
2 t_zhang
3 t_li
t_student_teacher_relation 学生讲师关系表
id(pk) sno(fk) tno(fk)
_______________________________________
1 1 1
2 1 2
3 2 2
4 2 3
一对多怎么设计?
方案:两张表,多的表加外键
t_class 班级表
cno(pk) cname
____________________________________
1 class_1
2 class_2
t_student 学生表
sno(pk) sname cno(fk)
_____________________________________
1 zs 1
2 ls 1
3 wu 2
4 zl 2
一对一怎么设计?
方案一:主键共享
t_user_login 用户登陆表
id(pk) username password
___________________________________
1 zs 123
2 ls 456
t_user_detail 用户详细信息表
id(pk + fk) realname tel ....
__________________________________________
1 wangxun xxx
2 han yyy
方案二:外键唯一(一对多的变形)
t_user_login 用户登陆表
id(pk) username password
___________________________________
1 zs 123
2 ls 456
t_user_detail 用户详细信息表
id(pk) realname tel userid(fk + unique) ....
______________________________________________________
1 wangxun xxx 1
2 han yyy 2
相关文章
暂无评论...