java面试题网

普通会员

183

帖子

7

回复

89

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5101| 回复: 0

数据库设计的第三范式及三大范式总结

数据库设计的第三范式及三大范式总结

建立在第二范式基础上的,非主键字段不能传递依赖于主键字段。(不要产生传递依赖)

学生编号(PK)

学生姓名

班级编号

班级名称

1001

张三

01

一年一班

1002

李四

02

一年二班

1003

王五

03

一年三班

1004

03

一年三班

从上表可以看出,班级名称字段存在冗余,因为班级名称字段没有直接依赖于主键,班级名称字段依赖于班级编号,班级编号依赖于学生编号,那么这就是传递依赖,解决的办法是将冗余字段单独拿出来建立表,如:

学生信息表

学生编号(PK)

学生姓名

班级编号(FK)

1001

张三

01

1002

李四

02

1003

王五

03

1004

03

班级信息表

班级编号(PK)

班级名称

01

一年一班

02

一年二班

03

一年三班

以上设计是一种典型的一对多的设计,一存储在一张表中,多存储在一张表中,在多的那张表中添加外键指向一的一方的主键

三范式总结

第一范式:有主键,具有原子性,字段不可分割

第二范式:完全依赖,没有部分依赖

第三范式:没有传递依赖

数据库设计尽量遵循三范式,但是还是根据实际情况进行取舍,有时可能会拿冗余换速度,最终用目的要满足客户需求。

一对一设计,有两种设计方案:

第一种设计方案:主键共享

第二种设计方案:外键唯一


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1081_1_1.html

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018