数据库设计:讲解三范式和er图 (数据库三范式 e-r图)
数据库设计:讲解三范式和ER图
随着信息时代的发展,数据库设计已经成为了计算机科学中不可缺少的知识点。在面向对象的思想下,好的数据库设计可以提高系统的运行效率和数据的可靠性。三范式和ER图是数据库设计中关键的两个知识点,本文将对它们进行详细讲解。
一、三范式
三范式是将数据规范化的重要步骤,在数据库设计中影响巨大。三范式包括以下三个层次:
1. 之一范式(1NF)
之一范式是指任何的关系型数据库表中,每一列的值都是不可再分的原子值。
如下图所示,学生这张表并不满足之一范式:
| 学生编号 | 学生姓名 | 活动时间 |
| ———— | ———— | ———— |
| 001 | 小明 | 1,2,3 |
| 002 | 小红 | 2,3 |
在上面的表中,活动时间一列看似是一个属性,但实际上它涵盖了多个值。因此,要使其满足之一范式,需要拆分得到如下两张表:
学生表:
| 学生编号 | 学生姓名 |
| ———— | ———— |
| 001 | 小明 |
| 002 | 小红 |
活动表:
| 活动编号 | 学生编号 | 活动时间 |
| ———— | ———— | ———— |
| 001 | 001 | 1 |
| 002 | 001 | 2 |
| 003 | 001 | 3 |
| 004 | 002 | 2 |
| 005 | 002 | 3 |
这样就满足了之一范式的要求。
2. 第二范式(2NF)
第二范式是在之一范式的基础上建立的,要求每个表必须有一个主键,并且非主键列必须完全依赖于主键。
下图展示了一个不满足第二范式的表:
| 活动编号 | 学生编号 | 活动名称 | 成绩 |
| ———— | ———— | ———— | ———— |
| 001 | 002 | 语文 | 90 |
| 001 | 003 | 语文 | 80 |
| 001 | 002 | 英语 | 95 |
| 001 | 003 | 英语 | 85 |
在上面的表中,组合主键(活动编号、学生编号)并不包含非主键列(活动名称),因此无法满足第二范式的要求。需要拆分出两个表:
活动表:
| 活动编号 | 活动名称 |
| ———— | ———— |
| 001 | 语文 |
| 002 | 英语 |
成绩表:
| 活动编号 | 学生编号 | 成绩 |
| ———— | ———— | ———— |
| 001 | 002 | 90 |
| 001 | 003 | 80 |
| 002 | 002 | 95 |
| 002 | 003 | 85 |
这样就满足了第二范式的要求。
3. 第三范式(3NF)
第三范式是在第二范式的基础上建立的,要求非主键列之间不能相互依赖。
下面是一个不满足第三范式的表:
| 课程编号 | 教师编号 | 课程名称 | 教师姓名 | 教师职称 |
| ———— | ———— | ———— | ———— | ———— |
| 001 | 001 | 数据库 | 张三 | 讲师 |
| 001 | 002 | 数据库 | 李四 | 讲师 |
| 002 | 001 | 网络 | 张三 | 讲师 |
| 002 | 002 | 网络 | 李四 | 讲师 |
在上面的表中,教师姓名和教师职称都只和教师编号有关,因此需要拆分表:
课程表:
| 课程编号 | 课程名称 |
| ———— | ———— |
| 001 | 数据库 |
| 002 | 网络 |
教师表:
| 教师编号 | 教师姓名 | 教师职称 |
| ———— | ———— | ———— |
| 001 | 张三 | 讲师 |
| 002 | 李四 | 讲师 |
这样就满足了第三范式的要求。
二、ER图
ER图(Entity-Relationship Diagram)即实体-关系图,是用于描述各种实体之间关系的图形化工具。 ER图包括实体(Entity)、属性(Attribute)和关系(Relation)三个要素。
下图是一个示例ER图:
![ER](https://cdn.luogu.com.cn/upload/image_hosting/4oa10l4l.png)
在上图中,学生和课程是实体,学生编号、课程编号等都是它们对应的属性。学生和课程之间有选修关系,用一个菱形表示。课程表中包含了学生信息,因此课程表和学生表之间是联系关系。
在实际应用中,ER图可以帮助我们更好地了解各种实体之间的关系,从而设计出更合理的系统。此外,ER图的绘制还可以用于沟通、讨论,确保各方面所需的信息的完整性和准确性。
三、
三范式和ER图是数据库设计过程中不可或缺的两个环节。通过三范式的规范化设计,可以使数据更加规范和易于处理;而通过ER图的视觉化设计,可以更好地盘点实体间的关系,提高系统运行效率和数据的可靠性。因此,掌握三范式和ER图是进行数据库设计的必要条件,也是广大计算机从业人员应该掌握的基本技能。