1
第 6章 数据库设计
?6.1 数据库设计概述( 重点 )
?6.2 需求分析( 重点 )
?6.3 概念结构设计( 重点,难点 )
?6.4 逻辑结构设计( 重点,难点 )
?6.5 数据库的物理设计
?6.6 数据库实施
?6.7 数据库运行与维护
2
6.1 数据库设计概述
? 数据库设计是指对一个给定的应用环境, 构造最优的,
最有效的数据库模式, 建立数据库及其应用系统, 使
之能够高效率地存取数据, 满足各种用户的应用需求 。
数据库设计通常是在一个通用的 DBMS支持下进行的,
本内容都是以关系数据库 — SQL Server 2000为基础来
设计数据库的 。
? 数据库的设计工作通常分阶段进行, 不同的阶段完成
不同的设计内容 。 数据库规范设计方法通常将数据库
的设计分为 6个阶段, 如图 6-1所示 。
4
6.1.1 数据库的设计分为 6个阶段
① 需求分析 。 收集和分析用户对系统的信息需求和处理
需求, 得到设计系统所必须的需求信息, 建立系统说
明文档 。
② 概念结构设计 。 概念结构设计是整个数据库设计的关
键 。 它通过对用户的需求进行综合, 归纳与抽象, 形
成一个独立于具体 DBMS的概念模型 。
③ 逻辑结构设计 。 在概念模型的基础上导出一种 DBMS支
持的逻辑数据库模型 ( 如关系型, 网络型或层次型 ),
该模型应满足数据库存取, 一致性及运行等各方面的
用户需求 。
5
④ 物理结构设计 。 从一个满足用户需求的已确定的逻辑
模型出发, 在限定的软, 硬件环境下, 利用 DBMS提
供的各种手段设计数据库的内模式, 即设计数据的存
储结构和存取方法 。
⑤ 数据库实施 。 运用 DBMS提供的数据语言及宿主语言,
根据逻辑设计和物理设计的结果建立数据库, 编制与
调试应用程序, 组织数据入库, 并进行试运行 。
⑥ 数据库运行和维护 。
6.1.2 数据库的三级模式结构
7
6.2 需求分析
?6.2.1 需求分析的任务
?6.2.2 需求分析的基本步骤
?6.2.3 需求分析应用实例
8
6.2.1 需求分析的任务
根据需求分析的目标, 需求分析这一阶段的任务主要有
两项:
( 1) 确定设计范围 。 通过详细调查现实世界要处理的对
象 ( 组织, 部门和企业等 ), 弄清现行系统 ( 手工系统
或计算机系统 ) 的功能划分, 总体工作流程, 明确用户
的各种需求 。
( 2) 数据收集与分析 。 需求分析的重点是在调查研究的
基础上, 获得数据库设计所必须的数据信息 。
9
6.2.2 需求分析的基本步骤
1,调查与初步分析用户的需求, 确定系统的边界
2,分析和表达用户的需求
10
1,调查与初步分析用户的需求, 确定系统的边
界
( 1) 首先调查组织机构情况 。
( 2) 然后调查各部门的业务活动情况 。
( 3) 在熟悉了业务活动的基础上, 协助用户明确对新系
统的各种要求, 包括信息要求, 处理要求, 安全性与
完整性要求, 这是调查的又一个重点 。
( 4) 最后对前面调查的结果进行初步分析, 确定新系统
的边界, 确定哪些功能由计算机完成或将来由计算机
完成, 哪些活动由人工完成 。
12
2,分析和表达用户的需求
( 1) 数据流图 。
数据流图 ( Data Flow Diagram,简称 DFD) 是一种
最常用的结构化分析工具, 它用图形的方式来表达数据
处理系统中信息的变换和传递过程 。 如 图 6-4所示, 数据
流图有 4种基本符号 。
14
( 2) 数据字典 。
? 数据项条目:数据项是不可再分的数据单位, 它直接
反映事物的某一特征 。
? 数据结构条目:反映了数据之间的组合关系 。
? 数据流条目:数据流是数据结构在系统内传输的路径 。
? 数据文件条目:数据文件是数据项停留或保存的地方,
也是数据流的来源和去向之一 。
? 处理过程条目 。
15
6.2.3 需求分析应用实例
? 现要开发高校图书管理系统 。 经过可行性分析和初步
的需求调查, 确定了系统的功能边界, 该系统应能完
成下面的功能:
( 1) 读者注册 。
( 2) 读者借书 。
( 3) 读者还书 。
( 4) 图书查询 。
16
1,数据流图
? 通过对系统的信息及业务流程进行初步分析后, 首先
抽象出该系统最高层的数据流图, 即把整个数据处理
过程看成是一个加工的顶层数据流图, 如图 6-5所示 。
18
? 顶层数据流图反映了图书管理系统与外界的接口, 但
未表明数据的加工要求, 需要进一步细化 。 根据前面
图书管理系统功能边界的确定, 再对图书管理系统顶
层数据流图中的处理功能做进一步分解, 可分解为读
者注册, 借书, 还书和查询四个子功能, 这样就得到
了图书管理系统的第 0层数据流图, 如图 6-6所示 。
20
? 从图书管理系统第 0层数据流图中可以看出, 在图书管
理的不同业务中, 借书, 还书, 查询这几个处理较为
复杂, 使用到不同的数据较多, 因此有必要对其进行
更深层次的分析, 即构建这些处理的第 1层数据流图 。
下面的图 6-7分别给出了借书, 还书, 查询子功能的第
1层数据流图 。
24
2,数据字典 (DD)
( 1) 数据项描述 。
数据项名称:借书证号
别名:卡号
含义说明:惟一标识一个借书证
类型:字符型
长度,20
返回原处
25
? ( 2) 数据结构描述 。
名称:读者类别
含义说明:定义了一个读者类别的有关信息
组成结构:类别代码 +类别名称 +可借阅数量 +借阅天数 +
超期罚款额
名称:读者
含义说明:定义了一个读者的有关信息
组成结构:姓名 +性别 +所在部门 +读者类型
名称:图书
含义说明:定义了一本图书的有关信息
组成结构:图书编号 +图书名称 +作者 +出版社 +价格
返回原处
26
? ( 3)数据流(非数据项)说明。
数据流名称:借书单
含义:读者借书时填写的单据
来源:读者
去向:审核借书
数据流量,250份 /天
组成:借书证编号 +借阅日期 +图书编号
数据流名称:还书单
含义:读者还书时填写的单据
来源:读者
去向:审核还书
数据流量,250份 /天
组成:借书证编号 +还书日期 +图书编号
返回原处
27
? ( 4)数据存储说明。
数据存储名称:图书信息表
含义说明:存放图书有关信息
组成结构:图书 +库存数量
说明:数量用来说明图书在仓库中的存放数
数据存储名称:读者信息表
含义说明:存放读者的注册信息
组成结构:读者 +卡号 +卡状态 +办卡日期
说明:卡状态是指借书证当前被锁定还是正常使用
数据存储名称:借书记录
含义说明:存放读者的借书, 还书信息
组成结构:卡号 +书号 +借书日期 +还书日期
说明:要求能立即查询并修改
返回原处
28
? ( 5)处理过程说明。
处理过程名称:审核借书证
输入:借书证
输出:认定合格的借书证
加工逻辑:根据读者信息表和读者借书证,
如果借书证在读者信息表中存在并且没有被锁
定, 那么借书证是有效的借书证, 否则是无效
的借书证 。
29
6.3 概念结构设计
?6.3.1 概念结构设计的方法和步骤
?6.3.2 局部视图设计
?6.3.3 视图的集成
?6.3.4 概念结构设计实例
30
6.3.1 概念结构设计的方法和步骤
? 1.自顶向下设计法
? 2.自底向上设计法
? 3.由里向外设计法
? 4.混合策略设计法
33
6.3.2 局部视图设计
? 局部视图设计是根据系统的具体情况, 在多层的数据
流图中选择一个适当层次的数据流图, 作为设计分 E-
R图的出发点, 并让数据流图中的每一个部分都对应
一个局部应用 。 选择好局部应用之后, 就可以对每个
局部应用逐一设计分 E-R图了 。 局部 E-R图的设计分为
如下的几个步骤, 如图 6-10所示 。
35
1,确定实体类型和属性
实体和属性之间没有严格的区别界限, 但对于属性来讲,
可以用下面的两条准则作为依据:
( 1) 作为属性必须是不可再分的数据项, 也就是属性中
不能再包含其他的属性 。
( 2) 属性不能与其他实体之间具有联系 。
36
2,确定实体间的联系
依据需求分析结果, 考察任意两个实体类型之间是否存
在联系, 若有, 则确定其类型 ( 一对一, 一对多或多对
多 ), 接下来要确定哪些联系是有意义的, 哪些联系是
冗余的, 并消除冗余的联系 。 所谓冗余的联系是指无意
义的或可以从其他联系导出的联系 。
37
3,画出局部 E-R图
确定了实体及实体间的联系后, 可用 E-R图描述出来 。 形
成局部 E-R图之后, 还必须返回去征求用户意见, 使之如
实地反映现实世界, 同时还要进一步规范化, 以求改进
和完善 。 每个局部视图必须满足:
( 1) 对用户需求是完整的 。
( 2) 所有实体, 属性, 联系都有惟一的名字 。
( 3) 不允许有异名同义, 同名异义的现象 。
( 4) 无冗余的联系 。
38
6.3.3 视图的集成
? 各个局部视图建立好后, 还需要对它们进行合并, 集
成为一个整体的数据概念结构, 即总 E-R图 。 集成局
部 E-R图型, 设计全局 E-R模型的步骤如图 6-12所示 。
39
40
1.合并局部 E-R图,生成初步 E-R图
( 1)属性冲突。
( 2)命名冲突。
( 3)结构冲突。
第 6章 数据库设计
?6.1 数据库设计概述( 重点 )
?6.2 需求分析( 重点 )
?6.3 概念结构设计( 重点,难点 )
?6.4 逻辑结构设计( 重点,难点 )
?6.5 数据库的物理设计
?6.6 数据库实施
?6.7 数据库运行与维护
2
6.1 数据库设计概述
? 数据库设计是指对一个给定的应用环境, 构造最优的,
最有效的数据库模式, 建立数据库及其应用系统, 使
之能够高效率地存取数据, 满足各种用户的应用需求 。
数据库设计通常是在一个通用的 DBMS支持下进行的,
本内容都是以关系数据库 — SQL Server 2000为基础来
设计数据库的 。
? 数据库的设计工作通常分阶段进行, 不同的阶段完成
不同的设计内容 。 数据库规范设计方法通常将数据库
的设计分为 6个阶段, 如图 6-1所示 。
4
6.1.1 数据库的设计分为 6个阶段
① 需求分析 。 收集和分析用户对系统的信息需求和处理
需求, 得到设计系统所必须的需求信息, 建立系统说
明文档 。
② 概念结构设计 。 概念结构设计是整个数据库设计的关
键 。 它通过对用户的需求进行综合, 归纳与抽象, 形
成一个独立于具体 DBMS的概念模型 。
③ 逻辑结构设计 。 在概念模型的基础上导出一种 DBMS支
持的逻辑数据库模型 ( 如关系型, 网络型或层次型 ),
该模型应满足数据库存取, 一致性及运行等各方面的
用户需求 。
5
④ 物理结构设计 。 从一个满足用户需求的已确定的逻辑
模型出发, 在限定的软, 硬件环境下, 利用 DBMS提
供的各种手段设计数据库的内模式, 即设计数据的存
储结构和存取方法 。
⑤ 数据库实施 。 运用 DBMS提供的数据语言及宿主语言,
根据逻辑设计和物理设计的结果建立数据库, 编制与
调试应用程序, 组织数据入库, 并进行试运行 。
⑥ 数据库运行和维护 。
6.1.2 数据库的三级模式结构
7
6.2 需求分析
?6.2.1 需求分析的任务
?6.2.2 需求分析的基本步骤
?6.2.3 需求分析应用实例
8
6.2.1 需求分析的任务
根据需求分析的目标, 需求分析这一阶段的任务主要有
两项:
( 1) 确定设计范围 。 通过详细调查现实世界要处理的对
象 ( 组织, 部门和企业等 ), 弄清现行系统 ( 手工系统
或计算机系统 ) 的功能划分, 总体工作流程, 明确用户
的各种需求 。
( 2) 数据收集与分析 。 需求分析的重点是在调查研究的
基础上, 获得数据库设计所必须的数据信息 。
9
6.2.2 需求分析的基本步骤
1,调查与初步分析用户的需求, 确定系统的边界
2,分析和表达用户的需求
10
1,调查与初步分析用户的需求, 确定系统的边
界
( 1) 首先调查组织机构情况 。
( 2) 然后调查各部门的业务活动情况 。
( 3) 在熟悉了业务活动的基础上, 协助用户明确对新系
统的各种要求, 包括信息要求, 处理要求, 安全性与
完整性要求, 这是调查的又一个重点 。
( 4) 最后对前面调查的结果进行初步分析, 确定新系统
的边界, 确定哪些功能由计算机完成或将来由计算机
完成, 哪些活动由人工完成 。
12
2,分析和表达用户的需求
( 1) 数据流图 。
数据流图 ( Data Flow Diagram,简称 DFD) 是一种
最常用的结构化分析工具, 它用图形的方式来表达数据
处理系统中信息的变换和传递过程 。 如 图 6-4所示, 数据
流图有 4种基本符号 。
14
( 2) 数据字典 。
? 数据项条目:数据项是不可再分的数据单位, 它直接
反映事物的某一特征 。
? 数据结构条目:反映了数据之间的组合关系 。
? 数据流条目:数据流是数据结构在系统内传输的路径 。
? 数据文件条目:数据文件是数据项停留或保存的地方,
也是数据流的来源和去向之一 。
? 处理过程条目 。
15
6.2.3 需求分析应用实例
? 现要开发高校图书管理系统 。 经过可行性分析和初步
的需求调查, 确定了系统的功能边界, 该系统应能完
成下面的功能:
( 1) 读者注册 。
( 2) 读者借书 。
( 3) 读者还书 。
( 4) 图书查询 。
16
1,数据流图
? 通过对系统的信息及业务流程进行初步分析后, 首先
抽象出该系统最高层的数据流图, 即把整个数据处理
过程看成是一个加工的顶层数据流图, 如图 6-5所示 。
18
? 顶层数据流图反映了图书管理系统与外界的接口, 但
未表明数据的加工要求, 需要进一步细化 。 根据前面
图书管理系统功能边界的确定, 再对图书管理系统顶
层数据流图中的处理功能做进一步分解, 可分解为读
者注册, 借书, 还书和查询四个子功能, 这样就得到
了图书管理系统的第 0层数据流图, 如图 6-6所示 。
20
? 从图书管理系统第 0层数据流图中可以看出, 在图书管
理的不同业务中, 借书, 还书, 查询这几个处理较为
复杂, 使用到不同的数据较多, 因此有必要对其进行
更深层次的分析, 即构建这些处理的第 1层数据流图 。
下面的图 6-7分别给出了借书, 还书, 查询子功能的第
1层数据流图 。
24
2,数据字典 (DD)
( 1) 数据项描述 。
数据项名称:借书证号
别名:卡号
含义说明:惟一标识一个借书证
类型:字符型
长度,20
返回原处
25
? ( 2) 数据结构描述 。
名称:读者类别
含义说明:定义了一个读者类别的有关信息
组成结构:类别代码 +类别名称 +可借阅数量 +借阅天数 +
超期罚款额
名称:读者
含义说明:定义了一个读者的有关信息
组成结构:姓名 +性别 +所在部门 +读者类型
名称:图书
含义说明:定义了一本图书的有关信息
组成结构:图书编号 +图书名称 +作者 +出版社 +价格
返回原处
26
? ( 3)数据流(非数据项)说明。
数据流名称:借书单
含义:读者借书时填写的单据
来源:读者
去向:审核借书
数据流量,250份 /天
组成:借书证编号 +借阅日期 +图书编号
数据流名称:还书单
含义:读者还书时填写的单据
来源:读者
去向:审核还书
数据流量,250份 /天
组成:借书证编号 +还书日期 +图书编号
返回原处
27
? ( 4)数据存储说明。
数据存储名称:图书信息表
含义说明:存放图书有关信息
组成结构:图书 +库存数量
说明:数量用来说明图书在仓库中的存放数
数据存储名称:读者信息表
含义说明:存放读者的注册信息
组成结构:读者 +卡号 +卡状态 +办卡日期
说明:卡状态是指借书证当前被锁定还是正常使用
数据存储名称:借书记录
含义说明:存放读者的借书, 还书信息
组成结构:卡号 +书号 +借书日期 +还书日期
说明:要求能立即查询并修改
返回原处
28
? ( 5)处理过程说明。
处理过程名称:审核借书证
输入:借书证
输出:认定合格的借书证
加工逻辑:根据读者信息表和读者借书证,
如果借书证在读者信息表中存在并且没有被锁
定, 那么借书证是有效的借书证, 否则是无效
的借书证 。
29
6.3 概念结构设计
?6.3.1 概念结构设计的方法和步骤
?6.3.2 局部视图设计
?6.3.3 视图的集成
?6.3.4 概念结构设计实例
30
6.3.1 概念结构设计的方法和步骤
? 1.自顶向下设计法
? 2.自底向上设计法
? 3.由里向外设计法
? 4.混合策略设计法
33
6.3.2 局部视图设计
? 局部视图设计是根据系统的具体情况, 在多层的数据
流图中选择一个适当层次的数据流图, 作为设计分 E-
R图的出发点, 并让数据流图中的每一个部分都对应
一个局部应用 。 选择好局部应用之后, 就可以对每个
局部应用逐一设计分 E-R图了 。 局部 E-R图的设计分为
如下的几个步骤, 如图 6-10所示 。
35
1,确定实体类型和属性
实体和属性之间没有严格的区别界限, 但对于属性来讲,
可以用下面的两条准则作为依据:
( 1) 作为属性必须是不可再分的数据项, 也就是属性中
不能再包含其他的属性 。
( 2) 属性不能与其他实体之间具有联系 。
36
2,确定实体间的联系
依据需求分析结果, 考察任意两个实体类型之间是否存
在联系, 若有, 则确定其类型 ( 一对一, 一对多或多对
多 ), 接下来要确定哪些联系是有意义的, 哪些联系是
冗余的, 并消除冗余的联系 。 所谓冗余的联系是指无意
义的或可以从其他联系导出的联系 。
37
3,画出局部 E-R图
确定了实体及实体间的联系后, 可用 E-R图描述出来 。 形
成局部 E-R图之后, 还必须返回去征求用户意见, 使之如
实地反映现实世界, 同时还要进一步规范化, 以求改进
和完善 。 每个局部视图必须满足:
( 1) 对用户需求是完整的 。
( 2) 所有实体, 属性, 联系都有惟一的名字 。
( 3) 不允许有异名同义, 同名异义的现象 。
( 4) 无冗余的联系 。
38
6.3.3 视图的集成
? 各个局部视图建立好后, 还需要对它们进行合并, 集
成为一个整体的数据概念结构, 即总 E-R图 。 集成局
部 E-R图型, 设计全局 E-R模型的步骤如图 6-12所示 。
39
40
1.合并局部 E-R图,生成初步 E-R图
( 1)属性冲突。
( 2)命名冲突。
( 3)结构冲突。