三范式

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

  

posted @ 2021-10-21 14:23  石乐智先生  阅读(80)  评论(0编辑  收藏  举报