首页 > 数据库技术 > 详细

数据库设计三范式

时间:2020-07-20 14:45:24      阅读:71      评论:0      收藏:0      [点我收藏+]

数据库设计三范式

什么是设计范式

? 设计表的依据。按照这个三范式设计的表不会出现数据冗余。

三范式都是哪些?

第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。
第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。
	多对多?三张表,关系表两个外键。
	t_student学生表
	sno(pk)		sname
	--------------------------
	1		张三
	2		李四
	3		王五
	
	t_teacher讲师表
	tno(pk)		tname
	---------------------------
	1	        王老师
	2		张老师
	3		李老师
	
	t_student_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 班级
	cn(pk)		cname
	--------------------------
	1		班级1
	2		班级2
	
	t_student 学生
	sno(pk)		sname		classno(fk)
	-----------------------------------------
	10001		王一		1
	10002		王二		1
	10003		王三		2
	10004		王四		2
	10005		王五		1
	10006		王六		2

提醒:在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。

一对一如何设计

一对一设计的两种方案:
t_user_login	用户登录表
id(pk)		username	password
--------------------------------------
1		zs		123
2		ls		456

第一种:主键共享
t_user_detail	用户详细信息表
id(pk+fk)	realname		tel		...
----------------------------------------------
1		张三			12345678
2		李四			85274174

第二种方案:外键唯一
t_user_detail	用户详细信息表
id(pk)	realname	tel		userid(fk+unique)	...
---------------------------------------------------------------------
1	张三		12345678	1	
2	李四	        85274174	2

数据库设计三范式

原文:https://www.cnblogs.com/xiaokw/p/13344443.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!