- GitHub: https://github.com/wsxq2/BusSecurityManagement
- Web前端: https://gj.wsxq2.xyz/ (用户名为:
admin
,密码为:658231
) - 实践部分: 数据库设计——实践
1 数据库设计的一般步骤
- 需求收集与分析
- 设计概念结构
- 设计逻辑结构
- 设计物理结构
- 数据库实施
- 数据库运行与维护
数据库设计各个阶段的数据设计描述如下:
数据库设计过程中的各级模式如下:
数据库设计的基本步骤如下:
2 需求分析
需求分析就是分析用户的要求。
2.1 分析内容
- 信息要求
- 处理要求
- 安全性与完整性要求
2.2 数据字典
数据字典是进行详细的数据收集和数据分析所获得的主要成果。它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。它在数据库系统设计中占有很重要的地位
数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。
- 数据项: 数据项是不可再分的数据单位。
1
数据项描述 = {'数据项名', '数据项含义说明', '别名', '数据类型', '长度', '取值范围', '取值含义', '与其它数据项的逻辑关系', '数据项之间的关系'}
- 数据结构: 数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。
1
数据结构描述 = {'数据结构名', '含义说明', '组成: {数据项或数据结构}'}
- 数据流: 数据流是数据结构在系统内的传输路径。
1
数据流描述 = {'数据流名', '说明', '数据流来源', '数据流动向', '组成: {数据结构}', '平均流量', '高峰期流量'}
- 数据存储: 数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。它可以是手工文档或手工凭单,也可以是计算机文档。
1
数据存储描述 = {'数据存储名', '说明', '编号输入的数据流', '输出的数据流', '组成:{数据结构}', '数据量', '存取频度', '存取方式'}
- 处理过程: 处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息即可。
1
处理过程描述 = {'处理过程名', '说明', '输入: {数据流}', '输出: {数据流}', '处理: {简要说明}',}
3 概念结构设计
将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计。其中概念模型是对信息世界建模,而概念模型的表示方法有很多,但最为常用的是E-R方法(Entity-Relationship approach)。该方法用E-R图(E-R diagram)来描述概念模型,也被称为E-R模型。
3.1 E-R模型
3.1.1 基本概念
- 实体(entity):客观存在并可相互区别的事物。
- 属性(attribute):实体所具有的某一特性。
- 码(key):唯一标识实体的属性集(即可以是多个属性)。
- 实体型(entity type):用实体名及其属性名集合来抽象和刻画的同类实体。
- 实体集(entity set):同一类型实体(即实体型)的集合。
-
联系(relationship):实体(型)内部的联系和实体(型)之间的联系。
实体内部的联系通常是指组成实体的不同属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。
- 单个实体型内部的联系
-
实体之间的联系 实体之间的联系主要有一对一、一对多和多对多三种类型。
-
一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系, 反之亦然, 则称实体集A与实体集B具有一对一联系,记为
1:1
。例如,学校里一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间具有一对一联系。
-
一对多联系(1:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个(也可以没有)实体与之联系,则称实体集A与实体集B有一对多联系,记为
1:n
。例如,一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多联系。
-
多对多联系(m:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m>=0)与之联系,则称实体集A与实体集B具有多对多联系,记为
m:n
。例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。
可以用图形来表示两个实体型之间的这三类联系:
一般地,两个以上的实体型之间也存在着一对一、一对多和多对多联系。如下图所示: 一般地,把参与联联系的实体型的数目称为联系的度。N个实体型之间的联系度为N,也称为N元联系。
-
3.1.2 E-R图
E-R图提供了表示实体型、属性、和联系的方法。
- 实体型用矩形表示,矩形框内写明实体名。
- 属性用椭圆形表示,并用无向边将其与相应的实体型连接起来。
- 联系用菱形表示,并用无向边将其与相应的实体型连接起来。 联系也可以有属性。如下图:
3.1.3 完整示例
下面用E-R图来表示某个工厂物资管理的概念模型:
3.2 设计技巧
3.2.1 实体与属性的划分原则
现实世界的事物能作为属性对待的尽量作为属性对待。但对属性有如下要求:
- 不能再具有需要描述的性质
- 不能与其他实体具有联系
4 逻辑结构设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。目前的数据库应用系统都采用支持关系数据模型的关系数据库管理系统,所以这里只介绍E-R图向关系数据模型的转换原则与方法。
4.1 E-R图向关系模型的转换
E-R图的三要素是实体型、实体的属性、实体型之间的联系;关系模型的逻辑结构是一组关系模式的集合。
- 实体型:一个实体型转换为一个关系模式。关系的属性就是实体的属性,关系的码就是实体的码。
- 实体型之间的联系:
- 一个
1:1
联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码;如果与某一端实体对应的关系模式合并,则需要在那一端关系模式的属性中加入另一端实体对应的关系模式的码和联系本身的属性。 - 一个
1:n
联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码;如果与n
端实体对应的关系模式合并,则需要在n
端关系模式的属性中加入1
端实体对应的关系模式的码和联系本身的属性。 - 一个
m:n
联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。 - 三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
- 具有相同码的关系模式可合并。
- 一个
5 物理结构设计
6 数据库实施
7 数据库运行与维护
参考资料
以下参考资料按使用程度排序:
- 《数据库系统概论(第五版)》,王珊 萨师煊 编著,高等教育出版社
- 与《数据库系统概论(第五版)》配套的数字课程资源