# 一、软件工程
# 二、数据库设计步骤

# 需求分析
输入:用户需求
输出:数据字典、数据流图、需求文档
数据字典:
- 数据项:数据项是数据的最小组成单位,是不可再分的数据单位,若干个数据项可以组成一个数据结构。可以认为是对表的字段的描述。
数据项描述 = {数据项名,数据项含义说明,别名, 数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系k, 数据项之间的联系 }
数据项: 学号 含义说明:唯一标识每个学生 别名: 学生编号 类型: 字符型 长度: 9 取值范围:0000 00 000至9999 99 999 取值含义:前4位标别该学生入学年份,第5第6位所在专业系编号,后3位按顺序编号,例如202015008 与其他数据项的逻辑关系:学号的值确定了其他数据项的值1
2
3
4
5
6
7
8- 数据结构:数据结构反映了数据之间的组合关系。可以认为是对表(类)的描述。
数据结构描述 = {数据结构名,含义说明,组成: {数据项或数据结构} }
数据结构:学生 含义说明:学籍管理子系统的主体数据结构,定义了一个学生的有关信息 组成: 学号,姓名,性别,年龄,所在系,年级1
2
3- 数据流:数据流是数据结构在系统内部传输的路径。
数据流描述 = { 数据流名,说明,数据流来源,数据流去向, 组成: {数据结构}, 平均流量,高峰期流量 }
- 数据流来源:说明该数据流来自哪个处理过程/数据存储
- 数据流去向:说明该数据流将到哪个处理过程/数据存储区
- 平均流量:在单位时间(每天、每周、每月等)里的传输次数
- 高峰期流量:在高峰时期的数据流量
数据流: 体检结果后的流程 说明: 学生参加体格检查的最终报告 数据流来源:体检(处理过程) 数据流去向:批准(处理过程) 组成: { 学号, {血常规},{尿常规},{血液生化},{心电图},{B超}, … … {其他体检} } 平均流量: 每天200 高峰期流量:每天4001
2
3
4
5
6
7- 数据存储:数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。可以由此确定数据表的量、读写频率、索引位置等。
数据存储描述 = {数据存储名,说明,编号,输入的数据流 ,输出的数据流, 组成: {数据结构}, 数据量, 存取频度, 存取方式}
- 存取频度:每小时、每天或每周存取次数,每次存取的数据量等信息
- 存取方法:批处理 / 联机处理;检索 / 更新;顺序检索 / 随机检索
- 输入的数据流:数据来源
- 输出的数据流:数据去向
数据存储: 学生登记表 说明: 记录学生的基本情况 流入数据流:每学期5000 流出数据流:每学期5000 组成: {学号,姓名,性别,年龄,所在系,年级,{学习成绩},{体检结果},{奖惩记录} … … } 数据量: 每年10000张 存取方式: 随机存取+按照专业系/班级打印1
2
3
4
5
6
7- 处理过程:具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息。此词条可以辅助开发过程的业务流程处理,可以认为是业务规则。
处理过程描述 = { 处理过程名, 说明, 输入:{数据流}, 输出:{数据流}, 处理:{简要说明} }
处理过程:分配宿舍 说明:为所有新生分配学生宿舍 输入:学生,宿舍 输出:宿舍安排 处理:在新生报到后,为所有新生分配学生宿舍。 要求同一间宿舍只能安排同一年级同一性别的学生。 一个学生只能安排在一个宿舍中。 每个学生的居住面积不小于6平方米。 安排新生宿舍其处理时间应不超过15分钟。1
2
3
4
5
6
7
8
9
# 三大范式
- 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
第一范式(确保每列保持原子性): 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式,如地址字段,可以拆分为省,市,详细地址三个字段,便于数据的获取及查询。
第二范式(确保表中的每列都和主键相关): 第二范式是在第一范式的基础上,确保数据表上的每一列都与主键相关,而不能只是主键(联合主键)的某一部分相关(主要针对于联合主键的表,通常是新增一个自增ID)。
第三范式(确保每列都和主键列直接相关,而不是间接相关) 第三范式是在第二范式的基础上,需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。