背景:已经开始了很长时间了,都没有写博客,就是因为某些数据类型把握不好,某些字段的名称命名不好,一直也在寻找画ER图的工具,其中用EA画的ER图总感觉不好看,用VISO也可以画,但是最终选择了一个特别小的软件,在画这些图的时候同时也思考了很多,现在就来看看我是如何设计数据库的。
首先来张图再说:
由上图可知数据库设计包括六个主要步骤:
1、需求分析:
了解用户的数据需求、处理需求、安全性及完整性要求;
需求分析阶段的工作步骤:
1.1 分析和表达用户需求:
首先把任何一个系统都抽象为:1.2 分析用户活动、产生业务流程图:
了解用户当前的业务活动和职能,理清其处理流程。把用户业务分成若干个子处理过程,使每个处理功能明确、界面清楚,画出业务流程图
1.3确定系统范围,产生系统范围图:
在和用户经过充分讨论的基础上,确定计算机所能进行数据处理的范围,确定哪些工作由人工完成,哪些工作由计算机系统完成,即确定人机界面。
1.4 分析用户活动所涉及的数据,产生数据流图:
深入分析用户的业务处理,以数据流图(Data Flow Diagram,DFD)形式表示出数据的流向和对数据所进行的加工。DFD有四个基本成分:数据流、加工或处理、文件、外部实体。DFD可以形象地表示数据流与各业务活动的关系,它是需求分析的工具和分析结果的描述手段。之前也写过相关的博客:软件工程之数据流图和数据字典
符号说明:
1.4 分析系统数据,产生数据字典:
仅仅有DFD并不能构成需求说明书,DFD只表示出系统有哪几部分组成和各个部分之间的关系,并没有说明各个成分的含义。数据字典提供对数据库时间描述的集中管理,它的功能是存储和检索各种数据描述(元数据Metadata),数据字典是数据收集和数据分析的主要成果,在数据库设计中占有很重要地位。
数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典(Data Dictionary,简称DD)来描述。
数据字典是各类数据描述的集合,它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分(至少应该包含每个字段的数据类型和在每个表内的主外键)。
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度, 取值范围,取值含义,与其他数据项的逻辑关系}
例子:
·含义说明:唯一标识每个学生
·别名: 学生编号
·类型: 字符型
·长度: 12
·取值范围:000000000000至999999999999
·取值含义:前两位表示所在年级,后四位标明那个学院,在后三位标明按个专业,最后三位是班级学号
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
例子:
·数据结构,:以“学生”为例学生”是该系统中的一个核心数据结构:
·数据结构: 学生
·含义说明: 定义了一个学生的有关信息
·组成: 学号,姓名,性别,年龄,所在学院,年级,系别
数据流描述={数据流名,说明,数据流来源,数据流去向, 组成:{数据结构},平均流量,高峰期流量}
例子:
·数据流: 学生余额
·说明: 查看学生卡中的余额
·数据流来源:管理员输入的卡号
·数据流去向:输出
·组成: 卡号
·平均流量: ……
·高峰期流量:
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,
组成:{数据结构},数据量,存取方式}
例子:
·数据存储: 学生结账表
·说明:记录结账的基本情况
·流入数据流:……
·流出数据流:……
·组成: ……
·数据量: 每天一次
·存取方式: 规定存取
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},
处理:{简要说明}}
例子:
·处理过程:学生查看余额
·说明: 查看学生卡中的余额
·输入: 卡号
·输出: 学生信息、卡信息、余额
·处理: 在输入卡号后,在数据库中查询是否有此卡号,是否注册,输出数据。
1.6功能分析:
数据库的设计是与应用系统的设计紧密结合的过程,离开一定的功能,数据库就失去其存在价值。数据库设计的一个重要特点是结构(数据)和行为(功能)的结合。用户希望系统能提供的功能必须有一个清晰的描述。功能分析可以采用软件结构图或模块图来表示系统的层次分解关系、模块调用关系。
需求分析到此就结束了,由于篇幅原因,就先写到这里,将在下一篇博客中介绍接下来的几个步骤。大家期待更新吧。。。。