希赛考试网
首页 > 软考 > 软件设计师

3nf范式分解例题

希赛网 2024-07-03 10:12:02

在数据库设计中,范式是用来规范化关系模式的常用方法。3NF范式是对于2NF进一步的优化,通过对数据表进一步拆分,避免数据冗余和不合理的依存关系。本文将以一个例题为基础,从多个角度对3NF范式分解进行分析。

假设有如下的关系模式:

书籍编号 书籍名称 作者编号 作者姓名 作者联系方式 出版社 出版年份 出版社地址

001 《数据结构与算法》 1001 张三 135xxxxxxxx 国防工业出版社 2019 年 北京市海淀区

002 《操作系统》 1002 李四 158xxxxxxxx 人民邮电出版社 2020 年 北京市海淀区

003 《计算机网络》 1003 王五 136xxxxxxxx 机械工业出版社 2018 年 北京市海淀区

004 《数据库原理》 1004 刘六 137xxxxxxxx 电子工业出版社 2019 年 北京市海淀区

其中,书籍名称与作者姓名的依赖关系为多对多,作者联系方式与作者姓名的依赖关系为一对多,出版社地址与出版社的依赖关系为一对多。

1. 第一步:确定主键

在进行范式分解之前,需要确定主键。从表中可以看出,书籍编号和作者编号为唯一标识。因此可以确定关系模式的主键为(书籍编号,作者编号)。

2. 第二步:消除冗余数据

由于作者姓名和联系方式只和作者编号有关,与书籍编号无关,故需要将其从书籍名称表中分离出来,得到以下两个新的关系模式:

1. 作者信息 (作者编号,作者姓名,作者联系方式)

2. 书籍信息 (书籍编号,书籍名称,作者编号,出版社,出版年份,出版社地址)

此时,每个关系模式中不存在数据冗余,因为所有重复的数据都被分离到了新的表中。

3. 第三步:消除传递依赖

在上面的新关系模式中,可以看出出版社地址与出版社名称关系非常密切,因此需要将出版社地址从书籍信息表中分离出来,得到如下两个新的关系模式:

1. 出版社信息 (出版社,出版社地址)

2. 书籍信息 (书籍编号,书籍名称,作者编号,出版社,出版年份)

在这里,每个关系模式中不再有传递依赖关系,因此可以看出这些关系模式是符合3NF范式的。

软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件