关系型数据库设计流程(全网最全---没有之一)
目录
关系型数据库设计流程(全网最全---没有之一)
1、前言
2、关系型数据库设计总体流程
3、关系型数据库设计的局部流程
3.1 需求简介
3.2 需求描述
3.3 概念设计
3.4 逻辑设计
3.5 (数据库)物理设计
1、前言
对于一位专注于软件开发的工程师而言,优秀的数据库设计无疑会使得整个软件开发更加高效、更加稳定、性能也更加出色;同时也是软件工程师向软件架构师转型的必备技能。今天博主已一个小白的身份来大致介绍数据库设计的整个流程及要点。(话说这方面的主题博客似乎很少)
2、关系型数据库设计总体流程
从总体来看数据库的设计流程分为以下几个大步骤:
- 需求简介: 主要针对需求分析,从客户的需求中提取有用的信息。
- 需求描述: 进一步细化需求,转化为客户能理解的模式,便于进一步沟通获取遗漏的客户需求。
- 概念设计: 将最终的需求转化为ER图。
- 逻辑设计: 利用ER图得到关系模式。
- (数据库)物理设计: 通过关系模式最终设计得到目标关系型数据库。
3、关系型数据库设计的局部流程
3.1 需求简介
- 需求分析: 通过与客户联系沟通等交流方式获取客户较为详细需求(当然越详细越好)。
- 系统功能结构图:利用获取到的需求,设计出系统大致功能的结构图。例如:
- 业务流程图:从系统实际业务角度设计出业务流程图。例如:
3.2 需求描述
设计工具Power Designer
***DFD(Data Flow Diagram)流图:通过系列符号及其组合来描述系统功能的输入、输出、处理或加工构造。
- 全局DFD流图:在具体的设计工具中往往也称为第0层或顶层数据流图,主要是从整体上描述系统的数据流,反映系统中数据的整体流向,是设计者针对用户和开发者表达出来的一个总体描述。例如:
- 局部DFD流图:对全局数据流图的某些局部单独放大,进一步细化,细化可以采用多级方式进行,便是所谓的分级数据流图来描述。例如:
****数据字典: 用来说明数据流图中出现的所有元素的详细的定义和描述,包括数据流、加工处理、数据存储、数据的起点和终点或外部实体等。具体步骤如下:
1. 数据流
表8. 1 P3中数据流的描述
序号 | 数据流名 | 来源 | 流向 | 组成 | 说明 |
1 | (学生)教学计划查询请求 | 需要选课的学生 | P3.1 | 班级号或学号 | 注意查询类别的区别 |
2 | 教学计划数据 | S2教学计划信息 | P3.1 | 班级号+课程编号+开课学年+开课学期 | |
3 | 学生课程选择数据 | P3.2 | S5学生选课信息 | 课程编号+年号+学期号 | |
4 | 选课信息查询 | 教务员 | P3.3 | 班级号+课程号+学年+学期 |
2. 数据存储
表8. 2 P3中数据存储的描述
序号 | 数据文件 | 文件组成 | 关键标识 | 组织 |
1 | S2教学计划信息 | 班级号+课程编号+开课学年+开课学期 | 全部 | 按开课学年,学期,班级降序 |
2 | S3学生选课信息 | 学号+课程编号+开课学年+开课学期 | 全部 | 按开课学年,学期,班级降序 |
3 | S5课程数据清单 | 课程编号+课程名称+课程说明 | 课程编号 | 课程编号排序 |
3. 处理过程逻辑
表8. 3 P3中处理过程逻辑的描述
序号 | 处理过程 | 编号 | 输入 | 输出 | 处理逻辑 |
1 | 查询教学计划 | P3.1 | 学生选课查询请求+教学计划数据 | 针对的教学计划 | 针对选课请求进行查询 |
2 | 选课信息录入 | P3.2 | 针对的教学计划 | 学生课程选择数据 | 根据学生对应的教学计划选择课程 |
3 | 选课信息查询 | P3.3 | 选课信息查询+选课数据 | 没经确认的选课 | 根据班级和课程号检查对应的未确认的选课清单清单 |
4 | 选课信息确认 | P3.4 | 选课审核+没经确认的选课 | 经确认的选课信息 | 选择选课清单进行确认 |
4.数据项
表8. 4 P3中数据项的说明
序号 | 数据项 | 数据对象说明 | 数据构成 |
1 | 学号 | 1{英文|数字}10 | 入学年号+班级序号+顺序号 |
2 | 选课时间 | 4{数字}-2{数字}-2{数字} | 年+月+日 |
3 | 课程名称 | 1{汉字|英文|数字}20 | |
4 | 班级号 | 1{英文|数字}6 | |
5 | 教师编号 | 1{英文|数字}10 | |
6 | 开课学年 | 4{数字} | |
7 | 开课学期 | {1|2} | |
8 | 课程说明 | 0{汉字|英文|数字}100 | |
英文=[‘a’…’z’|’A’…’Z’] | |||
数字=[‘0’…’9’] |
3.3 概念设计
设计工具Power Designer
*****E-R图(实体联系模型):关键是确定E-R图的各种结构,包括实体、属性和联系。
- 系统局部E-R图:确定实体之间局部的一对多、多对多、一对一关系。例如:
- 系统全局E-R图:解决局部E-R图的冲突,降低冗余。例如:
3.4 逻辑设计
E-R图到关系模式转换:获得关系模式(关系型DBMS产品支持的数据模型)。例如:
教师(教师编号,教师姓名,性别,职称,电话,系编号)
课程(课程编号,课程名称,课程学分,课时)
讲授(教师编号,课程编号,课程编号,开课年度,开课学期)
关系模式的规范及调整:这里要根据具体情况使用范式(一般3NF),但并不是范式越高越好,要结合具体情况具体对待。
数据表结构设计:设计出具体的数据表,附带上文档说明。
3.5 (数据库)物理设计
- 存储介质选择:如RAID(独立磁盘冗余阵列)。
- 建立数据库:根据数据库的特点创建,但是日志文件要有。
- 建表(视图):结合前面综合建表。
- 索引设计(优化):考虑性能,一般业务最频繁使用的表建立聚集索引,较为频繁的建立非聚集索引。
- 数据库服务器性能优化:贯穿整个设计流程,一般从网络流量、磁盘I/O、CPU时间考虑降低到最低,从服务器吞吐量考虑提高到最高;需要了解应用程序需求、数据的逻辑与物理结构。(内存、硬件等)