第 7章 数据库设计
? 成功的数据库设计是应用系统开发的基础。
? 数据库设计是一项非常复杂的工作,必须严
格按照工程化步骤实施。
? 数据库设计还需要丰富的经验。
? 数据库设计要求形成规范完整的文档资料。
? 本章主要介绍数据库设计的步骤以及每一步
骤的工作内容和方法。
第 7章 数据库设计
? 7.1 数据库设计概述
? 7.2 需求分析
? 7.3 概念结构设计
? 7.4 逻辑结构设计
? 7.5 数据库物理设计
? 7.6 数据库实施
? 7.7 数据库运行与维护
? 7.8 小结
? 7.9 练习
7.1 数据库设计概述
? 本节主要介绍数据库设计基本知识 。 包括:
? 7.1.1 数据库设计的重要性
? 7.1.2 数据库设计方法和核心
? 7.1.3 数据库系统规划阶段
? 7.1.4 数据库设计的步骤
? 7.1.5 数据库设计实例 (学生管理数据库结构 )
7.1.1 数据库设计的重要性
? 为什么要进行数据库设计?
? 数据库系统复杂,涉及的数据多;
? 成本高,失败率高;
? 系统的稳定性和质量要求;
? 过去的开发实践告诉我们。
7.1.2 数据库设计方法及核心
? 方法:数据库设计方法有多种, 一般规范设计
法, 分六步 。
? 核心:逻辑数据库设计和物理数据库设计 。
? 特点:数据库设计是一个反复的过程 ; 结构设
计与行为设计并行 。
? 难点, 科学性与艺术性, 综合性, 多学科交叉 。
7.1.3 系统规划阶段
? 数据库设计前要先进行系统规划 。
? 系统规划包括:确定系统范围, 系统开发的目
标功能和性能, 系统所需资源;估计开发成本,
确定实施计划和进度, 分析可能的效益;确定
系统设计的原则和技术路线;选择用户环境及
网络结构;确定参加数据库设计的人员 ( 分析
设计人员, 用户, 程序员和操作员, 测试员 ) 。
7.1.4 数据库设计六个步骤( 1)
? 1.需求分析,这一阶段要求充分而准确了解和
分析用户需求 ( 包括数据需求和处理需求 ) 。
这是整个设计过程的基础, 是最费时最困难的
一步 。
? 2.概念结构设计,是整个数据库设计的关键,
它通过对用户需求进行综合, 归纳与抽象, 形
成一个独立于具体 DBMS的概念模型 。
? 3.逻辑结构设计,将概念模型转换为某个 DBMS
支持的数据模型, 并对其进行优化 。
7.1.4 数据库设计六个步骤( 2)
? 4.数据库物理设计,为逻辑数据模型选取一个
最适合应用环境的物理结构 ( 包括存储结构
和存取方法 ) 。
? 5.数据库实施,根据逻辑设计和物理设计的结
果建立数据库, 编制和调应用程序, 组织数
据入库, 并进行试运行 。
? 6.数据库运行和维护,在运行过程中不断对数
据库系统进行评价, 调整和修改 。
7.2 第一步:需求分析
? 规划完成后, 由团队成员开始进行需求分析 。
? 需求分析是整个系统开发的基础 。 但烦琐费
时, 很多人往往不愿在此付出时间和精力,
为以后埋下失败的种子 。
? 需求分析一定要做充分细致, 否则不要进行
下一步 。
? 本节主要介绍需求分析的内容和方法, 以及
所要形成的几个重要的文档 。
7.2 第一步:需求分析
? 7.2.1 需求分析的任务
? 7.2.2 需求分析的步骤
? 7.2.3 需求分析流程图
? 7.2.4 调查和分析的方法
? 7.2.5 编写数据流图
? 7.2.6 编写数据字典
7.2.1 需求分析的任务
? 1.通过详细调查现实世界要处理的对象 ( 企业,
组织, 部门等 ), 充分了解原系统的工作情况,
明确用户各种需求, 然后在此基础上确定新系
统的功能 。
? 2.重点是调查, 收集与分析用户在数据管理中
的信息要求, 处理要求, 安全性要求, 与完整
性要求 。
7.2.2 需求分析的步骤
? 调查与初步分析用户需求需要四步:
? 1.调查组织机构总体情况
? 2.熟悉业务活动
? 3.明确用户需求
? 4.确定系统边界 。
7.2.3 需求分析流程图
调查组
织机构
总体情







明确
用户
需求
需求分析
用户
数据库设计
人员
DFD
概念
设计
DD
确定
系统
边界
7.2.4 调查和分析的方法
? 1.调查方法:跟班作业 。 开调查会 。 请专人介
绍 。 询问 。 设计调查表请用户填写 。 查阅历史
记录 。
? 2.分析方法:自顶向下分析和自底向上分析 。
? 3.需要形成的规范化文档:数据流图, 数据字

? 4.数据流图:用来描述业务的流程 。
? 5.数据字典:用来描述系统中的数据 。
? 6.复杂处理过程的处理逻辑常用判断表和判断
树来描述 。
7.2.5 数据流图一般画法
? 数据流:用标有名字的箭头表示有流向的数据 。
? 数据处理:用标有名字的圆圈表示对数据进行加工或变换 。
? 数据文件:以类似书本的符号表示数据暂存的处所对数据文件进行的
处理, 可以用指向或离开的箭头表示 。
? 数据来源及终点:用命名的方框表示, 表明数据的来源或数据去向 。
数据来源
数据存储
处理 数据输出数据流 数据流
7.2.5 学籍管理数据流图
7.2.5 教务管理数据流图



考试安排
考试安排 成绩通知单 如未通过重修补考单
教室时间安排 教材
介绍
介绍
出试卷 评成绩
选教材 评平时成绩











单 准考证选课单
P2
上课
教师教师
学生
P3
考试
学生名单
考试表选课名单
教师档案
课程目录
教室安排
教材目录
课堂检查
平时成绩
试卷
成绩单
P1
选课
补考名单
课时安排
7.2.5 进销存管理高层数据流程图
P1
进货
P3
销售
P2
入库
进货单
验收审核
销售单
P4
出库
客户订货 付款审核
出库单
入库单
采购员
供方
销售员仓管员
客户缺货
进货帐 库存台帐 销售帐
库存台帐
7.2.6 数据字典 (1)
? 数据字典是各类数据描述的集合, 即元数据, 而非数据
本身 。 数据字典为设计人员和数据库管理员在数据设计,
实现和运行阶段控制有关数据提供依据 。
? 1.数据项:数据项是不可再分的数据单位 。
? 数据项描述 ={数据项名, 含义说明, 别名, 类型, 长度,
取值范围, 取值含义, 与其他数据项的逻辑关系 }
? 2.数据结构:数据结构反映数据间的组合关系 。
? 数据结构描述 ={数据结构名, 含义说明, 组成, {数据项
或数据结构 }}
7.2.6 数据字典 (续 2)
? 3.数据流:数据结构在系统内传输的路径 。
? 数据流描述 ={数据流名, 说明, 数据流来源, 数据流去向,
组成, {数据结构 },平均流量, 高峰期流量 }。
? 4.数据存储描述 ={数据存储名, 说明, 编号, 流入数据流,
流出数据流, 组成, {数据结构 },数据量, 存取方式 }
? 数据量是指每次存取多少数据, 每天 ( 每小时, 每周等 )
存取多少次信息 。 取方式包括批处理, 联机处理, 检索更
新, 顺序检索, 随机检索 。
? 5.处理过程:描述处理过程的说明性信息 。
? 处理过程描述 ={处理过程名, 说明, 输入 {数据流 },输出
{数据流 },处理, {简要说明 }}。
? {简要说明 }中主要说明处理过程的功能和处理要求 。
7.3 第二步:概念结构设计
? 概念结构设计是将需求分析得到的用户需求抽
象成信息结构 (概念结构 )。
? 概念结构独立于逻辑结构和支持数据库的 DBMS。
它是现实世界和机器世界的中介, 是现实世界
的真实模型, 易于理解, 便于同不熟悉计算机
的用户进行交流, 这是整个数据设计的关键所
在 。
? 概念结构设计一般使用 ER图完成 。
7.3 第二步:概念结构设计
? 7.3.1 概念结构设计的方法
? 7.3.2 概念结构设计的步骤
? 7.3.3 抽象数据设计局部视图 ( ER图 )
? 7.3.4 集成视图 ( 整体 ER图 )
7.3.1 概念结构设计的方法
? 概念结构方法设计分四类 。 最常用的方法是自底向上
方法, 即自顶向下进行需求分析, 再自底向上设计概
念结构 。
? 1.自底向上:先定义各局部应用的概念结构, 再集成
为全局概念结构 。
? 2.自顶向下:先定义全局概念结构, 再细化 。
? 3.逐步扩充:先定义最重要的核心概念结构, 再逐步
扩充形成全局概念结构 。
? 4.混合策略:自顶向下和自底向上相结合, 自顶向下
设计全局概念结构框架 。 再自底向上设计各局部应用
的概念结构 。
7.3.2 概念结构设计的步骤
抽象数
据, 设
计局部
视图 逻辑结构设计
概念结构设计
DFD 分 ER图 总 ER图
需求
分析
集成视

7.3.3 抽象数据设计局部视图
? 1.选择局部应用,在多层数据流图中选择一个
适当的层次, 一般选中层, 设计分 E-R图 。
? 2.逐一设计分 E-R图, 如何区分实体与属性?
属性不能再具有需要描述的性质, 属性项不
可再分;属性不能与其它实体发生联系, 联
系只发生在实体之间 。
? 3.学籍管理和课程管理的局部 ER图 。
7.3.3 例:学籍管理概念模型
7.3.3 例:教务管理的概念模型
1
成绩
nnm


使

m
1
p
m
1
课程 课时
教师学生
教材


教室
q


7.3.4 集成视图
? 集成视图一般采取逐步累积的方式, 首先集成比较关
键的两个局部 E-R图, 然后逐步将新的视图集成进来 。
一般按以下过程完成 。
合并,消
除冲突
修改重
构,消
除不必
要的冗

分 ER图
基本
ER图
初步 ER图 分

规范
化理

逻辑结
构设计
7.3.4.1 集成视图第一步:合并
分 E-R图,生成初步 E-R图
? 合并分 E-R图, 最关键的工作是要消除各分 E-R图中
存在的冲突 。
? 1,属性冲突,涉及数据类型, 取值范围, 值域, 取
值单位等的冲突 。
? 2,命名冲突,分同名异义和异名同义 。
? 3,结构冲突,对于以下三种情况:同一对象在不同
应用中具有不同的抽象;同一实体在不同的局部视
图中所包含的属性不完全相同, 或者属性的排列次
序不完全相同;实体之间的联系在不同局部视图中
呈现不同的类型 。 进行适当的综合和调整 。
7.3.4.2 集成视图第二步:对初步 ER
图进行修改与重构,生成基本 ER图
? 初步 E-R图可能存在冗余的数据和冗余的实体
间联系。有些冗余是必要的,有些冗余是不必
要的。消除不必要冗余后的初步 E-R图,称为
基本 E-R图。
? 集成视图第二步采用的方法主要的分析方法和
规范化理论。
? 为提高效率而保留的人为的冗余,应将是数据
关联说明为完整性约束条件。
7.3.4.3 学生管理系统的基本 ER图
7.3.4.4 进货管理概念模型
7.3.4.3 集成视图步骤补充
? 总体概念结构还必须作进一步验证 。 验证确保满
足以下条件:整体概念结构内部必须具有一致性,
即不能存在相互矛盾的表达;整体概念结构能准
确地反映原来的每个视图结构, 包括属性, 实体
和实体间联系;整体概念结构能满足分析阶段所
确定的所有要求 。
? 最后, 整体概念结构还应该提交给用户, 征求用
户和有关人员的意见, 进行评审, 修改和优化,
然后确定下来, 作为进一步设计数据库的依据 。
7.4 第三步:逻辑结构设计
? 以整体 ER图为基础, 设计逻辑结构应选择最
适于描述和表达相应概念结构的数据模型,
目前一般使用关系模型 。
? 而后对支持该模型的 DBMS进行比较, 综合考
虑性能, 价格等因素, 选择最合适的 DBMS。
? 逻辑结构设计一般分三步进行 。
7.4 第三步:逻辑结构设计
? 7.4.1 逻辑结构设计三步图
? 7.4.2 ER图向关系数据模型转换的原则
? 7.4.3 例:学生管理 ER图的关系模式
? 7.4.4 例:进货管理 ER图的关系模式
? 7.4.5 将关系模型再转化为特定 DBMS支持的数
据模型
? 7.4.6 数据模型的优化
? 7.4.7 设计用户子模式
7.4.1 逻辑结构设计三步图
转化为
一般数
据模型
转 化 为
特定
DBMS支
持 的 数
据模型
优 化 模

基本 ER图 转换
规则
特定
DBMS 特
点与限制
优化
方法




逻辑结构设计
物理
设计概念结构设计
7.4.2 ER图向关系模型转换原则 (1)
? 1.一个实体转换为一个关系模式 。
? 2.一个 m,n联系转换为一个关系模式 。 如选修
( 学号, 课程号, 成绩 ) 。
? 3.一个 1,n联系转换为一个独立的关系模式, 也
可与 n端对应的关系模式合并 。
? 4.一个 1,1联系转换为一个独立的关系模式, 也
可与任意一端对应的关系模式合并 。
7.4.2 ER图向关系模型转换原则 (2)
? 5.三个或三个以上的实体间的一个多元联系转
换为一个关系模式 。 与该多元联系相连的各实
体的码以及联系本身的属性均转换为关系的属
性, 关系的码为各实体码的组合 。 讲授 ( 课程
号, 教师号, 书号 ) 。
? 6.同一实体集的实体间的联系, 即自联系, 可
1:1,1:n,m:n按三种情况分别处理 。
? 7.具有相同码的关系模式可以合并 。 关系模型
中关系个数尽量减少 。
7.4.3 学生管理 ER图的关系模式
? 学生 (学号, 姓名, 性别, 出生日期, 所在系, 班级号, 平均成绩 )
? 宿舍 (宿舍号, 地址, 性别, 电话, 宿舍长, 人数 )
? 班级 (班级号, 班级名, 班长, 学生人数, 职工号 )
? 教师 (职工号, 姓名, 性别, 职称, 电子邮箱 )
? 指导 (学号, 职工号 )
? 课程 (课程号, 课程名, 学分, 书号 )
? 讲授 (课程号, 教师号, 教室号, 课时号 )
? 选修 (学号, 课程号, 成绩 )
? 教材 (书号, 书名, 作者, 出版社, 出版日期, 单价 )
? 教室 (教室号, 地址, 容量 )
? 课时 (课时号, 时间 )
7.4.4 进货管理 ER图的关系模式
? 员工 (员工号,姓名,性别,岗位,部门,基本工资 )
? 仓库 (仓库号,名称,电话,管理员,面积 )
? 供货方 (供方号,名称,地址,邮编,电话,联系人 )
? 发票 (发票号, 供方号,日期,摘要,金额,经手人,进货单号 )
? 商品 (商品号,名称,规格,单位,存放仓库,库存量,参考销价 )
? 进货单 (进货单号,日期,供方号,总金额,验收否,验收人,审核
否,审核人 )
? 进货单明细 (进货单明细号, 进货单号, 商品号,数量,单价,金额,
入库否 )
? 质检单 (质检单号, 进货单号,检查日期,检查人 )
? 质检单明细 (质检单明细号, 质检单号,商品号,问题,解决状态)
7.4.5 将转化形成的数据模型再转化为
特定 DBMS支持的数据模型。
? 使用关系模型
? DBMS的特点
? 数据类型
? 安全性、完整性
7.4.6 数据模型的优化方法
? 1.确定数据依赖 。
? 2.对各关系模式之间的数据依赖进行极小化处理, 消除
冗余的联系 。
? 3.按照数据依赖理论对关系模式逐一进行分析, 考查是
否存在部分函数依赖, 传递函数依赖, 多值依赖等, 确
定各关系模式属于第几范式 。
? 4.按照需求分析阶段得到的各种应用对数据处理的要求,
分析对于这样的应用环境这些模式是否合适, 确定是否
要对它们进行合并和分解 。
? 5.对关系模式进行分解 。 联接运算是关系模式低效的主
要原因, 规范程度不是越高越好 。 如果只要求查询功能,
保持一定程度的更新异常和冗余, 不会产生实际影响 。
7.4.7 设计用户子模式
? 设计用户子模式主要从系统时间效率, 空间效率,
易维护等角度出发, 包括:
? 1.使用更符合用户习惯的别名 。
? 2.针对不同级别的用户定义不同的外模式, 以满
足系统对安全性的要求 。
? 3.简化用户对系统的使用 。
7.5 第四步:数据库物理设计
? 物理结构指数据库在物理设备上的存储结构和存
取方法 。
? 数据库物理设计 指为逻辑数据模型选取一个最适
合应用环境的物理结构的过程 。
? 依赖于所选用的 DBMS和计算机硬件环境, 要求设
计人员充分了解 DBMS的内部特征 ( 尤其是存储结
构和存取方法 ) 和性能, 充分了解应用环境的处
理频率和响应时间要求, 充分了解外存的特性 。
? 分两步:确定物理结构, 评价物理结构 。
7.5 第四步:数据库物理设计
? 本节包括三大点:
? 7.5.1 数据库物理设计的步骤
? 7.5.2 确定数据库的物理结构
? 7.5.3 对物理结构进行评价, 评价的重点是时
间和空间效率 。
7.5.1 数据库物理设计步骤
确定 DB
的物理
结构
评价
DB 的
物理结









数据
库实

逻辑结
构设计
数据库物理设计
7.5.2 确定数据库的物理结构
? 包括四个方面:
? 1.确定数据的存储结构 。 要求综合考虑存取时
间, 存储空间利用率和维护代价三方面因素 。
? 2.设计数据存取路径 。
? 3.确定数据的存放位置 。
? 4.确定系统配置 。 如设置用户数, 可同时打开
的数据对象数, 缓冲区长度和数量, 时间片大
小, 锁的数目等, 使系统整体最优 。
7.5.3 评价物理结构
? 数据库物理设计过程需要对时间效率, 空间效
率, 维护代价和各种用户要求进行权衡 。
? 评价物理数据库的方法完全依赖于所选用的
DBMS,主要从定量评价存取时间, 存储空间,
维护代价入手, 对估算结果进行权衡, 比较,
选择较优的合理的物理结构 。
? 评价物理结构需要进行一定的实验 。
7.6 第五步:数据库实施
? 根据逻辑设计和物理设计的结果建立数据库, 编
制和调应用程序, 组织数据入库, 并进行试运行 。
? 数据库实施是一项比较繁重的工作, 设计的部门
和人员较多, 并且将对实际业务流程产生影响 。
? 数据库实施初期往往会出现各种各样的问题, 这
是正常的现象, 关键在于能否采取正确的方法加
以解决 。
? 主要包括以下工作:用 DDL建立数据库结构, 组织
数据入库, 编制和调应用程序, 并进行试运行
7.6 第五步:数据库实施
? 7.6.1 数据库实施步骤图
? 7.6.2 用 DDL建立数据库结构
? 7.6.3 组织数据入库
? 7.6.4 编制和调应用程序
? 7.6.5 并进行试运行
7.6.1 数据库实施步骤图
建立
数据
库结

组织
数据
入库
编制
调应
用程

数据库
运行与
维护
数据库实施




数据库系统
数据库
物理设

数据
库 试
运行
7.6.2 用 DDL建立数据库结构
? 1.建立数据库结构可使用 SQL( DDL) 语句或
者图形界面完成 。 当前几乎所有的 DBMS都提
供这两种操作方式 。
? 2,建立数据库结构包括建立数据库, 表, 视图
以及索引等 。
? 3.建立数据库结构应注意完整性要求 。
? 4,使用 DDL语句并将语句块保存起来, 便于以
后再次修改重建, 而使用图形界面则操作直观
方便一些 。
7.6.3 组织数据入库(数据装载)
? 对于数据量不大的小型系统可用手工入库方法完成数
据入库 。 对于数据量极大的大型系统, 应设计一个数
据输入子系统, 由计算机辅助入库 。
? 手工入库的步骤是:筛选数据 ?格式转换 ?输入数据
?校验数据 。
? 计算机辅助入库的步骤是:筛选数据 ?输入数据 ?校
验数据 ?格式转换 ?综合数据 。
? 在数据装载前, 务必确保原始数据正确, 严格筛选 。
? 数据装载要注意避免数据重复输入
7.6.4 编制和调应用程序
? 编制和调试应用程序应与数据库设计并行进行,
与数据装载同步。
? 应用程序必须要经过严格的反复测试之后才能
投入使用,要有测试文档。
? 编制应用程序应选择一种合适的语言和开发工
具,充分考虑开发工具的技术支持。
? 应用程序代码尽量使用规范的结构和格式。
? 应注意充分满足用户的个性化要求。
7.6.5 数据库试运行
? 数据库试运行要进行联合调试
? 联合调试包括功能测试, 性能测试 。
? 功能测试主要看是否能够正常完成系统设计所
要求的各项功能 。
? 性能测试主要看在完成这些功能时是否能达到
设计的目标, 各项指标如何 。
? 及时做好数据的备份和转储工作, 防止对数据
库的破坏 。
7.7 第六步:数据库运行与维护
? 在数据库运行过程中需要不断地对数据库系统
进行评价, 调整和修改 。
? 一个再好的 DBS也必须要进行良好的运行维护才
能正常工作 。
? 需要建立一个运行维护团队 ( 中心 ) 。
? 数据库运行与维护包括:数据库的转储和恢复;
数据库的安全性, 完整性控制;数据库的监督,
分析和改进;数据库的重组织和重构造 。
7.7 第六步:数据库运行与维护
? 主要包括:
? 7.7.1 数据库的转储和恢复
? 7.7.2 数据库的安全性, 完整性控制
? 7.7.3 数据库的监督, 分析和改进
? 7.7.4 数据库的重组织和重构造
7.7.1 数据库的转储和恢复
? 包括:
? 制定转储计划;
? 执行数据文件和日志文件备份;
? 进行动态备份 ( 增量备份 ) 和完全备份 。
? 当数据库受到破坏时, 要能及时地利用备份将
数据库恢复到正确状态 。
7.7.2 数据库安全性、完整性控制
? 在数据库运行过程中, 必须有效控制数据库的
安全性, 完整性 。
? DBA应将所有用户的权限进行合理设置 。
? 注意用户密级变化 。
? 注意完整性约束条件变化 。
7.7.3 数据库监督、分析和改进
? 数据库的性能会随着系统长时间的运行和应用
环境的变化受到影响 。 磁盘空间, 系统内存以
及系统参数的改变等都有可能影响数据库性能,
? 因此, DBA要利用 DBMS提供的或第三方的监督
分析工具软件来监督, 分析, 改进数据库性能 。
? DBMS一般提供监督分析工具软件 。
7.7.4 数据库的重组织和重构造
? 当数据库长时间运行过程中所进行的增删改操
作引起系统性能显著下降时, 就可能需要对数
据库进行物理上的重组织重构造, 以提高系统
的性能 。
? 如应用变化太大, 则重组织和重构造已不能满
足用户要求, 这时需要重新设计, 开始一个新
系统的生命周期 。
7.8 小结
? 开发 DBS须按软件工程思想对系统进行周密分析设计 。
? 数据库设计是 DBS发挥良好作用的有效保证 。
? 数据库设计需要设计者在工作的过程中不断地总结经验
教训, 加强与用户以及团队成员的交流, 沟通与协调 。
是一项技术性很强的工作, 同时也需要具备进行交流,
沟通, 协调, 管理, 控制的能力, 具有很强艺术性 。
? 数据库设计一般分六步:需求分析, 概念设计, 逻辑设
计, 物理设计, 数据库实施, 运行和维护 。
? 每一步都有具体的任务, 目标, 工作内容和方法, 各步
骤之间往往需要一些反复 。
? 在设计过程中, 要将结构设计与行为设计结合起来,结构
设计要为行为设计服务 。
7.9 练习
? 7.1 数据库设计意义何在?
? 7.2 数据库设计的核心是什么?
? 7.3 简述数据库设计的步骤 。
? 7.4 画出销售管理的数据流图和 ER图 。
? 7.5 将 ER图转化为关系模式有哪些原则?
? 7.6 以学生管理系统为例,编写系统分析设计报告(包
括需求分析、概念和逻辑结构设计、物理设计报告)。
? 7.7 以进销存系统为例, 编写系统分析设计报告 。
? 7.8 以股票交易系统为例, 编写系统分析设计报告 。