第 11 章 物理数据库设计
DESCRIPTION
第 11 章 物理数据库设计. 面向对象系统分析与设计 Joey F. George, Dinesh Batra, Joseph S. Valacich, Jeffrey A. Hoffer. 本章目标. 学习本章后应该能够: 设计数据库域 . 评估反规范化的情形 . 设计文件组织结构 . 设计对象关系特征. 11.1 物理数据库设计. 数据库设计的一部分,主要考虑数据访问的效率 数据处理速度,存储空间 , 和 数据操作 是物理数据库设计的关键内容. 有时,分析人员和设计人员可以由同一人员担任. 交付产品. 物理数据库设计的步骤. - PowerPoint PPT PresentationTRANSCRIPT
Chapter 11 11-1
第第 1111 章章 物理数据库设计物理数据库设计
面向对象系统分析与设计面向对象系统分析与设计Joey F. George, Dinesh Batra, Joey F. George, Dinesh Batra,
Joseph S. Valacich, Jeffrey A. HofferJoseph S. Valacich, Jeffrey A. Hoffer
Chapter 11 10-2
本章目标本章目标
学习本章后应该能够:学习本章后应该能够:
1.1. 设计数据库域设计数据库域 ..
2.2. 评估反规范化的情形评估反规范化的情形 ..
3.3. 设计文件组织结构设计文件组织结构 ..
4.4. 设计对象关系特征设计对象关系特征 ..
Chapter 11 11-3
Chapter 11 11-4
11.1 11.1 物理数据库设计物理数据库设计
数据库设计的一部分,主要考虑数据访数据库设计的一部分,主要考虑数据访
问的效率问的效率
数据处理速度,存储空间数据处理速度,存储空间 , , 和和数据操作数据操作
是物理数据库设计的关键内容是物理数据库设计的关键内容
Chapter 11 11-5
有时,分析人员和设计人员可以由同一人员担任
交付产品
Chapter 11 11-6
物理数据库设计的步骤物理数据库设计的步骤
Chapter 11 11-7
11.2 11.2 结构化查询语言结构化查询语言 SQLSQL
结构化查询语言可以读作结构化查询语言可以读作 “ “ sequel”sequel”
创建和使用关系型数据库的标准语言创建和使用关系型数据库的标准语言
ANSI ANSI 标准标准– SQL-92 – SQL-92 – 通用的通用的– SQL-99 – SQL-99 – 包含对象包含对象 -- 关系特征关系特征
Chapter 11 11-8
常用的常用的 SQLSQL 命令命令
1.1. CREATE TABLECREATE TABLE – – 用于定义表结构和实现表用于定义表结构和实现表
间的联接间的联接
2.2. INSERTINSERT – – 用于往表中增加新的行用于往表中增加新的行
3.3. SELECTSELECT – – 使用特殊格式或选择标准从表中使用特殊格式或选择标准从表中
抽取数据抽取数据
4.4. UPDATEUPDATE – – 用于对已有的表中数据的更新用于对已有的表中数据的更新
5.5. DELETEDELETE – used to remove rows from tables – used to remove rows from tables
Chapter 11 11-9
1. CREATE TABLE 1. CREATE TABLE 命令实例命令实例
一个名为一个名为 DEPTDEPT的表被创建的表被创建 , , 有一个数字域和有一个数字域和
两个文本域;其中的数字域为主键两个文本域;其中的数字域为主键 ..
Chapter 11 11-10
Chapter 11 11-11
2. INSERT2. INSERT 命令实例命令实例
这条命令往这条命令往 DEPTDEPT 表中插入一个新的行表中插入一个新的行
DEPTNODEPTNO 的值为的值为 5050
DNAMEDNAME 的值为的值为““ DESIGN”DESIGN”
LOCLOC 的值为的值为““ MIAMI”MIAMI”
Chapter 11 11-12
3. SELECT3. SELECT 命令命令①① SELECTSELECT 和和 FROMFROM命令字是必须的命令字是必须的 ..
②② 其它的命令字为可选其它的命令字为可选 ..
③③ WHERE WHERE 是比较常用的可选命令字是比较常用的可选命令字 ..
Chapter 11 11-13
Chapter 11 11-14
(1)SELECT (1)SELECT 命令实例命令实例 11
Select * from DEPT;Select * from DEPT;
结果结果 : DEPT: DEPT 表中的所有行和域表中的所有行和域
Chapter 11 11-15
(2)SELECT (2)SELECT 命令实例命令实例 22
Select * from EMP where ENAME = Select * from EMP where ENAME =
‘SMITH’;‘SMITH’;
结果结果 : : 雇员雇员““ Smith”Smith” 的所有域的所有域
Chapter 11 11-16
(3)SELECT (3)SELECT 命令实例命令实例 33
Select EMPNO, ENAME From EMP where Select EMPNO, ENAME From EMP where
JOB = ‘SALESMAN’ order by ENAME;JOB = ‘SALESMAN’ order by ENAME;
结果结果 : EMP: EMP 表中的工作为表中的工作为 salesmensalesmen 的所有雇的所有雇员编号、姓名和工作域员编号、姓名和工作域 , , 以姓名排序以姓名排序
Chapter 11 11-17
(4)(4) 连接操作连接操作
SELECT SELECT 命令实例命令实例 44
Select EMPNO, ENAME, DNAME from EMP, DEPT Select EMPNO, ENAME, DNAME from EMP, DEPT where EMP.DEPT_NO = DEPT.DEPT_NO and where EMP.DEPT_NO = DEPT.DEPT_NO and DEPT.LOC = ‘CHICAGO’;DEPT.LOC = ‘CHICAGO’;
Chapter 11 11-18
连接操作是将主表中的主键与关联表中的外键相匹连接操作是将主表中的主键与关联表中的外键相匹
配配 ..
结果结果 : : 所有雇员的编号和姓名所有雇员的编号和姓名 ((来自来自 EMPEMP表)表) , , 以以
及相关联的部门名称及相关联的部门名称 , , 通过基于通过基于 DEPT_NODEPT_NO的联接表的联接表
获取获取 ..
只有工作单位在只有工作单位在 ChicagoChicago 的雇员信息才会显示的雇员信息才会显示
Chapter 11 11-19
(5) (5) 聚集查询聚集查询
产生一系列记录的汇总信息的查询例如产生一系列记录的汇总信息的查询例如 sums, sums,
counts, or averagescounts, or averages
聚集功能体现在聚集功能体现在 SELECTSELECT 的的 (SUM, AVG, (SUM, AVG,
COUNT)COUNT) 子句中子句中
聚集可以使用聚集可以使用 HAVING HAVING 子句过滤或使用子句过滤或使用GROUP BY GROUP BY 子句分组子句分组
Chapter 11 11-20
SELECT SELECT 命令实例命令实例 55
Select JOB, Avg(SALARY) from EMP Group by Select JOB, Avg(SALARY) from EMP Group by
JOB Having Avg(SALARY) >= 3000;JOB Having Avg(SALARY) >= 3000;
EMPEMP 表中的每种工作的名称和平均薪水表中的每种工作的名称和平均薪水 ..
只有平均工资高于只有平均工资高于 $3000 $3000 会显示会显示
注意注意 clerks and salesmen clerks and salesmen 没有出现,是因为这些类没有出现,是因为这些类型的工作低于型的工作低于 $3000.$3000.
Chapter 11 11-21
4. 4. 数据操作数据操作 : Update & Delete: Update & Delete
①① Update EMP set SAL = 3000 where Update EMP set SAL = 3000 where
EMPNO = 7698;EMPNO = 7698;
修改现有雇员修改现有雇员 (7698)(7698) 的薪水的薪水
②② Delete from EMP where EMPNO = Delete from EMP where EMPNO =
78447844
将雇员将雇员 7844 7844 从从 EMP EMP 表中移除表中移除
Chapter 11 11-22
11.3 11.3 设计域设计域域域 – – 诸如诸如 DBMSDBMS 类的系统软件所能识别类的系统软件所能识别的应用数据的最小单位的应用数据的最小单位
在概念和逻辑数据模型中域一般被识别为在概念和逻辑数据模型中域一般被识别为 属性属性
设计域时应考虑设计域时应考虑 identityidentity 标识符标识符 , , 数据类数据类型型 , , 大小大小和和限制限制
Chapter 11 11-23
11.3.1 11.3.1 选择数据类型选择数据类型(1) (1) 数据类型数据类型 – –由系统软件识别的表示组织由系统软件识别的表示组织
数据的一种编码模式数据的一种编码模式
Chapter 11 11-24
(2) (2) 选择数据类型时应考虑的问题选择数据类型时应考虑的问题
在下列四个目标之间平衡在下列四个目标之间平衡 ::
1.1. 最小化存储空间最小化存储空间
2.2. 表示域的所有可能值表示域的所有可能值
3.3. 提高域的数据完整性提高域的数据完整性
4.4. 支持域上想要的所有数据操作支持域上想要的所有数据操作
Chapter 11 11-25
实例实例 : : 将一个复合属性映射到多个有不同数据类型将一个复合属性映射到多个有不同数据类型的域的域
(3)(3)创建和使用复合数据类型创建和使用复合数据类型
Chapter 11 11-26
Chapter 11 11-27
11.3.2 11.3.2 控制数据完整性控制数据完整性
I.I. 缺省值缺省值 – – 没有明确输入一个域的值时采用的值没有明确输入一个域的值时采用的值
II.II. 格式控制格式控制 – – 限制域中各个位置的宽度和可能值限制域中各个位置的宽度和可能值
III.III. 范围控制范围控制 – – 取值必须在允许的范围内取值必须在允许的范围内
IV.IV. 参照完整性参照完整性 – – 外键与主键的匹配外键与主键的匹配
V.V. 空值控制空值控制 – – 决定域的取值能否为空决定域的取值能否为空
Chapter 11 11-28
参照完整性是非常重要的,它能确保数据间的关系是准确而一致的
Chapter 11 11-29
11.4 11.4 设计物理表和反规范化设计物理表和反规范化
I.I. 外键外键是物理数据库设计中的主要方法是物理数据库设计中的主要方法
II.II. 物理数据库设计不同于逻辑设计物理数据库设计不同于逻辑设计 (( 规范规范化化 ))
III.III.物理数据库设计的目标物理数据库设计的目标 : : 使用主存使用主存 & &
处理速度处理速度
Chapter 11 11-30
IV.IV. 反规范化反规范化 是根据行和域是根据行和域 使用的密切关使用的密切关
系并根据表的检索和更新频率将规范化系并根据表的检索和更新频率将规范化
关系合并为物理表的过程。关系合并为物理表的过程。
V.V. 反规范化提升了访问的速度,但是降低反规范化提升了访问的速度,但是降低
了数据集成度并且增加了数据冗余;因了数据集成度并且增加了数据冗余;因
此要根据访问实践判断是否应该使用反此要根据访问实践判断是否应该使用反
规范化。规范化。
Chapter 11 11-31
这会导致某些行的应用数据产生空值这会导致某些行的应用数据产生空值 ..
反规范化情况反规范化情况 1:1:
Chapter 11 11-32
反规范化情形反规范化情形 2:2:
Chapter 11 11-33
这将导致在这将导致在 CanSupplyDRCanSupplyDR 表中的某些行中商品数据的描表中的某些行中商品数据的描述出现重复述出现重复 ..
Chapter 11 11-34
regionManager regionManager 数据重复数据重复
反规范化情形反规范化情形 3:3:
Chapter 11 11-35
11.5 11.5 文件组织文件组织
I.I. 文件组织文件组织 : : 物理地安排一个文件的行对物理地安排一个文件的行对象的技术象的技术
II.II.文件组织的主要目的是文件组织的主要目的是优化数据访问速优化数据访问速度度 和和 改善性能改善性能
Chapter 11 11-36
Chapter 11 11-37
11.5.1 11.5.1 辅助存储器概念辅助存储器概念
块块 :从辅助存储器中检索数据的单位:从辅助存储器中检索数据的单位
盘区盘区 :一组连续的块:一组连续的块
扫描扫描 :从块到快对文件的一次完整读取:从块到快对文件的一次完整读取
分块因子分块因子 :可以装入一个快的行对象数:可以装入一个快的行对象数
目目
Chapter 11 11-38
读取块的时间取决于寻道、旋转和传送读取块的时间取决于寻道、旋转和传送 ..
平均扫描时间平均扫描时间 = = 表中的行数目表中的行数目 ÷÷ 分块因子分块因子 × ×
读取块的时间读取块的时间
Chapter 11 11-39
什么是堆什么是堆 ??
没有组织结构的文件没有组织结构的文件
要提取数据就必须对整个表进行扫描要提取数据就必须对整个表进行扫描
堆只适用于小型的缓冲表堆只适用于小型的缓冲表
Chapter 11 11-40
11.5.2 11.5.2 散列文件组织散列文件组织
使用一种算法将一个键值转换为一个逻使用一种算法将一个键值转换为一个逻辑行地址的技术辑行地址的技术
对随机存取非常有用对随机存取非常有用 , , 但是对顺序存取但是对顺序存取
没有用没有用
Chapter 11 11-41
11.5.3 11.5.3 索引文件组织索引文件组织包含索引的存储结构包含索引的存储结构 , , 索引是指向行地索引是指向行地址的键值和指针址的键值和指针
索引文件组织可以实现快速的随机和顺索引文件组织可以实现快速的随机和顺序访问序访问
索引后的文件可以实现快速查询索引后的文件可以实现快速查询 , , 但需但需要额外的空间用于插入、删除和修改要额外的空间用于插入、删除和修改
Chapter 11 11-42
使用使用 B+ B+ 树索引的随机访问处理树索引的随机访问处理索引通常以索引通常以 B+ B+ 树的方式实现树的方式实现B+B+树就是平衡树树就是平衡树 , , 当记录被添加时保留顺序的升序当记录被添加时保留顺序的升序 ..
10ms
10ms
10ms
Chapter 11 11-43
使用索引的顺序处理使用索引的顺序处理– 索引时间索引时间 =20ms+n×10ms=(n+2)×10ms≈ =20ms+n×10ms=(n+2)×10ms≈
n×10msn×10ms
– 当索引时间低于扫描时间当索引时间低于扫描时间 , , 就应该采用索引就应该采用索引
结构组织文件结构组织文件
使用索引处理范围查询使用索引处理范围查询– 当范围很小时当范围很小时 , , 应采用索引应采用索引
– 当索引时间小于扫描时间当索引时间小于扫描时间 ,, 应采用索引应采用索引
Chapter 11 11-44
选择文件组织时要考虑的因素选择文件组织时要考虑的因素
文件大小文件大小
数据查询的频率数据查询的频率
数据更新的频率数据更新的频率
与主键和外键相关的因素与主键和外键相关的因素
与非键属性相关的因素与非键属性相关的因素
Chapter 11 11-45
使用索引的启发式方法使用索引的启发式方法
Chapter 11 11-46
11.6 11.6 对象关系特征的设计对象关系特征的设计
对象对象 -- 关系数据库可以支持关系数据库可以支持 ::
– 泛化和继承泛化和继承
– 聚合多值属性聚合多值属性
– 对象标识符对象标识符
– 引用关系引用关系 ((指针指针 ))
Chapter 11 11-47
11.6.1 11.6.1 泛化泛化 ((基于基于 Oracle 9i/10g)Oracle 9i/10g)
Chapter 11 11-48
11.6.2 11.6.2 聚合聚合 ((基于基于 Oracle 9i/10g)Oracle 9i/10g)
Chapter 11 11-49
11.6.3 11.6.3 多值属性多值属性 ((基于基于 Oracle Oracle
9i/10g)9i/10g)
Chapter 11 11-50
11.6.4 11.6.4 对象标识符对象标识符 ((基于基于 Oracle 9i/10g)Oracle 9i/10g)
Select REF(E), EmpName from HOURLY_EMP ESelect REF(E), EmpName from HOURLY_EMP E
Chapter 11 11-51
11.6.5 11.6.5 引用关系引用关系
Chapter 11 11-52
本章小结本章小结
学习本章后应该能够学习本章后应该能够
1.1. 设计数据库域设计数据库域 ..
2.2. 评估反规范化情形评估反规范化情形 ..
3.3. 设计文件组织结构设计文件组织结构 ..
4.4. 设计对象设计对象 -- 关系特征关系特征 ..