数据库原理与应用
高等院校计算机教材系列
第9章 数据库设计
• 数据库设计概述
• 数据库需求分析
• 数据库结构设计
• 数据库行为设计
• 数据库的实施和维护
数据库设计概述
• 数据库设计的特点
• 数据库设计方法概述
• 数据库设计的基本步骤
数据库设计面临的主要问题
• 同时具备数据库与应用业务知识的人很少。
• 应用业务的数据库系统的目标是什么在一开
始往往不能很明确。
• 缺乏完善的设计工具和设计方法。
• 用户的要求往往并不是一开始就能完全说清
楚。
• 应用业务系统千差万别,很难找到一种适合
所有应用业务的工具和方法。
成功的数据库系统应具备的特点
• 功能强大。
• 能准确地表示业务数据。
• 容和维护。
• 对最终用户操作的响应时间合理。
• 便于数据库结构的改进。
• 便于数据的检索和修改。
• 较少的数据库维护工作。
• 有效的安全机制能确保数据安全。
• 冗余数据最少或不存在。
• 便于数据的备份和恢复。
• 数据库结构对最终用户透明。
数据库设计的特点
(1)综合性
• 涉及面广,需包含计算机专业知识及业务系
统专业知识;
• 要解决技术及非技术两方面的问题;
(2)静态结构设计与动态行为设计是分离的
• 静态结构设计是指数据库的模式框架设计(包
括语义结构(概念)、数据结构(逻辑)、存
储结构(物理));
• 动态行为设计是指应用程序设计(动作操纵:
功能组织、流程控制)
结构和行为设计相互分离
部门
数据分析 功能分析
概念模型设计
逻辑模型设计
物理数据库设
计
加载数据库
功能模型 功能说明
事务设计
程序设计
调试运行
数据库设计方法概述
• 新奥尔良(New Orleans)方法
需求说明
需求
分析
概念结构
概念结
构设计
逻辑结构
逻辑结
构设计
物理结构
结构
物理
设计
• 数据库设计方法从本质上看仍然是手工设计
方法,其基本思想是过程迭代和逐步求精。
数据库设计的基本步骤
• 需求分析
• 概念结构设计
• 逻辑结构设计
• 物理设计
• 数据库实施
• 数据库运行和维护
数据库需求分析
• 分析用户的要求;
• 是数据库设计的起点;
• 其结果将直接影响到后面各阶段的设计;
• 并影响到最终的数据库系统能否被合理
地使用。
需求分析的任务
• 信息需求。
• 处理需求。
• 安全性与完整性要求。
数据存储
数据源 数据输出处理
需求调查
• 需求调查:调研现行系统的业务活动规则,提取
描述系统业务的RS模型。
• 系统调查通常包括三方面内容:
• 业务现状
• 信息资源
• 外部要求
• 调查方式:
①检查文档 ②面谈
③观察操作中的业务 ④研究和问卷调查
数据库结构设计
• 数据库设计分为:数据库结构设计和
数据库行为设计。
• 结构设计包括设计数据库的概念结构、
逻辑结构和存储结构。
• 行为设计包括设计数据库的功能组织
和流程控制。
概念结构设计
• 着重信息结构的设计;
• 是整个数据库系统设计的关键;
• 独立于逻辑结构设计;
• 独立于DBMS。
概念模型的特点
• 有丰富的语义表达能力。
• 流和理解。
• 改。
• 各种数据模型转换。
概念结构设计的策略
• 自底向上。先定义局部应用的概念结构,然
后按一定的规则把它们集成起来,从而得到
全局概念模型。
• 自顶向下:先定义全局概念模型,然后再逐
步细化。
• 由里向外:先定义最重要的核心结构,然后
再逐步向外扩展。
• 混合策略。将自顶向下和自底向上结合起来
使用。
采用E-R模型方法的概念结构设计
• 设计局部E-R模型
E-R模型的设计内容包括确定局部E-R
模型的范围、定义实体、联系以及它们
的属性。
• 设计全局E-R模型
将所有局部E-R图集成为一个全局E-R
图,即全局E-R模型。
• 优化全局E-R模型
设计局部E-R模型
• 概念结构是对现实世界的一种抽象。
• 所谓抽象是对实际的人、物、事和概念进行
人为处理,抽取所关心的共同特性,忽略非
本质细节,并把这些特性用各种概念准确的
加以描述。
• 一般有三种抽象方法:
• 分类
• 概括
• 聚集
分类
学生
…
class
Is a mumber of
概括
学生
本科生 研究生
超类
子类
Is a subset of
聚集
学生
…
实体型
属性学
号
姓
名
性
别
Is a part of
设计全局E-R模型
• 将局部E-R图集成为全局E-R图;
• 需消除各分E-R图合并时产生的冲突;
• 解决冲突是合并E-R图的主要工作和关键所
在。
• 冲突主要有三类:
• 属性冲突:属性域冲突、属性取值单位冲突
• 命名冲突:同名异义和异名同义
• 结构冲突:同一对象在不同应用中具有不同的
抽象、同一实体在不同的局部E-R图中所包含
的属性个数和属性的排列次序不完全相同。
优化全局E-R模型
• 实体个数尽可能少;
• 实体所包含的属性尽可能少;
• 实体间联系无冗余。
局部ER图
nm产品
产品号 性能参数
零件
零件号 价格
组成
零件个数
nm材料
材料号 材料类型
产品
零件号 规格
使用
使用量库存量
合并示例
n
nm产品
产品号
性能参数
零件
零件号
规格
组成
零件个数
价格
使
用
使用量
材料号
材料类型
库存量
材料
逻辑结构设计
• 步骤:
• 将概念模型转换为某种组织层数据模
型;
• 对数据模型进行优化。
E-R模型向关系模型的转换
• 一个实体转换为一个关系模式。实体的属性就是关
系的属性,实体的标识符就是关系的码。
• 对于实体间的联系有以下不同的情况:
• 一个1:1联系可以转换为一个独立的关系模式,
也可以与任意一端所对应的关系模式合并。
• 一个1:n联系可以转换为一个独立的关系模式,
也可以与n端所对应的关系模式合并。
• 一个m:n联系转换为一个关系模式。
• 三个或三个以上实体间的一个多元联系可以转换为
一个关系模式。
• 具有相同码的关系模式可以合并。
1:1转换示例
• 部门表(部门号,部门名,经理
号)
• 经理表(经理号,经理名,电话)
或者:
• 部门表(部门号,部门名)
• 经理表(经理号,部门号,经理
名,电话)
1
1
经理
部门
管理
部门名
部门号
经理号
经理名
电话
1:n转换示例
• 部门表(部门号,部门名)
• 职工表(职工号,部门号,
职工名,工资)
n
1
职工
部门
工
作
部门名
部门号
职工号
职工名
工资
m:n转换示例
• 教师表(教师号,教师名,职称)
• 课程表(课程号,课程名,学分)
• 授课表(教师号,课程号,授课时数)
n
m
课程
教师
授课
教师名
教师号
课程号
课程名
学分
职称
授课时数
数据模型的优化
• 关系数据模型的优化通常以规范化理论为指
导,并考虑系统的性能。具体方法为:
• 确定各属性间的数据依赖。
• 消除冗余的联系。
• 确定最合适的范式。
• 确定是否要对某些模式进行分解或合并 。
• 对关系模式进行必要的分解,以提高数据的
操作效率和存储空间的利用率。
水平分解
• 以时间、空间、类型等范畴属性取值为条件,
满足相同条件的数据行为一个子表。
• 分解的依据一般以范畴属性取值范围划分数
据行。这样在操作同表数据时,时空范围相
对集中,便于管理。
K# A1 … Am
K# A1 … Am
K# A1 … Am
垂直分解
• 以非主属性所描述的应用对象生命历程的先后为条
件,对应相同历程的属性为一个子表。
• 分解的依据是将非主属性按其数据生成的时间段划
分,描述相同时间段的属性划分在一个组中。
• 使操作同表数据时时空范围相对集中,便于管理。
K# A11 …A1m A21 … A2n
K# A11 …A1m
K# A21 … A2n
设计外模式
• 将概念模型转换为逻辑数据模型之后,还应
该根据局部应用需求,并结合具体的数据库
管理系统的特点,设计用户的外模式。
• 外模式概念对应关系数据库的视图概念,设
计外模式是为了更好地满足局部用户的需求。
• 定义数据库的模式主要是从系统的时间效率、
空间效率、等角度出发。
定义外模式考虑事项
• 使用更符合用户习惯的别名。
• 对不同级别的用户定义不同的视图,以
保证数据的安全。
• 简化用户对系统的使用。
物理结构设计
• 对已确定的逻辑数据结构,利用DBMS提供
的方法、技术,以较优的存储结构、数据存
取路径、合理的数据存储位置以及存储分配,
设计出一个高效的、可实现的物理数据库结
构。
• 数据库的物理设计通常分为两步:
• 确定数据库的物理结构;
• 对物理结构进行时间和空间效率的评价。
物理结构设计的内容和方法
• 对于数据查询,需要得到如下信息:
• 查询所涉及的关系;
• 查询条件所涉及的属性;
• 连接条件所涉及的属性;
• 查询列表中涉及的属性。
• 对于更新数据的事务,需要得到如下信息:
• 更新所涉及的关系;
• 每个关系上的更新条件所涉及的属性;
• 更新操作所涉及的属性。
确定存取方法
• 一般用户可以通过建立索引的方法来加快数
据的查询效率。
• 建立索引的一般原则为:
• 在经常作为查询条件的属性上建立索引。
• 在经常作为连接条件的属性上建立索引。
• 在经常作为分组依据列的属性上建立索引。
• 对经常进行连接操作的表可以建立索引。
• 一个表可以建立多个索引,但只能建立一个
聚簇索引。
确定存储结构
• 一般的存储方式有:
• 顺序存储
• 散列存储
• 聚簇存储
• 一般情况下系统都会为数据选择一种
最合适的存储方式。
物理结构设计的评价
• 评价物理结构设计的方法完全依赖于具体的
DBMS,主要考虑的是操作开销,即为使用
户获得及时、准确的数据所需的开销和计算
机的资源的开销。具体可分为如下几类:
• 查询和响应时间
• 更新事务的开销
• 生成报告的开销
• 主存储空间的开销
• 辅助存储空间的开销
数据库行为设计
• 功能需求分析
• 功能设计
• 事务设计
功能需求分析
• 在进行需求分析时,我们实际上进行了
两项工作,一项是“数据流”的调查分
析,另一项是“事务处理”过程的调查
分析。
• 数据流的调查分析为数据库的信息结构
提供了最原始的依据,
• 事务处理的调查分析是行为设计的基础。
对行为特性要进行的分析
• 标识所有的查询、报表、事务及动态特性,指出对数
据库所要进行的各种处理;
• 指出对每个实体所进行的操作(增、删、改、查);
• 给出每个操作的语义,包括结构约束和操作约束;
• 给出每个操作(针对某一对象)的频率;
• 给出每个操作(针对某一应用)的响应时间;
• 给出该系统总的目标。
功能设计
¨¨
目标
功能2 功能n功能1
功能22 功能23功能21
例:“学籍管理”的功能结构图
学籍管理
录取分班 入学报到 …
录入 修改 查询
修课管理
事务设计
• 事务处理是计算机模拟人处理事务的过
程,包括:
• 输入设计
• 输出设计
• 功能设计
• 等等
输入设计
• 原始单据的设计格式
• 制成输入一览表
• 制作输入数据描述文档
输出设计
• 用途。区分输出结果是给客户的还是用
于或报送上级领导的。
• 输出设备的选择。是仅仅显示出来,还
是要打印出来或需要永久保存。
• 输出量。
• 输出格式。
数据库的实施和维护
• 数据库数据的加载和试运行
• 数据库的运行和维护
数据库数据的加载和试运行
• 数据加载
• 在数据库系统中,一般数据量都很大,各应用
环境差异也很大 。
• 为了保证数据库中的数据正确、无误,必须十
分重视数据的校验工作。
• 在将数据输入系统进行数据转换过程中,应该
进行多次的校验。
• 对于重要的数据的校验更应该反复多次,确认
无误后再进入到数据库中。
数据库数据的加载和试运行
• 数据库的试运行
• 在有一部分数据加载到数据库之后,就可以开始
对数据库系统进行联合调试了,这个过程又称为
数据库试运行。
• 这一阶段要实际运行数据库应用程序,执行对数
据库的各种操作,测试应用程序的功能是否满足
设计要求。如果不满足,则要对应用程序进行修
改、调整,直到达到设计要求为止。
• 在数据库试运行阶段,还要对系统的性能指标进
行测试,分析其是否达到设计目标。
数据库的运行和维护
• 数据库投入运行标志着开发工作的基本完成
和维护工作的开始,数据库只要存在一天,
就需要不断地对它进行评价、调整和维护。
• 在数据库运行阶段,对数据库的经常性的维
护工作主要由数据库系统管理员完成,其主
要工作包括:
• 数据库的备份和恢复
• 数据库的安全性和完整性控制
• 监视、分析、调整数据库性能
• 数据库的重组