数据库设计三范式
什么是设计范式?
- 设计表的依据,根据这个三范式规则设计的表,不会出现数据冗余
 
第一范式
- 任何一张表都要有主键,每个字段具有原子性,不可再分
 
第二范式
- 在以上范式基础上
 - 所有非主键字段完全依赖主键,不要产生部分依赖
 
第三范式
- 以上范式基础上
 - 所有非主键字段必须直接依赖主键,不能产生传递依赖
 
注意
- 实际开发,以满足客户的需求为主,有时候会拿冗余换执行速度
 
多对多怎么设计?
方案:三张表,关系表里两外键
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
                                    相关文章
暂无评论...
