数据库范式第一第二第三范式的例题讲解
网站编辑2023-05-18 12:46:56765
第一范式(1NF)是关系数据库设计中的基本概念,它要求每个属性都是原子性的,即不可再分解。也就是说,每个属性都应该是单一值,而不是一个集合、数组或其他复杂类型。

考虑一个学生信息表,其中包含学生的姓名、学号、所在班级、选修的课程和成绩等信息。如果我们将这些信息全部放在一个表中,那么就会出现以下问题:
- 学生可以选修多门课程,因此成绩这个属性会有多个值,无法满足第一范式的要求。
- 学生所在的班级也可能有多个,同样无法满足第一范式的要求。
为了满足第一范式的要求,我们需要将这个表拆分成多个表,每个表只包含一个实体的信息。例如,我们可以将学生信息和成绩信息分别存储在两个表中,如下所示:
**学生信息表**
| 学号 | 姓名 | 班级 |
| ---- | ---- | ---- |
| 001 | 张三 | 1班 |
| 002 | 李四 | 2班 |
| 003 | 王五 | 3班 |
**成绩信息表**
| 学号 | 课程 | 成绩 |
| ---- | ---- | ---- |
| 001 | 数学 | 90 |
| 001 | 英语 | 85 |
| 002 | 数学 | 95 |
| 002 | 英语 | 80 |
| 003 | 数学 | 85 |
| 003 | 英语 | 90 |
这样,每个表都满足第一范式的要求,每个属性都是原子性的。
第二范式(2NF)是在第一范式的基础上进一步规范化的要求。它要求每个非主键属性都完全依赖于主键,而不是依赖于主键的一部分。
考虑一个订单信息表,其中包含订单号、商品编号、商品名称、商品单价、商品数量等信息。如果我们将这些信息全部放在一个表中,那么就会出现以下问题:
- 商品名称、商品单价这些属性并不依赖于订单号,而是依赖于商品编号,因此无法满足第二范式的要求。
为了满足第二范式的要求,我们需要将这个表拆分成多个表,每个表只包含一个实体的信息。例如,我们可以将订单信息、商品信息和订单商品信息分别存储在三个表中,如下所示:
**订单信息表**
| 订单号 | 日期 | 客户编号 |
| ------ | ---------- | -------- |
| 001 | 2021-01-01 | 001 |
| 002 | 2021-01-02 | 002 |
| 003 | 2021-01-03 | 003 |
**商品信息表**
| 商品编号 | 商品名称 | 商品单价 |
| -------- | -------- | -------- |
| 001 | 商品A | 10 |
| 002 | 商品B | 20 |
| 003 | 商品C | 30 |
**订单商品信息表**
| 订单号 | 商品编号 | 商品数量 |
| ------ | -------- | -------- |
| 001 | 001 | 2 |
| 001 | 002 | 3 |
| 002 | 002 | 1 |
| 003 | 001 | 4 |
| 003 | 003 | 2 |
这样,每个表都满足第二范式的要求,每个非主键属性都完全依赖于主键。
第三范式(3NF)是在第二范式的基础上进一步规范化的要求。它要求每个非主键属性都不依赖于其他非主键属性。
考虑一个图书信息表,其中包含图书编号、图书名称、作者、出版社、出版日期、价格等信息。如果我们将这些信息全部放在一个表中,那么就会出现以下问题:
- 出版社、出版日期这些属性并不依赖于图书名称,而是依赖于图书编号,因此无法满足第三范式的要求。
为了满足第三范式的要求,我们需要将这个表拆分成多个表,每个表只包含一个实体的信息。例如,我们可以将图书信息、作者信息和出版社信息分别存储在三个表中,如下所示:
**图书信息表**
| 图书编号 | 图书名称 | 作者编号 | 价格 |
| -------- | -------- | -------- | ---- |
| 001 | 图书A | 001 | 20 |
| 002 | 图书B | 002 | 30 |
| 003 | 图书C | 003 | 40 |
**作者信息表**
| 作者编号 | 作者姓名 |
| -------- | -------- |
| 001 | 作者A |
| 002 | 作者B |
| 003 | 作者C |
**出版社信息表**
| 出版社编号 | 出版社名称 | 出版日期 |
| ---------- | ---------- | -------- |
| 001 | 出版社A | 2021-01 |
| 002 | 出版社B | 2021-02 |
| 003 | 出版社C | 2021-03 |
这样,每个表都满足第三范式的要求,每个非主键属性都不依赖于其他非主键属性。







