西华师范大学计算机学院
第六章 数据库设计 (续 -3)
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.5 数据库的物理设计
? 什么是数据库的物理设计
– 数据库在物理设备上的存储结构与存取方法
称为数据库的物理结构,它依赖于给定的计
算机系统。
– 为一个给定的逻辑数据模型选取一个最适合
应用环境的物理结构的过程,就是数据库的
物理设计,也就是设计数据库的内模式。
数据库物理设计的步骤
数据库物理设计
确定数
据库的
物理结
构
评价数据
库的物理
结构逻辑结
构设计
数据库
实施
物理
模型
逻辑
模型
评价的重点是时间和空间效率
满足原设计要求
重新设计或修改
修改数据模型
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.1 数据库的物理设计的内容和方法
? 设计物理数据库结构的准备工作
– 1,充分了解应用环境,详细分析要运行的事
务,以获得选择物理数据库设计所需参数
– 2,充分了解所用 RDBMS的内部特征,特别
是系统提供的存取方法和存储结构
数据库的物理设计的内容和方法(续)
? 选择物理数据库设计所需参数
– 数据库查询事务
? 查询的关系
? 查询条件所涉及的属性
? 连接条件所涉及的属性
? 查询的投影属性
数据库的物理设计的内容和方法(续)
? 选择物理数据库设计所需参数 (续 )
– 数据更新事务
? 被更新的关系
? 每个关系上的更新操作条件所涉及的属性
? 修改操作要改变的属性值
– 每个事务在各关系上运行的频率和性能要求
数据库的物理设计的内容和方法(续)
? 关系数据库物理设计的内容
– 1,为关系模式选择 存取方法 (建立存取路径 )
– 2,设计关系、索引等数据库文件的 物理存储
结构
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.2 关系模式存取方法选择
? 数据库系统是多用户共享的系统,对同
一个关系要建立多条存取路径才能满足
多用户的多种应用要求。
? 物理设计的第一个任务就是要确定选择
哪些存取方法,即建立哪些存取路径。
关系模式存取方法选择(续)
? DBMS常用存取方法
– 索引方法,目前主要是 B+树索引方法
– 聚簇( Cluster)方法
– HASH方法
一、索引存取方法的选择
? 选择索引存取方法的主要内容
根据应用要求确定
– 对哪些属性列建立索引
– 对哪些属性列建立组合索引
– 对哪些索引要设计为唯一索引
索引存取方法的选择(续)
? 选择索引存取方法的一般规则
– 如果一个 (或一组 )属性经常在查询条件中出现,则
考虑在这个 (或这组 )属性上建立索引 (或组合索引 )
– 如果一个属性经常作为最大值和最小值等聚集函数
的参数,则考虑在这个属性上建立索引
– 如果一个 (或一组 )属性经常在连接操作的连接条件
中出现,则考虑在这个 (或这组 )属性上建立索引
索引存取方法的选择(续)
? 关系上定义的索引数过多会带来较
多的额外开销
– 维护索引的开销
– 查找索引的开销
二、聚簇存取方法的选择
? 什么是聚簇(簇集)
– 为了提高某个属性(或属性组)的查询速度,把这个或
这些属性(称为聚簇码)上具有相同值的元组集中存放
在一个物理块内或物理上相邻的区域内称为聚簇
– 例,设有一关系 TEACHER(教师 ),其上建有 YR(出生
年份 )的索引。 若要查询 1948年出生的教师,设 1948年
出生的教师有 100人,在极端情况下,这 100个教师所
对应的元组分散在 100个不同的物理块中。
? 在做这种查询时, 即使不考虑访问索引的 I/O次数,
访问数据也得要 100次 I/O,因为每访问一个物理
块需要一次 I/O操作 。
? 如果按出生年份集中存放了 TEACHER元组, 则
每取一个物理块, 就可以获得多个合乎查询条件
的元组, 从而显著地减少访问磁盘的次数 。
? 现代的 DBMS一般允许按某一簇集键 (Cluster Key)
集中存放元组, 这种簇集键可以是复合的 。 具
有同一簇集键值的元组, 尽可能放在同一物理块
中 。 如果放不下, 可以向预留的空白区发展,
或链接多个物理块 。 簇集后的元组好像葡萄一样
按串存放, 簇集之名由此而来 。
建立聚簇索引 (复习)
? 聚簇索引
– 建立聚簇索引后, 基表中数据也需要按指定的
聚簇属性值的升序或降序存放 。 也即聚簇索引
的索引项顺序与表中元组的物理顺序一致 。
例:
CREATE CLUSTER INDEX Stusname ON Student(Sname);
在 Student表的 Sname( 姓名 ) 列上建立一个聚
簇索引, 而且 Student表中的记录将按照 Sname值的升
序存放
建立聚簇索引 (复习)
– 在一个基本表上最多只能建立一个聚簇索引
– 聚簇索引的用途:对于某些类型的查询,可
以提高查询效率
– 聚簇索引的适用范围
? 很少对基表进行增删操作
? 很少对其中的变长列进行修改操作
聚簇存取方法的选择(续)
? 聚簇的用途
– 1,大大提高按聚簇属性进行查询的效率
– 2,节省存储空间
? 聚簇以后,聚簇码相同的元组集中在一起了,
因而聚簇码值不必在每个元组中重复存储,
只要在一组中存一次就行了
聚簇存取方法的选择(续)
? 聚簇的局限性
– 1,聚簇只能提高某些特定应用的性能
– 2,建立与维护聚簇的开销相当大
? 对已有关系建立聚簇,将导致关系中元组
移动其物理存储位置,并使此关系上原有
的索引无效,必须重建。
? 当一个元组的聚簇码改变时,该元组的存
储位置也要做相应移动。
聚簇存取方法的选择(续)
? 聚簇的适用范围
– 1,既适用于单个关系独立聚簇,也适用于多个关系组合
聚簇
例:假设用户经常要按系别查询学生成绩单,这一查询
涉及学生关系和选修关系的连接操作,即需要按学号连
接这两个关系,为提高连接操作的效率,可以把具有相
同学号值的学生元组和选修元组在物理上聚簇在一起。
这就相当于把多个关系按“预连接”的形式存放,从而
大大提高连接操作的效率。
聚簇存取方法的选择(续)
– 2,当通过聚簇码进行访问或连接是该关系的
主要应用,与聚簇码无关的其他访问很少或
者是次要的时,可以使用聚簇。
? 尤其当 SQL语句中包含有与聚簇码有关的
ORDER BY,GROUP BY,UNION,
DISTINCT等子句或短语时,使用聚簇特
别有利,可以省去对结果集的排序操作
聚簇存取方法的选择(续)
? 选择聚簇存取方法
– 1,设计候选聚簇
? 对经常在一起进行连接操作的关系可以建立组合
聚簇;
? 如果一个关系的一组属性经常出现在相等比较条
件中,则该单个关系可建立聚簇;
? 如果一个关系的一个 (或一组 )属性上的值重复率
很高,则此单个关系可建立聚簇。即对应每个聚
簇码值的平均元组数不太少。太少了,聚簇的效
果不明显。
聚簇存取方法的选择(续)
– 2,检查候选聚簇中的关系,取消其中不必要的关系
? 从独立聚簇中删除经常进行全表扫描的关系;
? 从独立 /组合聚簇中删除更新操作远多于查询操作
的关系;
? 从独立 /组合聚簇中删除重复出现的关系
– 当 一个关系同时加入多个聚簇 时,必须 从这多
个聚簇方案 (包括不建立聚簇 )中选择一个较优
的,即在这个聚簇上运行各种事务的总代价
最小。
三,HASH存取方法的选择
? 哈稀( HASH)文件又称为散列文件,是一种支持快速存取
的文件存储方法。 如果用该方式存储一个文件,必须指定文
件的一个(或一组)域为查询的关键字,该域常称为 HASH
域,然后定义一个 HASH域上的函数,即 HASH函数,以此
函数的值作为记录查询的地址。
? 选择 HASH存取方法的规则
– 当一个关系满足下列两个条件时,可以选择 HASH存取方
法
? 该关系的属性主要出现在 等值连接 条件中或主要出现在
相等比较 选择条件中
? 该关系的大小可预知,而且不变;或
该关系的大小动态改变,但所选用的 DBMS提供了动态
HASH存取方法。
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.3 确定数据库的存储结构
? 确定数据库物理结构的内容
– 1,确定数据的存放位置和存储结构
? 关系
? 索引
? 聚簇
? 日志
? 备份
– 2,确定系统配置
1,确定数据的存放位置
? 影响数据存放位置和存储结构的因素
– 硬件环境
– 应用需求
? 存取时间
? 存储空间利用率
? 维护代价
这三个方面常常是相互矛盾的
例:消除一切冗余数据虽能够节约存储空间和减少维
护代价,但往往会导致检索代价的增加
必须进行权衡,选择一个折中方案 。
确定数据的存放位置(续)
? 基本原则
– 根据应用情况将
? 易变 部分与 稳定 部分
? 存取频率较高 部分与 存取频率较低 部分
分开存放,以提高系统性能
确定数据的存放位置(续)
例:
? 数据库数据备份、日志文件备份等由于只
在故障恢复时才使用,而且数据量很大,
可以考虑存放在磁带上。
? 如果计算机有多个磁盘,可以考虑将表和
索引分别放在不同的磁盘上,在查询时,
由于两个磁盘驱动器分别在工作,因而可
以保证物理读写速度比较快。
确定数据的存放位置(续)
例(续):
? 可以将比较大的表分别放在两个磁盘上,
以加快存取速度,这在多用户环境下特别
有效。
? 可以将日志文件与数据库对象(表、索引
等)放在不同的磁盘以改进系统的性能。
2,确定系统配置
? DBMS产品一般都提供了一些存储分配参数
– 同时使用数据库的用户数
– 同时打开的数据库对象数
– 使用的缓冲区长度、个数
– 时间片大小
– 数据库的大小
– 装填因子
– 锁的数目
– 等等
确定系统配置(续)
? 系统都为这些变量赋予了合理的缺省值。但是
这些值不一定适合每一种应用环境,在进行物
理设计时,需要根据应用环境确定这些参数值,
以使系统性能最优。
? 在物理设计时对系统配置变量的调整只是初步
的,在系统运行时还要根据系统实际运行情况
做进一步的调整,以期切实改进系统性能。
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.4 评价物理结构
? 评价内容
– 对数据库物理设计过程中产生的多种方案进
行细致的评价,从中选择一个较优的方案作
为数据库的物理结构
6.5.4 评价物理结构
? 评价方法
– 定量估算各种方案
? 存储空间
? 存取时间
? 维护代价
– 对估算结果进行权衡、比较,选择出一个较优
的合理的物理结构
– 如果该结构不符合用户需求,则需要修改设计
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.6 数据库的实施
? 数据库实施的工作内容
– 用 DDL定义数据库结构
– 组织数据入库
– 编制与调试应用程序
– 数据库试运行
数据库实施
定义数
据库结
构
数据
装载
数据库
试运行数据库物
理设计 数据库运行和维护
物理
模型
编制与
调试应
用程序
数据库
系统
一、定义数据库结构
? 确定了数据库的逻辑结构与物理结构后,
就可以用所选用的 DBMS提供的数据定
义语言( DDL)来严格描述数据库结构。
定义数据库结构(续)
例,对于前面的例子,可以用 SQL语句如下定义
表结构:
CREATE TABLE 学生
(学号 CHAR(8),
……………
);
CREATE TABLE 课程
(
……………
);
……………
定义数据库结构(续)
接下来是在这些基本表上定义视图:
CREATE VIEW,...
(
……………
);
……………
如果需要使用聚簇,在建基本表之前,应先用
CREATE CLUSTER语句定义聚族。
二、数据装载
? 数据库结构建立好后,就可以向数据库中装载
数据了。组织数据入库是数据库实施阶段最主
要的工作。
? 数据装载方法
– 人工方法
– 计算机辅助数据入库
数据装载(续)
? 人工方法:适用于小型系统
– 步骤
1) 筛选数据 。需要装入数据库中的数据通常都分散在各个部
门的数据文件或原始凭证中,所以首先必须把需要入库的
数据筛选出来。
2) 转换数据格式 。筛选出来的需要入库的数据,其格式往往
不符合数据库要求,还需要进行转换。这种转换有时可能
很复杂。
3) 输入数据 。将转换好的数据输入计算机中。
4) 校验数据 。检查输入的数据是否有误。
数据装载(续)
? 计算机辅助数据入库:适用于中大型系统
– 步骤
1) 筛选数据
2) 输入数据 。由录入员将原始数据直接输入计
算机中。数据输入子系统应提供输入界面。
3) 校验数据 。数据输入子系统采用多种检验技
术检查输入数据的正确性。
数据装载(续)
4) 转换数据 。数据输入子系统根据数据库
系统的要求,从录入的数据中 抽取 有用成
分,对其进行 分类,然后 转换 数据格式。
抽取、分类和转换数据是数据输入子系统
的主要工作,也是数据输入子系统的复杂
性所在。
5) 综合数据 。数据输入子系统对转换好的
数据根据系统的要求进一步综合成最终数
据 。
数据装载(续)
– 如果数据库是在老的文件系统或数据库系统
的基础上设计的,则数据输入子系统只需要
完成转换数据、综合数据两项工作,直接将
老系统中的数据转换成新系统中需要的数据
格式。
– 为了保证数据能够及时入库,应在数据库物
理设计的同时编制数据输入子系统。
三、编制与调试应用程序
? 数据库应用程序的设计应该与数据设计并行进
行。
? 在数据库实施阶段,当数据库结构建立好后,
就可以开始编制与调试数据库的应用程序。调
试应用程序时由于数据入库尚未完成,可先使
用模拟数据。
四、数据库试运行
? 应用程序调试完成,并且已有一小部分数据入库
后,就可以开始数据库的试运行。
? 数据库试运行也称为联合调试,其主要工作包括:
1) 功能测试,实际运行应用程序,执行对数据
库的各种操作,测试应用程序的各种功能。
2) 性能测试,测量系统的性能指标,分析是否
符合设计目标 。
数据库试运行(续)
? 数据库性能指标的测量
– 数据库物理设计阶段在评价数据库结构估算时间、空间
指标时,作了许多简化和假设,忽略了许多次要因素,
因此结果必然很粗糙。
– 数据库试运行则是要实际测量系统的各种性能指标(不
仅是时间、空间指标),如果结果不符合设计目标,则
需要返回物理设计阶段,调整物理结构,修改参数;有
时甚至需要返回逻辑设计阶段,调整逻辑结构。
数据库试运行(续)
? 数据的分期入库
– 重新设计物理结构甚至逻辑结构,会导致数据重新入
库。
– 由于数据入库工作量实在太大,所以可以采用分期输
入数据的方法
? 先输入小批量数据供先期联合调试使用
? 待试运行基本合格后再输入大批量数据
? 逐步增加数据量,逐步完成运行评价
数据库试运行(续)
? 数据库的转储和恢复
– 在数据库试运行阶段,系统还不稳定,硬、
软件故障随时都可能发生
– 系统的操作人员对新系统还不熟悉,误操作
也不可避免
– 因此必须做好数据库的转储和恢复工作,尽
量减少对数据库的破坏。
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.7 数据库运行与维护
? 数据库试运行结果符合设计目标后,数据库就
可以真正投入运行了。
? 数据库投入运行标着开发任务的基本完成和维
护工作的开始
? 对数据库设计进行评价、调整、修改等维护工
作是一个长期的任务,也是设计工作的继续和
提高。
– 应用环境在不断变化
– 数据库运行过程中物理存储会不断变化
数据库运行与维护(续)
? 在数据库运行阶段,对数据库经常性的维护工作主要是由
DBA完成的,包括:
⒈数据库的转储和恢复
– 转储和恢复是系统正式运行后最重要的维护工作之一。
– DBA要针对不同的应用要求制定不同的转储计划,定期
对数据库和日志文件进行备份。
– 一旦发生介质故障,即利用数据库备份及日志文件备份,
尽快将数据库恢复到某种一致性状态。
数据库运行与维护(续)
⒉ 数据库的安全性、完整性控制
– DBA必须根据用户的实际需要授予不同的操作权限
– 在数据库运行过程中,由于应用环境的变化,对安全
性的要求也会发生变化,DBA需要根据实际情况修改
原有的安全性控制。
– 由于应用环境的变化,数据库的完整性约束条件也会
变化,也需要 DBA不断修正,以满足用户要求。
数据库运行与维护(续)
⒊ 数据库性能的监督、分析和改进
– 在数据库运行过程中,DBA必须监督系统运行,对监
测数据进行分析,找出改进系统性能的方法。
? 利用监测工具获取系统运行过程中一系列性能参数
的值
? 通过仔细分析这些数据,判断当前系统是否处于最
佳运行状态
? 如果不是,则需要通过调整某些参数来进一步改进
数据库性能
数据库运行与维护(续)
⒋ 数据库的重组织和重构造
1)数据库的重组织
– 为什么要重组织数据库
? 数据库运行一段时间后,由于记录的不断
增、删、改,会使数据库的物理存储变坏,
从而降低数据库存储空间的利用率和数据
的存取效率,使数据库的性能下降。
数据库运行与维护(续)
– 重组织的形式
? 全部重组织
? 部分重组织
–只对频繁增、删的表进行重组织
– 重组织的目标
? 提高系统性能
数据库运行与维护(续)
– 重组织的工作
? 按原设计要求
– 重新安排存储位置
– 回收垃圾
– 减少指针链
? 数据库的重组织不会改变原设计的数据逻
辑结构和物理结构
数据库运行与维护(续)
– DBMS一般都提供了供重组织数据库使用的
实用程序,帮助 DBA重新组织数据库。
数据库运行与维护(续)
2)数据库的重构造
– 为什么要进行数据库的重构造
? 数据库应用环境发生变化,会导致实体及
实体间的联系也发生相应的变化,使原有
的数据库设计不能很好地满足新的需求
–增加新的应用或新的实体
–取消某些已有应用
–改变某些已有应用
数据库运行与维护(续)
– 数据库重构造的主要工作
? 根据新环境调整数据库的模式和内模式
–增加新的数据项
–改变数据项的类型
–改变数据库的容量
–增加或删除索引
–修改完整性约束条件
数据库运行与维护(续)
– 重构造数据库的程度是有限的
? 若应用变化太大,已无法通过重构数据库
来满足新的需求,或重构数据库的代价太
大,则表明现有数据库应用系统的生命周
期已经结束,应该重新设计新的数据库系
统,开始新数据库应用系统的生命周期了。
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.8 小结
? 数据库的设计过程
– 需求分析
– 概念结构设计
– 逻辑结构设计
– 物理设计
– 实施
– 运行维护
设计过程中往往还会有许多反复。
小结(续)
? 数据库各级模式的形成
– 数据库的各级模式是在设计过程中逐步形成
的
– 需求分析阶段综合各个用户的应用需求(现
实世界的需求)。
– 概念设计阶段形成独立于机器特点、独立于
各个 DBMS产品的 概念模式 (信息世界模
型),用 E-R图来描述。
小结(续)
– 在逻辑设计阶段将 E-R图转换成具体的数据
库产品支持的数据模型如关系模型,形成数
据库 逻辑模式 。然后根据用户处理的要求,
安全性的考虑,在基本表的基础上再建立必
要的视图( VIEW)形成数据的 外模式 。
– 在物理设计阶段根据 DBMS特点和处理的需
要,进行物理存储安排,设计索引,形成数
据库 内模式 。
小结(续)
? 整个数据库设计过程体现了结构特征与
行为特征的紧密结合。
小结(续)
? 目前很多 DBMS都提供了一些辅助工具
( CASE工具),为加快数据库设计速度,设
计人员可根据需要选用。
例如需求分析完成之后,设计人员可以使用
ORACLE DESIGNER 2000画 E-R图,将 E-R
图转换为关系数据模型,生成数据库结构;
画数据流图,生成应用程序。
小结(续)
– 利用 CASE工具生成的仅仅是数据库应用系统的一
个雏形,比较粗糙,数据库设计人员需要根据用户
的应用需求进一步修改该雏形,使之成为一个完善
的系统。
– 早期就选择某种 CASE工具固然能减少数据库设计
的复杂性,加快数据库设计的速度,但往往容易将
自己限制于某一个 DBMS上,而不是根据概念设计
的结果选择合适的 DBMS。
第六章 数据库设计 (续 -3)
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.5 数据库的物理设计
? 什么是数据库的物理设计
– 数据库在物理设备上的存储结构与存取方法
称为数据库的物理结构,它依赖于给定的计
算机系统。
– 为一个给定的逻辑数据模型选取一个最适合
应用环境的物理结构的过程,就是数据库的
物理设计,也就是设计数据库的内模式。
数据库物理设计的步骤
数据库物理设计
确定数
据库的
物理结
构
评价数据
库的物理
结构逻辑结
构设计
数据库
实施
物理
模型
逻辑
模型
评价的重点是时间和空间效率
满足原设计要求
重新设计或修改
修改数据模型
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.1 数据库的物理设计的内容和方法
? 设计物理数据库结构的准备工作
– 1,充分了解应用环境,详细分析要运行的事
务,以获得选择物理数据库设计所需参数
– 2,充分了解所用 RDBMS的内部特征,特别
是系统提供的存取方法和存储结构
数据库的物理设计的内容和方法(续)
? 选择物理数据库设计所需参数
– 数据库查询事务
? 查询的关系
? 查询条件所涉及的属性
? 连接条件所涉及的属性
? 查询的投影属性
数据库的物理设计的内容和方法(续)
? 选择物理数据库设计所需参数 (续 )
– 数据更新事务
? 被更新的关系
? 每个关系上的更新操作条件所涉及的属性
? 修改操作要改变的属性值
– 每个事务在各关系上运行的频率和性能要求
数据库的物理设计的内容和方法(续)
? 关系数据库物理设计的内容
– 1,为关系模式选择 存取方法 (建立存取路径 )
– 2,设计关系、索引等数据库文件的 物理存储
结构
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.2 关系模式存取方法选择
? 数据库系统是多用户共享的系统,对同
一个关系要建立多条存取路径才能满足
多用户的多种应用要求。
? 物理设计的第一个任务就是要确定选择
哪些存取方法,即建立哪些存取路径。
关系模式存取方法选择(续)
? DBMS常用存取方法
– 索引方法,目前主要是 B+树索引方法
– 聚簇( Cluster)方法
– HASH方法
一、索引存取方法的选择
? 选择索引存取方法的主要内容
根据应用要求确定
– 对哪些属性列建立索引
– 对哪些属性列建立组合索引
– 对哪些索引要设计为唯一索引
索引存取方法的选择(续)
? 选择索引存取方法的一般规则
– 如果一个 (或一组 )属性经常在查询条件中出现,则
考虑在这个 (或这组 )属性上建立索引 (或组合索引 )
– 如果一个属性经常作为最大值和最小值等聚集函数
的参数,则考虑在这个属性上建立索引
– 如果一个 (或一组 )属性经常在连接操作的连接条件
中出现,则考虑在这个 (或这组 )属性上建立索引
索引存取方法的选择(续)
? 关系上定义的索引数过多会带来较
多的额外开销
– 维护索引的开销
– 查找索引的开销
二、聚簇存取方法的选择
? 什么是聚簇(簇集)
– 为了提高某个属性(或属性组)的查询速度,把这个或
这些属性(称为聚簇码)上具有相同值的元组集中存放
在一个物理块内或物理上相邻的区域内称为聚簇
– 例,设有一关系 TEACHER(教师 ),其上建有 YR(出生
年份 )的索引。 若要查询 1948年出生的教师,设 1948年
出生的教师有 100人,在极端情况下,这 100个教师所
对应的元组分散在 100个不同的物理块中。
? 在做这种查询时, 即使不考虑访问索引的 I/O次数,
访问数据也得要 100次 I/O,因为每访问一个物理
块需要一次 I/O操作 。
? 如果按出生年份集中存放了 TEACHER元组, 则
每取一个物理块, 就可以获得多个合乎查询条件
的元组, 从而显著地减少访问磁盘的次数 。
? 现代的 DBMS一般允许按某一簇集键 (Cluster Key)
集中存放元组, 这种簇集键可以是复合的 。 具
有同一簇集键值的元组, 尽可能放在同一物理块
中 。 如果放不下, 可以向预留的空白区发展,
或链接多个物理块 。 簇集后的元组好像葡萄一样
按串存放, 簇集之名由此而来 。
建立聚簇索引 (复习)
? 聚簇索引
– 建立聚簇索引后, 基表中数据也需要按指定的
聚簇属性值的升序或降序存放 。 也即聚簇索引
的索引项顺序与表中元组的物理顺序一致 。
例:
CREATE CLUSTER INDEX Stusname ON Student(Sname);
在 Student表的 Sname( 姓名 ) 列上建立一个聚
簇索引, 而且 Student表中的记录将按照 Sname值的升
序存放
建立聚簇索引 (复习)
– 在一个基本表上最多只能建立一个聚簇索引
– 聚簇索引的用途:对于某些类型的查询,可
以提高查询效率
– 聚簇索引的适用范围
? 很少对基表进行增删操作
? 很少对其中的变长列进行修改操作
聚簇存取方法的选择(续)
? 聚簇的用途
– 1,大大提高按聚簇属性进行查询的效率
– 2,节省存储空间
? 聚簇以后,聚簇码相同的元组集中在一起了,
因而聚簇码值不必在每个元组中重复存储,
只要在一组中存一次就行了
聚簇存取方法的选择(续)
? 聚簇的局限性
– 1,聚簇只能提高某些特定应用的性能
– 2,建立与维护聚簇的开销相当大
? 对已有关系建立聚簇,将导致关系中元组
移动其物理存储位置,并使此关系上原有
的索引无效,必须重建。
? 当一个元组的聚簇码改变时,该元组的存
储位置也要做相应移动。
聚簇存取方法的选择(续)
? 聚簇的适用范围
– 1,既适用于单个关系独立聚簇,也适用于多个关系组合
聚簇
例:假设用户经常要按系别查询学生成绩单,这一查询
涉及学生关系和选修关系的连接操作,即需要按学号连
接这两个关系,为提高连接操作的效率,可以把具有相
同学号值的学生元组和选修元组在物理上聚簇在一起。
这就相当于把多个关系按“预连接”的形式存放,从而
大大提高连接操作的效率。
聚簇存取方法的选择(续)
– 2,当通过聚簇码进行访问或连接是该关系的
主要应用,与聚簇码无关的其他访问很少或
者是次要的时,可以使用聚簇。
? 尤其当 SQL语句中包含有与聚簇码有关的
ORDER BY,GROUP BY,UNION,
DISTINCT等子句或短语时,使用聚簇特
别有利,可以省去对结果集的排序操作
聚簇存取方法的选择(续)
? 选择聚簇存取方法
– 1,设计候选聚簇
? 对经常在一起进行连接操作的关系可以建立组合
聚簇;
? 如果一个关系的一组属性经常出现在相等比较条
件中,则该单个关系可建立聚簇;
? 如果一个关系的一个 (或一组 )属性上的值重复率
很高,则此单个关系可建立聚簇。即对应每个聚
簇码值的平均元组数不太少。太少了,聚簇的效
果不明显。
聚簇存取方法的选择(续)
– 2,检查候选聚簇中的关系,取消其中不必要的关系
? 从独立聚簇中删除经常进行全表扫描的关系;
? 从独立 /组合聚簇中删除更新操作远多于查询操作
的关系;
? 从独立 /组合聚簇中删除重复出现的关系
– 当 一个关系同时加入多个聚簇 时,必须 从这多
个聚簇方案 (包括不建立聚簇 )中选择一个较优
的,即在这个聚簇上运行各种事务的总代价
最小。
三,HASH存取方法的选择
? 哈稀( HASH)文件又称为散列文件,是一种支持快速存取
的文件存储方法。 如果用该方式存储一个文件,必须指定文
件的一个(或一组)域为查询的关键字,该域常称为 HASH
域,然后定义一个 HASH域上的函数,即 HASH函数,以此
函数的值作为记录查询的地址。
? 选择 HASH存取方法的规则
– 当一个关系满足下列两个条件时,可以选择 HASH存取方
法
? 该关系的属性主要出现在 等值连接 条件中或主要出现在
相等比较 选择条件中
? 该关系的大小可预知,而且不变;或
该关系的大小动态改变,但所选用的 DBMS提供了动态
HASH存取方法。
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.3 确定数据库的存储结构
? 确定数据库物理结构的内容
– 1,确定数据的存放位置和存储结构
? 关系
? 索引
? 聚簇
? 日志
? 备份
– 2,确定系统配置
1,确定数据的存放位置
? 影响数据存放位置和存储结构的因素
– 硬件环境
– 应用需求
? 存取时间
? 存储空间利用率
? 维护代价
这三个方面常常是相互矛盾的
例:消除一切冗余数据虽能够节约存储空间和减少维
护代价,但往往会导致检索代价的增加
必须进行权衡,选择一个折中方案 。
确定数据的存放位置(续)
? 基本原则
– 根据应用情况将
? 易变 部分与 稳定 部分
? 存取频率较高 部分与 存取频率较低 部分
分开存放,以提高系统性能
确定数据的存放位置(续)
例:
? 数据库数据备份、日志文件备份等由于只
在故障恢复时才使用,而且数据量很大,
可以考虑存放在磁带上。
? 如果计算机有多个磁盘,可以考虑将表和
索引分别放在不同的磁盘上,在查询时,
由于两个磁盘驱动器分别在工作,因而可
以保证物理读写速度比较快。
确定数据的存放位置(续)
例(续):
? 可以将比较大的表分别放在两个磁盘上,
以加快存取速度,这在多用户环境下特别
有效。
? 可以将日志文件与数据库对象(表、索引
等)放在不同的磁盘以改进系统的性能。
2,确定系统配置
? DBMS产品一般都提供了一些存储分配参数
– 同时使用数据库的用户数
– 同时打开的数据库对象数
– 使用的缓冲区长度、个数
– 时间片大小
– 数据库的大小
– 装填因子
– 锁的数目
– 等等
确定系统配置(续)
? 系统都为这些变量赋予了合理的缺省值。但是
这些值不一定适合每一种应用环境,在进行物
理设计时,需要根据应用环境确定这些参数值,
以使系统性能最优。
? 在物理设计时对系统配置变量的调整只是初步
的,在系统运行时还要根据系统实际运行情况
做进一步的调整,以期切实改进系统性能。
6.5 数据库的物理设计
6.5.1 数据库的物理设计的内容和方法
6.5.2 关系模式存取方法选择
6.5.3 确定数据库的存储结构
6.5.4 评价物理结构
6.5.4 评价物理结构
? 评价内容
– 对数据库物理设计过程中产生的多种方案进
行细致的评价,从中选择一个较优的方案作
为数据库的物理结构
6.5.4 评价物理结构
? 评价方法
– 定量估算各种方案
? 存储空间
? 存取时间
? 维护代价
– 对估算结果进行权衡、比较,选择出一个较优
的合理的物理结构
– 如果该结构不符合用户需求,则需要修改设计
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.6 数据库的实施
? 数据库实施的工作内容
– 用 DDL定义数据库结构
– 组织数据入库
– 编制与调试应用程序
– 数据库试运行
数据库实施
定义数
据库结
构
数据
装载
数据库
试运行数据库物
理设计 数据库运行和维护
物理
模型
编制与
调试应
用程序
数据库
系统
一、定义数据库结构
? 确定了数据库的逻辑结构与物理结构后,
就可以用所选用的 DBMS提供的数据定
义语言( DDL)来严格描述数据库结构。
定义数据库结构(续)
例,对于前面的例子,可以用 SQL语句如下定义
表结构:
CREATE TABLE 学生
(学号 CHAR(8),
……………
);
CREATE TABLE 课程
(
……………
);
……………
定义数据库结构(续)
接下来是在这些基本表上定义视图:
CREATE VIEW,...
(
……………
);
……………
如果需要使用聚簇,在建基本表之前,应先用
CREATE CLUSTER语句定义聚族。
二、数据装载
? 数据库结构建立好后,就可以向数据库中装载
数据了。组织数据入库是数据库实施阶段最主
要的工作。
? 数据装载方法
– 人工方法
– 计算机辅助数据入库
数据装载(续)
? 人工方法:适用于小型系统
– 步骤
1) 筛选数据 。需要装入数据库中的数据通常都分散在各个部
门的数据文件或原始凭证中,所以首先必须把需要入库的
数据筛选出来。
2) 转换数据格式 。筛选出来的需要入库的数据,其格式往往
不符合数据库要求,还需要进行转换。这种转换有时可能
很复杂。
3) 输入数据 。将转换好的数据输入计算机中。
4) 校验数据 。检查输入的数据是否有误。
数据装载(续)
? 计算机辅助数据入库:适用于中大型系统
– 步骤
1) 筛选数据
2) 输入数据 。由录入员将原始数据直接输入计
算机中。数据输入子系统应提供输入界面。
3) 校验数据 。数据输入子系统采用多种检验技
术检查输入数据的正确性。
数据装载(续)
4) 转换数据 。数据输入子系统根据数据库
系统的要求,从录入的数据中 抽取 有用成
分,对其进行 分类,然后 转换 数据格式。
抽取、分类和转换数据是数据输入子系统
的主要工作,也是数据输入子系统的复杂
性所在。
5) 综合数据 。数据输入子系统对转换好的
数据根据系统的要求进一步综合成最终数
据 。
数据装载(续)
– 如果数据库是在老的文件系统或数据库系统
的基础上设计的,则数据输入子系统只需要
完成转换数据、综合数据两项工作,直接将
老系统中的数据转换成新系统中需要的数据
格式。
– 为了保证数据能够及时入库,应在数据库物
理设计的同时编制数据输入子系统。
三、编制与调试应用程序
? 数据库应用程序的设计应该与数据设计并行进
行。
? 在数据库实施阶段,当数据库结构建立好后,
就可以开始编制与调试数据库的应用程序。调
试应用程序时由于数据入库尚未完成,可先使
用模拟数据。
四、数据库试运行
? 应用程序调试完成,并且已有一小部分数据入库
后,就可以开始数据库的试运行。
? 数据库试运行也称为联合调试,其主要工作包括:
1) 功能测试,实际运行应用程序,执行对数据
库的各种操作,测试应用程序的各种功能。
2) 性能测试,测量系统的性能指标,分析是否
符合设计目标 。
数据库试运行(续)
? 数据库性能指标的测量
– 数据库物理设计阶段在评价数据库结构估算时间、空间
指标时,作了许多简化和假设,忽略了许多次要因素,
因此结果必然很粗糙。
– 数据库试运行则是要实际测量系统的各种性能指标(不
仅是时间、空间指标),如果结果不符合设计目标,则
需要返回物理设计阶段,调整物理结构,修改参数;有
时甚至需要返回逻辑设计阶段,调整逻辑结构。
数据库试运行(续)
? 数据的分期入库
– 重新设计物理结构甚至逻辑结构,会导致数据重新入
库。
– 由于数据入库工作量实在太大,所以可以采用分期输
入数据的方法
? 先输入小批量数据供先期联合调试使用
? 待试运行基本合格后再输入大批量数据
? 逐步增加数据量,逐步完成运行评价
数据库试运行(续)
? 数据库的转储和恢复
– 在数据库试运行阶段,系统还不稳定,硬、
软件故障随时都可能发生
– 系统的操作人员对新系统还不熟悉,误操作
也不可避免
– 因此必须做好数据库的转储和恢复工作,尽
量减少对数据库的破坏。
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.7 数据库运行与维护
? 数据库试运行结果符合设计目标后,数据库就
可以真正投入运行了。
? 数据库投入运行标着开发任务的基本完成和维
护工作的开始
? 对数据库设计进行评价、调整、修改等维护工
作是一个长期的任务,也是设计工作的继续和
提高。
– 应用环境在不断变化
– 数据库运行过程中物理存储会不断变化
数据库运行与维护(续)
? 在数据库运行阶段,对数据库经常性的维护工作主要是由
DBA完成的,包括:
⒈数据库的转储和恢复
– 转储和恢复是系统正式运行后最重要的维护工作之一。
– DBA要针对不同的应用要求制定不同的转储计划,定期
对数据库和日志文件进行备份。
– 一旦发生介质故障,即利用数据库备份及日志文件备份,
尽快将数据库恢复到某种一致性状态。
数据库运行与维护(续)
⒉ 数据库的安全性、完整性控制
– DBA必须根据用户的实际需要授予不同的操作权限
– 在数据库运行过程中,由于应用环境的变化,对安全
性的要求也会发生变化,DBA需要根据实际情况修改
原有的安全性控制。
– 由于应用环境的变化,数据库的完整性约束条件也会
变化,也需要 DBA不断修正,以满足用户要求。
数据库运行与维护(续)
⒊ 数据库性能的监督、分析和改进
– 在数据库运行过程中,DBA必须监督系统运行,对监
测数据进行分析,找出改进系统性能的方法。
? 利用监测工具获取系统运行过程中一系列性能参数
的值
? 通过仔细分析这些数据,判断当前系统是否处于最
佳运行状态
? 如果不是,则需要通过调整某些参数来进一步改进
数据库性能
数据库运行与维护(续)
⒋ 数据库的重组织和重构造
1)数据库的重组织
– 为什么要重组织数据库
? 数据库运行一段时间后,由于记录的不断
增、删、改,会使数据库的物理存储变坏,
从而降低数据库存储空间的利用率和数据
的存取效率,使数据库的性能下降。
数据库运行与维护(续)
– 重组织的形式
? 全部重组织
? 部分重组织
–只对频繁增、删的表进行重组织
– 重组织的目标
? 提高系统性能
数据库运行与维护(续)
– 重组织的工作
? 按原设计要求
– 重新安排存储位置
– 回收垃圾
– 减少指针链
? 数据库的重组织不会改变原设计的数据逻
辑结构和物理结构
数据库运行与维护(续)
– DBMS一般都提供了供重组织数据库使用的
实用程序,帮助 DBA重新组织数据库。
数据库运行与维护(续)
2)数据库的重构造
– 为什么要进行数据库的重构造
? 数据库应用环境发生变化,会导致实体及
实体间的联系也发生相应的变化,使原有
的数据库设计不能很好地满足新的需求
–增加新的应用或新的实体
–取消某些已有应用
–改变某些已有应用
数据库运行与维护(续)
– 数据库重构造的主要工作
? 根据新环境调整数据库的模式和内模式
–增加新的数据项
–改变数据项的类型
–改变数据库的容量
–增加或删除索引
–修改完整性约束条件
数据库运行与维护(续)
– 重构造数据库的程度是有限的
? 若应用变化太大,已无法通过重构数据库
来满足新的需求,或重构数据库的代价太
大,则表明现有数据库应用系统的生命周
期已经结束,应该重新设计新的数据库系
统,开始新数据库应用系统的生命周期了。
第六章 数据库设计
6.1 数据库设计概述
6.2 需求分析
6.3 概念结构设计
6.4 逻辑结构设计
6.5 数据库的物理设计
6.6 数据库实施
6.7 数据库运行与维护
6.8 小结
6.8 小结
? 数据库的设计过程
– 需求分析
– 概念结构设计
– 逻辑结构设计
– 物理设计
– 实施
– 运行维护
设计过程中往往还会有许多反复。
小结(续)
? 数据库各级模式的形成
– 数据库的各级模式是在设计过程中逐步形成
的
– 需求分析阶段综合各个用户的应用需求(现
实世界的需求)。
– 概念设计阶段形成独立于机器特点、独立于
各个 DBMS产品的 概念模式 (信息世界模
型),用 E-R图来描述。
小结(续)
– 在逻辑设计阶段将 E-R图转换成具体的数据
库产品支持的数据模型如关系模型,形成数
据库 逻辑模式 。然后根据用户处理的要求,
安全性的考虑,在基本表的基础上再建立必
要的视图( VIEW)形成数据的 外模式 。
– 在物理设计阶段根据 DBMS特点和处理的需
要,进行物理存储安排,设计索引,形成数
据库 内模式 。
小结(续)
? 整个数据库设计过程体现了结构特征与
行为特征的紧密结合。
小结(续)
? 目前很多 DBMS都提供了一些辅助工具
( CASE工具),为加快数据库设计速度,设
计人员可根据需要选用。
例如需求分析完成之后,设计人员可以使用
ORACLE DESIGNER 2000画 E-R图,将 E-R
图转换为关系数据模型,生成数据库结构;
画数据流图,生成应用程序。
小结(续)
– 利用 CASE工具生成的仅仅是数据库应用系统的一
个雏形,比较粗糙,数据库设计人员需要根据用户
的应用需求进一步修改该雏形,使之成为一个完善
的系统。
– 早期就选择某种 CASE工具固然能减少数据库设计
的复杂性,加快数据库设计的速度,但往往容易将
自己限制于某一个 DBMS上,而不是根据概念设计
的结果选择合适的 DBMS。