• 三范式


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

      

  • 相关阅读:
    索引查找Java实现
    经典算法之折半查找
    进制转换问题
    排序算法总结之希尔排序
    自己写的栈
    排序问题Java
    画柱状图Java
    一些值得看的性能优化的文章
    理解 BFC
    canvas
  • 原文地址:https://www.cnblogs.com/-slz-2/p/15433283.html
Copyright © 2020-2023  润新知