软考
APP下载

如何区分第一范式第二范式第三范式

在关系型数据库的设计中,第一范式、第二范式、第三范式是其中最基本的技能之一。它们可以帮助设计者规划好数据库的结构,以确保数据出现的方式符合常规标准、条理清晰、易于管理。本文将从多个角度阐述如何区分这三种范式。

一、理解范式的概念

首先要理解“范式”的概念,范式是设计师在规划数据库时遵循的一组规则,确保它们能够处理数据的方式符合常规的标准。三种范式分别是:

第一范式(1NF):数据表中的所有列都是不可分割的原子值,每列都只包含一个原子值;

第二范式(2NF):在满足1NF的基础上,非主关键字不能依赖于局部主键,而是必须与主关键字整体相关;

第三范式(3NF):在满足2NF的基础上,非关键字属性之间不能互相依赖。

二、举例说明

了解概念后,我们来看几个例子。

1. 一个简单的学生信息表,包括学生ID、姓名、课程和成绩。其中学生ID是主关键字,而课程是非主关键字,并且依赖于学生ID。表格如下:

| 学生ID | 姓名 | 课程 | 成绩 |

| -------- | ------ | ------ | ------ |

| 123 | 张三 | 英语 | 85 |

| 123 | 张三 | 数学 | 90 |

| 456 | 李四 | 英语 | 80 |

这个表格符合第一范式,因为每一个单元格都是不可分的原子值,符合1NF规则。

2. 下面这个表格模拟了一个图书馆的借书记录表,包括借出日期、书名、作者和出版年份。其中借出日期和书名构成了一个联合主键。

| 借出日期 | 书名 | 作者 | 出版年份 |

| ------------ | -------------------- | ------ | -------- |

| 2021-03-01 | 《数据库设计基础》 | Tom | 2009 |

| 2021-03-01 | 《Java编程思想》 | Peter | 2015 |

| 2021-03-02 | 《Java编程思想》 | Peter | 2009 |

这个表格符合第二范式,因为非主关键字(例如作者和出版年份)与主关键字(例如借出日期和书名)整体相关,符合2NF的规定。

3. 最后,我们再看一个学生课程表,其中学生ID、课程ID、学期和成绩会被记录下来。其中学生ID和课程ID构成联合主键。

| 学生ID | 课程ID | 学期 | 成绩 |

| -------- | -------- | ------ | ------ |

| 123 | 001 | 2021春 | 85 |

| 123 | 002 | 2021春 | 90 |

| 456 | 001 | 2021春 | 80 |

这个表格符合第三范式,因为非关键字属性(例如成绩)之间不互相依赖,符合3NF的规定。

三、总结

总的来说,范式的目的是确保数据库的结构能够清晰、准确地存储数据。在数据库设计的:第一步,设计者必须要意识到范式的重要性,并尽量按照这个规则来设计数据结构。如果设计不佳,数据将会混乱,难以维护。

本文从理解范式的概念、举例说明、总结三个角度分析了如何区分第一范式、第二范式、第三范式,希望有助于读者更清晰和规范地设计数据库结构。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库