书籍详情
数据库系统基础:初级篇(第5版)
作者:(美)埃尔姆斯里(Elmasri,R.),(美)内瓦西(Navathe,S.B.) 著,邵佩英,徐俊刚,王文杰 等译
出版社:人民邮电出版社
出版时间:2007-09-01
ISBN:9787115164087
定价:¥55.00
购买这本书可以去
内容简介
本书是一本讲述数据库系统原理的教材,重点强调数据库建模与设计的基础、数据库管理系统提供的语言和工具以及系统实现技术。全书共分4个部分,第一部分介绍最基本的概念、术语及建模原则,第二部分描述了关系数据模型和关系型DBMS,第三部分讨论数据库设计,第四部分主要描述数据库系统中使用的物理文件结构和存取方法。书中涉及的内容非常广泛,包括DBMS的概念、术语和体系结构,ER模型和ER图,数据抽象和语义数据建模,UML类图表示法,基本关系模型,关系代数和关系演算,SQL,规范化,磁盘上组织记录文件的主要方法,文件的索引技术,查询处理与优化,以及物理数据库的设计与调优。 本书是高等院校计算机及相关专业本科生数据库系统课程的理想教材,也是对相关技术人员非常有价值的参考书。
作者简介
Ramez elmasri是世界知名的数据库学者。现任得克萨斯大学职灵顿分校计算机科学与工程系教授。1980年于斯坦福大学获得计算机科学硕士和博士学位。他的主要研究方向是数据库系统、时间数据库、概念建模、面向对象数据库、Wed建模和本体论数据库模型和语言、DBMS系统实现、检索技术等。
目录
第一部分 引言与概念建模
第1章 数据库与数据库用户 2
1.1 引言 2
1.2 一个示例 4
1.3 数据库方法的特征 6
1.3.1 数据库系统的自描述性 7
1.3.2 程序与数据分离和数据抽象 7
1.3.3 支持数据的多视图 9
1.3.4 数据共享和多用户事务处理 9
1.4 幕前角色 10
1.4.1 数据库管理员 10
1.4.2 数据库设计者 10
1.4.3 最终用户 10
1.4.4 系统分析员和应用程序员(软件工程师) 11
1.5 幕后工作者 11
1.6 使用DBMS方法的优势 12
1.6.1 控制冗余 12
1.6.2 限制非授权的访问 12
1.6.3 为程序对象提供持久性存储 13
1.6.4 提供高效查询处理的存储结构 13
1.6.5 提供备份与恢复 14
1.6.6 提供多用户界面 14
1.6.7 表示数据间复杂联系 14
1.6.8 确保完整性约束 14
1.6.9 允许使用规则进行推理和动作 15
1.6.10 使用数据库方法的其他含义 15
1.7 数据库应用简史 16
1.7.1 使用分层和网状系统的早期数据库应用 16
1.7.2 关系数据库提供应用灵活性 16
1.7.3 面向对象的应用和对更复杂数据库的需求 16
1.7.4 在Web上交换数据实现电子商务 17
1.7.5 为新应用扩展数据库功能 17
1.7.6 数据库与信息检索 17
1.8 什么时候不应该使用DBMS 18
1.9 小结 18
复习题 18
练习题 19
选读文献 19
第2章 数据库系统的概念和体系结构 20
2.1 数据模型、模式和实例 20
2.1.1 数据模型的分类 21
2.1.2 模式、实例和数据库状态 21
2.2 三层模式体系结构和数据独立性 23
2.2.1 三层模式体系结构 23
2.2.2 数据独立性 24
2.3 数据库语言和界面 25
2.3.1 DBMS的语言 25
2.3.2 DBMS界面 26
2.4 数据库系统的环境 27
2.4.1 DBMS的组成模块 27
2.4.2 数据库系统实用工具 29
2.4.3 工具、应用环境和通信软件 29
2.5 DBMS的集中式和客户/服务器体系结构 30
2.5.1 集中式DBMS体系结构 30
2.5.2 基本的客户/服务器体系结构 31
2.5.3 DBMS两层客户/服务器体系结构 32
2.5.4 面向Web应用的三层和n层体系结构 32
2.6 数据库管理系统的分类 33
2.7 小结 35
复习题 36
练习题 36
选读文献 37
第3章 使用实体-联系(ER)模型的数据建模 38
3.1 使用高级概念数据模型进行数据库设计 39
3.2 一个数据库应用示例 40
3.3 实体类型、实体集、属性和码 40
3.3.1 实体和属性 41
3.3.2 实体类型、实体集、码和值集 43
3.3.3 COMPANY数据库的初步概念设计 45
3.4 联系类型、联系集、角色和结构约束 46
3.4.1 联系类型、联系集和联系实例 47
3.4.2 联系度、角色名称和递归联系 48
3.4.3 联系类型的约束 49
3.4.4 联系类型的属性 50
3.5 弱实体类型 51
3.6 COMPANY数据库ER设计的改进 52
3.7 ER图、命名约定和设计问题 53
3.7.1 ER图表示法小结 53
3.7.2 模式结构的正确命名 53
3.7.3 ER概念设计的设计选择 54
3.7.4 ER图的候选表示法 55
3.8 其他表示法示例:UML类图 55
3.9 高于2度的联系类型 57
3.9.1 对二元和三元(或高度)联系的选择 57
3.9.2 三元(或高度)联系上的约束 60
3.10 小结 60
复习题 61
练习题 61
实验题 66
选读文献 66
第4章 增强的实体-联系(EER)建模 68
4.1 子类、超类和继承 68
4.2 特化和泛化 69
4.2.1 特化 69
4.2.2 泛化 71
4.3 特化和泛化层次的约束和特征 71
4.3.1 特化与泛化的约束 72
4.3.2 特化和泛化的层次和格 73
4.3.3 利用特化与泛化改进概念模型 75
4.4 采用类别的并类型建模 76
4.5 示例UNIVERSITY的EER模式设计选择和形式化定义 78
4.5.1 UNIVERSITY数据库示例 78
4.5.2 特化/泛化的设计选择 79
*4.5.3 EER模型概念的形式化定义 80
4.6 其他表示法的示例:UML类图中的特化/泛化 81
4.7 数据抽象、知识表示和本体论概念 82
4.7.1 分类和实例化 82
4.7.2 标识 83
4.7.3 特化和泛化 83
4.7.4 聚集和关联 83
4.7.5 本体论和语义网 85
4.8 小结 86
复习题 86
练习题 86
实验题 91
选读文献 93
第二部分 关系模型:概念、约束、语言、设计和编程
第5章 关系数据模型和关系数据库约束 96
5.1 关系模型概念 96
5.1.1 域、属性、元组和关系 97
5.1.2 关系的特性 99
5.1.3 关系模型表示法 101
5.2 关系模型约束和关系数据库模式 101
5.2.1 域约束 102
5.2.2 码约束和NULL值约束 102
5.2.3 关系数据库和关系数据库模式 103
5.2.4 实体完整性、参照完整性和外码 104
5.2.5 其他类型的约束 106
5.3 更新操作、事务和处理违例约束 107
5.3.1 插入操作 107
5.3.2 删除操作 108
5.3.3 更新操作 109
5.3.4 事务的概念 109
5.4 小结 109
复习题 110
练习题 110
选读文献 113
第6章 关系代数和关系演算 114
6.1 一元关系操作:SELECT和PROJECT 115
6.1.1 SELECT操作 115
6.1.2 PROJECT操作 116
6.1.3 操作序列和RENAME操作 117
6.2 基于集合论的关系代数操作 118
6.2.1 UNION、INTERSECTION和MINUS操作 118
6.2.2 笛卡儿积(或叉积)操作 120
6.3 二元关系操作:JOIN和DIVISION 121
6.3.1 JOIN操作 121
6.3.2 JOIN的变体EQUIJOIN和NATURAL JOIN 122
6.3.3 关系代数操作的完备集 124
6.3.4 DIVISION操作 124
6.3.5 查询树表示法 126
6.4 其他关系操作 127
6.4.1 广义投影 127
6.4.2 聚集函数和分组 127
6.4.3 递归闭包操作 128
6.4.4 OUTER JOIN操作 130
6.4.5 OUTER UNION操作 130
6.5 关系代数中的查询示例 131
6.6 元组关系演算 133
6.6.1 元组变量和值域关系 133
6.6.2 元组关系演算中的表达式与公式 134
6.6.3 存在量词与全称量词 134
6.6.4 使用存在量词的查询示例 135
6.6.5 查询图表示法 136
6.6.6 全称量词与存在量词的转换 137
6.6.7 使用全称量词 137
6.6.8 安全表达式 138
6.7 域关系演算 139
6.8 小结 140
复习题 141
练习题 141
实验题 144
选读文献 146
第7章 使用ER到关系的映射和EER到关系的映射进行关系数据库设计 147
7.1 使用ER到关系的映射进行关系数据库设计 147
7.1.1 ER到关系的映射算法 147
7.1.2 ER模型构造映射的讨论和总结 151
7.2 EER模型构造到关系的映射 152
7.2.1 特化或泛化的映射 153
7.2.2 共享子类(多重继承)的映射 154
7.2.3 类别的映射(并类型) 155
7.3 小结 156
复习题 156
练习题 156
实验题 157
选读文献 157
第8章 SQL-99:模式定义、约束、查询和视图 158
8.1 SQL数据定义和数据类型 159
8.1.1 SQL2中模式和目录的概念 159
8.1.2 SQL的CREATE TABLE命令 160
8.1.3 SQL中的属性数据类型和域 161
8.2 在SQL中定义约束 162
8.2.1 指定属性约束和属性默认值 162
8.2.2 指定码和参照完整性约束 163
8.2.3 为约束命名 164
8.2.4 使用CHECK指定元组约束 164
8.3 SQL中的模式更改语句 165
8.3.1 DROP命令 165
8.3.2 ALTER命令 165
8.4 SQL中的基本查询 166
8.4.1 基本SQL查询的SELECT-FROM- WHERE结构 166
8.4.2 多义属性名、别名和元组变量 168
8.4.3 未指定WHERE子句的查询语句和星号(*)的用法 170
8.4.4 SQL中作为集合的表 170
8.4.5 子串样式匹配和算术操作符 172
8.4.6 查询结果排序 173
8.5 更复杂的SQL查询 173
8.5.1 包含NULL和三值逻辑的比较 173
8.5.2 嵌套查询、元组与集/多集比较 174
8.5.3 关联嵌套查询 176
8.5.4 SQL中的EXISTS和UNIQUE函数 177
8.5.5 SQL中的显式集合和属性重新命名 178
8.5.6 SQL中的连接表和外连接 179
8.5.7 SQL中的聚集函数 180
8.5.8 分组:GROUP BY和HAVING子句 181
8.5.9 SQL查询的讨论与小结 183
8.6 SQL中的插入、删除和更新语句 184
8.6.1 INSERT命令 184
8.6.2 DELETE命令 185
8.6.3 UPDATE命令 186
8.7 指定约束作为断言和触发器 186
8.8 SQL中的视图(虚表) 187
8.8.1 SQL中视图的概念 187
8.8.2 SQL中的视图规范 188
8.8.3 视图的实现和更新 188
8.9 SQL的其他特性 190
8.10 小结 190
复习题 192
练习题 192
实验题 194
选读文献 195
第9章 SQL程序设计技术简介 197
9.1 数据库程序设计:问题与技术 197
9.1.1 数据库程序设计方法 198
9.1.2 阻抗失配 198
9.1.3 数据库程序设计中的典型交互序列 199
9.2 嵌入式SQL、动态SQL和SQLJ 199
9.2.1 用嵌入式SQL检索单个元组 199
9.2.2 在嵌入式SQL中使用游标检索多个元组 202
9.2.3 使用动态SQL在运行时指定查询 203
9.2.4 SQLJ:Java中嵌入SQL命令 204
9.2.5 SQLJ中使用迭代器检索多个元组 206
9.3 使用函数调用的数据库程序设计:SQL/CLI和JDBC 207
9.3.1 以C语言为宿主语言,使用SQL/CLI进行数据库程序设计 208
9.3.2 JDBC:面向Java程序设计的SQL函数调用 211
9.4 数据库存储过程与SQL/PSM 214
9.4.1 数据库存储过程和函数 214
9.4.2 SQL/PSM: 扩展SQL以指定持久存储模块 215
9.5 小结 216
复习题 216
练习题 216
实验题 217
选读文献 218
第三部分 数据库设计理论和方法学
第10章 函数依赖和关系数据库的规范化 220
10.1 关系模式的非形式化设计准则 221
10.1.1 给予关系中的属性以清晰的语义 221
10.1.2 元组中的冗余信息和更新异常 223
10.1.3 元组中的NULL值 225
10.1.4 生成寄生元组 226
10.1.5 总结和讨论设计准则 227
10.2 函数依赖 228
10.2.1 函数依赖的定义 228
10.2.2 函数依赖的推理规则 229
10.2.3 函数依赖集的等价 232
10.2.4 最小函数依赖集 232
10.3 基于主码的范式 233
10.3.1 关系的规范化 233
10.3.2 范式的实际使用 234
10.3.3 码的定义和参与码的属性 234
10.3.4 第一范式 235
10.3.5 第二范式 238
10.3.6 第三范式 239
10.4 第二范式和第三范式的通用定义 239
10.4.1 第二范式的通用定义 240
10.4.2 第三范式的通用定义 241
10.4.3 解释第三范式的通用定义 241
10.5 Boyce-Codd范式 241
10.6 小结 243
复习题 244
练习题 244
实验题 247
选读文献 248
第11章 关系数据库设计算法和其他依赖 249
11.1 关系分解的性质 250
11.1.1 关系分解和范式的不足 250
11.1.2 分解的依赖保持性质 250
11.1.3 分解的非加性(无损)连接性质 251
11.1.4 检验二元分解的非加性连接性质 253
11.1.5 连续非加性连接分解 254
11.2 关系数据库模式设计算法 254
11.2.1 依赖保持分解成3NF模式 254
11.2.2 非加性连接分解成BCNF模式 255
11.2.3 依赖保持和非加性(无损)连接分解成3NF模式 256
11.2.4 NULL值和悬挂元组问题 258
11.2.5 规范化算法的讨论 258
11.3 多值依赖和第四范式 261
11.3.1 多值依赖的形式化定义 261
11.3.2 函数依赖和多值依赖的推理规则 263
11.3.3 第四范式 263
11.3.4 非加性连接分解成4NF关系 264
11.4 连接依赖和第五范式 265
11.5 包含依赖 266
11.6 其他依赖和范式 267
11.6.1 模板依赖 267
11.6.2 域-码范式 268
11.7 小结 268
复习题 268
练习题 269
实验题 270
选读文献 270
第12章 实际数据库设计方法学和UML图的使用 271
12.1 组织中信息系统的角色 271
12.1.1 使用数据库系统的组织环境 271
12.1.2 信息系统的生命周期 273
12.1.3 数据库应用系统的生命周期 274
12.2 数据库设计与实现过程 275
12.2.1 第1阶段:需求汇集和分析 276
12.2.2 第2阶段:概念数据库设计 277
12.2.3 第3阶段:DBMS的选择 284
12.2.4 第4阶段:数据模型映射(逻辑数据库设计) 285
12.2.5 第5阶段:物理数据库设计 286
12.2.6 第6阶段:数据库系统的实现和调优 286
12.3 使用UML图作为数据库设计规范说明的辅助工具 287
12.3.1 UML作为设计规范说明的标准 287
12.3.2 将UML用于数据库应用设计 287
12.3.3 各种UML图 288
12.3.4 建模和设计的示例:UNIVERSITY数据库 291
12.4 基于UML的设计工具:Rational Rose 293
12.4.1 面向数据库设计的RationalRose 293
12.4.2 Rational Rose Data Modeler 293
12.4.3 使用Rational Rose Data Modeler的数据建模 294
12.5 自动化数据库设计工具 297
12.6 小结 299
复习题 299
选读文献 300
第四部分 数据存储、索引、查询处理和物理设计
第13章 磁盘存储、基本文件结构和散列 304
13.1 概述 304
13.1.1 存储层次和存储设备 304
13.1.2 数据库的存储 305
13.2 二级存储设备 306
13.2.1 磁盘设备的硬件描述 306
13.2.2 磁带存储设备 310
13.3 块缓冲 311
13.4 把文件记录保存在磁盘上 312
13.4.1 记录和记录类型 312
13.4.2 文件、定长记录和变长记录 313
13.4.3 记录块、跨块记录与非跨块记录 314
13.4.4 在磁盘上分配文件块 315
13.4.5 文件首部 315
13.5 文件操作 315
13.6 无序记录文件(堆文件) 317
13.7 有序记录文件(排序文件) 318
13.8 散列技术 320
13.8.1 内部散列 321
13.8.2 磁盘文件的外部散列法 323
13.8.3 允许动态文件扩展的散列技术 324
13.9 其他主文件组织 327
13.9.1 混合记录文件 327
13.9.2 B树和其他数据结构作为主组织 327
13.10 使用RAID技术的并行磁盘访问 327
13.10.1 用RAID增强可靠性 328
13.10.2 用RAID改善性能 329
13.10.3 RAID组织体系和级别 329
13.11 新的存储系统 331
13.11.1 存储局域网 331
13.11.2 网络连接存储 331
13.12 小结 332
复习题 332
练习题 333
选读文献 335
第14章 文件的索引结构 336
14.1 单级有序索引的类型 336
14.1.1 主索引 337
14.1.2 聚簇索引 339
14.1.3 辅助索引 339
14.1.4 小结 344
14.2 多级索引 344
14.3 使用B树与B+树的动态多级索引 346
14.3.1 搜索树和B树 347
14.3.2 B+树 350
14.4 多码上的索引 357
14.4.1 多属性上的有序索引 357
14.4.2 分区散列法 357
14.4.3 网格文件 358
14.5 其他类型的索引 358
14.5.1 使用散列和其他数据结构作为索引 358
14.5.2 逻辑索引与物理索引 359
14.5.3 讨论 359
14.6 小结 359
复习题 360
练习题 360
选读文献 362
第15章 查询处理和优化的算法 363
15.1 把SQL查询转换成关系代数 364
15.2 外排序算法 365
15.3 SELECT与JOIN操作的算法 366
15.3.1 SELECT操作的实现 366
15.3.2 JOIN操作的实现 369
15.4 PROJECT和集合操作的算法 374
15.5 聚集操作和外连接的实现 375
15.5.1 聚集操作的实现 375
15.5.2 外连接的实现 375
15.6 用流水线组合操作 376
15.7 在查询优化中使用启发式规则 376
15.7.1 查询树和查询图的表示法 377
15.7.2 查询树的启发式优化 378
15.7.3 将查询树转换为查询执行计划 383
15.8 利用选择性和代价估算进行查询优化 383
15.8.1 查询执行的代价成分 383
15.8.2 代价函数中使用的目录信息 384
15.8.3 SELECT操作的代价函数示例 384
15.8.4 JOIN的代价函数示例 386
15.8.5 多关系查询和连接顺序 387
15.8.6 说明基于代价的查询优化的示例 388
15.9 Oracle中的查询优化概述 390
15.10 语义查询优化 390
15.11 小结 391
复习题 391
练习题 391
选读文献 392
第16章 物理数据库设计和调优 393
16.1 关系数据库中的物理数据库设计 393
16.1.1 影响物理数据库设计的因素 393
16.1.2 物理数据库设计决策 394
16.2 关系系统中的数据库调优概述 396
16.2.1 索引的调优 396
16.2.2 数据库设计的调优 397
16.2.3 查询的调优 398
16.2.4 其他的查询调优原则 399
16.3 小结 400
复习题 400
选读文献 400
附录A ER模型的可选图形表示法 401
附录B 磁盘参数 403
附录C QBE语言概述 405
第1章 数据库与数据库用户 2
1.1 引言 2
1.2 一个示例 4
1.3 数据库方法的特征 6
1.3.1 数据库系统的自描述性 7
1.3.2 程序与数据分离和数据抽象 7
1.3.3 支持数据的多视图 9
1.3.4 数据共享和多用户事务处理 9
1.4 幕前角色 10
1.4.1 数据库管理员 10
1.4.2 数据库设计者 10
1.4.3 最终用户 10
1.4.4 系统分析员和应用程序员(软件工程师) 11
1.5 幕后工作者 11
1.6 使用DBMS方法的优势 12
1.6.1 控制冗余 12
1.6.2 限制非授权的访问 12
1.6.3 为程序对象提供持久性存储 13
1.6.4 提供高效查询处理的存储结构 13
1.6.5 提供备份与恢复 14
1.6.6 提供多用户界面 14
1.6.7 表示数据间复杂联系 14
1.6.8 确保完整性约束 14
1.6.9 允许使用规则进行推理和动作 15
1.6.10 使用数据库方法的其他含义 15
1.7 数据库应用简史 16
1.7.1 使用分层和网状系统的早期数据库应用 16
1.7.2 关系数据库提供应用灵活性 16
1.7.3 面向对象的应用和对更复杂数据库的需求 16
1.7.4 在Web上交换数据实现电子商务 17
1.7.5 为新应用扩展数据库功能 17
1.7.6 数据库与信息检索 17
1.8 什么时候不应该使用DBMS 18
1.9 小结 18
复习题 18
练习题 19
选读文献 19
第2章 数据库系统的概念和体系结构 20
2.1 数据模型、模式和实例 20
2.1.1 数据模型的分类 21
2.1.2 模式、实例和数据库状态 21
2.2 三层模式体系结构和数据独立性 23
2.2.1 三层模式体系结构 23
2.2.2 数据独立性 24
2.3 数据库语言和界面 25
2.3.1 DBMS的语言 25
2.3.2 DBMS界面 26
2.4 数据库系统的环境 27
2.4.1 DBMS的组成模块 27
2.4.2 数据库系统实用工具 29
2.4.3 工具、应用环境和通信软件 29
2.5 DBMS的集中式和客户/服务器体系结构 30
2.5.1 集中式DBMS体系结构 30
2.5.2 基本的客户/服务器体系结构 31
2.5.3 DBMS两层客户/服务器体系结构 32
2.5.4 面向Web应用的三层和n层体系结构 32
2.6 数据库管理系统的分类 33
2.7 小结 35
复习题 36
练习题 36
选读文献 37
第3章 使用实体-联系(ER)模型的数据建模 38
3.1 使用高级概念数据模型进行数据库设计 39
3.2 一个数据库应用示例 40
3.3 实体类型、实体集、属性和码 40
3.3.1 实体和属性 41
3.3.2 实体类型、实体集、码和值集 43
3.3.3 COMPANY数据库的初步概念设计 45
3.4 联系类型、联系集、角色和结构约束 46
3.4.1 联系类型、联系集和联系实例 47
3.4.2 联系度、角色名称和递归联系 48
3.4.3 联系类型的约束 49
3.4.4 联系类型的属性 50
3.5 弱实体类型 51
3.6 COMPANY数据库ER设计的改进 52
3.7 ER图、命名约定和设计问题 53
3.7.1 ER图表示法小结 53
3.7.2 模式结构的正确命名 53
3.7.3 ER概念设计的设计选择 54
3.7.4 ER图的候选表示法 55
3.8 其他表示法示例:UML类图 55
3.9 高于2度的联系类型 57
3.9.1 对二元和三元(或高度)联系的选择 57
3.9.2 三元(或高度)联系上的约束 60
3.10 小结 60
复习题 61
练习题 61
实验题 66
选读文献 66
第4章 增强的实体-联系(EER)建模 68
4.1 子类、超类和继承 68
4.2 特化和泛化 69
4.2.1 特化 69
4.2.2 泛化 71
4.3 特化和泛化层次的约束和特征 71
4.3.1 特化与泛化的约束 72
4.3.2 特化和泛化的层次和格 73
4.3.3 利用特化与泛化改进概念模型 75
4.4 采用类别的并类型建模 76
4.5 示例UNIVERSITY的EER模式设计选择和形式化定义 78
4.5.1 UNIVERSITY数据库示例 78
4.5.2 特化/泛化的设计选择 79
*4.5.3 EER模型概念的形式化定义 80
4.6 其他表示法的示例:UML类图中的特化/泛化 81
4.7 数据抽象、知识表示和本体论概念 82
4.7.1 分类和实例化 82
4.7.2 标识 83
4.7.3 特化和泛化 83
4.7.4 聚集和关联 83
4.7.5 本体论和语义网 85
4.8 小结 86
复习题 86
练习题 86
实验题 91
选读文献 93
第二部分 关系模型:概念、约束、语言、设计和编程
第5章 关系数据模型和关系数据库约束 96
5.1 关系模型概念 96
5.1.1 域、属性、元组和关系 97
5.1.2 关系的特性 99
5.1.3 关系模型表示法 101
5.2 关系模型约束和关系数据库模式 101
5.2.1 域约束 102
5.2.2 码约束和NULL值约束 102
5.2.3 关系数据库和关系数据库模式 103
5.2.4 实体完整性、参照完整性和外码 104
5.2.5 其他类型的约束 106
5.3 更新操作、事务和处理违例约束 107
5.3.1 插入操作 107
5.3.2 删除操作 108
5.3.3 更新操作 109
5.3.4 事务的概念 109
5.4 小结 109
复习题 110
练习题 110
选读文献 113
第6章 关系代数和关系演算 114
6.1 一元关系操作:SELECT和PROJECT 115
6.1.1 SELECT操作 115
6.1.2 PROJECT操作 116
6.1.3 操作序列和RENAME操作 117
6.2 基于集合论的关系代数操作 118
6.2.1 UNION、INTERSECTION和MINUS操作 118
6.2.2 笛卡儿积(或叉积)操作 120
6.3 二元关系操作:JOIN和DIVISION 121
6.3.1 JOIN操作 121
6.3.2 JOIN的变体EQUIJOIN和NATURAL JOIN 122
6.3.3 关系代数操作的完备集 124
6.3.4 DIVISION操作 124
6.3.5 查询树表示法 126
6.4 其他关系操作 127
6.4.1 广义投影 127
6.4.2 聚集函数和分组 127
6.4.3 递归闭包操作 128
6.4.4 OUTER JOIN操作 130
6.4.5 OUTER UNION操作 130
6.5 关系代数中的查询示例 131
6.6 元组关系演算 133
6.6.1 元组变量和值域关系 133
6.6.2 元组关系演算中的表达式与公式 134
6.6.3 存在量词与全称量词 134
6.6.4 使用存在量词的查询示例 135
6.6.5 查询图表示法 136
6.6.6 全称量词与存在量词的转换 137
6.6.7 使用全称量词 137
6.6.8 安全表达式 138
6.7 域关系演算 139
6.8 小结 140
复习题 141
练习题 141
实验题 144
选读文献 146
第7章 使用ER到关系的映射和EER到关系的映射进行关系数据库设计 147
7.1 使用ER到关系的映射进行关系数据库设计 147
7.1.1 ER到关系的映射算法 147
7.1.2 ER模型构造映射的讨论和总结 151
7.2 EER模型构造到关系的映射 152
7.2.1 特化或泛化的映射 153
7.2.2 共享子类(多重继承)的映射 154
7.2.3 类别的映射(并类型) 155
7.3 小结 156
复习题 156
练习题 156
实验题 157
选读文献 157
第8章 SQL-99:模式定义、约束、查询和视图 158
8.1 SQL数据定义和数据类型 159
8.1.1 SQL2中模式和目录的概念 159
8.1.2 SQL的CREATE TABLE命令 160
8.1.3 SQL中的属性数据类型和域 161
8.2 在SQL中定义约束 162
8.2.1 指定属性约束和属性默认值 162
8.2.2 指定码和参照完整性约束 163
8.2.3 为约束命名 164
8.2.4 使用CHECK指定元组约束 164
8.3 SQL中的模式更改语句 165
8.3.1 DROP命令 165
8.3.2 ALTER命令 165
8.4 SQL中的基本查询 166
8.4.1 基本SQL查询的SELECT-FROM- WHERE结构 166
8.4.2 多义属性名、别名和元组变量 168
8.4.3 未指定WHERE子句的查询语句和星号(*)的用法 170
8.4.4 SQL中作为集合的表 170
8.4.5 子串样式匹配和算术操作符 172
8.4.6 查询结果排序 173
8.5 更复杂的SQL查询 173
8.5.1 包含NULL和三值逻辑的比较 173
8.5.2 嵌套查询、元组与集/多集比较 174
8.5.3 关联嵌套查询 176
8.5.4 SQL中的EXISTS和UNIQUE函数 177
8.5.5 SQL中的显式集合和属性重新命名 178
8.5.6 SQL中的连接表和外连接 179
8.5.7 SQL中的聚集函数 180
8.5.8 分组:GROUP BY和HAVING子句 181
8.5.9 SQL查询的讨论与小结 183
8.6 SQL中的插入、删除和更新语句 184
8.6.1 INSERT命令 184
8.6.2 DELETE命令 185
8.6.3 UPDATE命令 186
8.7 指定约束作为断言和触发器 186
8.8 SQL中的视图(虚表) 187
8.8.1 SQL中视图的概念 187
8.8.2 SQL中的视图规范 188
8.8.3 视图的实现和更新 188
8.9 SQL的其他特性 190
8.10 小结 190
复习题 192
练习题 192
实验题 194
选读文献 195
第9章 SQL程序设计技术简介 197
9.1 数据库程序设计:问题与技术 197
9.1.1 数据库程序设计方法 198
9.1.2 阻抗失配 198
9.1.3 数据库程序设计中的典型交互序列 199
9.2 嵌入式SQL、动态SQL和SQLJ 199
9.2.1 用嵌入式SQL检索单个元组 199
9.2.2 在嵌入式SQL中使用游标检索多个元组 202
9.2.3 使用动态SQL在运行时指定查询 203
9.2.4 SQLJ:Java中嵌入SQL命令 204
9.2.5 SQLJ中使用迭代器检索多个元组 206
9.3 使用函数调用的数据库程序设计:SQL/CLI和JDBC 207
9.3.1 以C语言为宿主语言,使用SQL/CLI进行数据库程序设计 208
9.3.2 JDBC:面向Java程序设计的SQL函数调用 211
9.4 数据库存储过程与SQL/PSM 214
9.4.1 数据库存储过程和函数 214
9.4.2 SQL/PSM: 扩展SQL以指定持久存储模块 215
9.5 小结 216
复习题 216
练习题 216
实验题 217
选读文献 218
第三部分 数据库设计理论和方法学
第10章 函数依赖和关系数据库的规范化 220
10.1 关系模式的非形式化设计准则 221
10.1.1 给予关系中的属性以清晰的语义 221
10.1.2 元组中的冗余信息和更新异常 223
10.1.3 元组中的NULL值 225
10.1.4 生成寄生元组 226
10.1.5 总结和讨论设计准则 227
10.2 函数依赖 228
10.2.1 函数依赖的定义 228
10.2.2 函数依赖的推理规则 229
10.2.3 函数依赖集的等价 232
10.2.4 最小函数依赖集 232
10.3 基于主码的范式 233
10.3.1 关系的规范化 233
10.3.2 范式的实际使用 234
10.3.3 码的定义和参与码的属性 234
10.3.4 第一范式 235
10.3.5 第二范式 238
10.3.6 第三范式 239
10.4 第二范式和第三范式的通用定义 239
10.4.1 第二范式的通用定义 240
10.4.2 第三范式的通用定义 241
10.4.3 解释第三范式的通用定义 241
10.5 Boyce-Codd范式 241
10.6 小结 243
复习题 244
练习题 244
实验题 247
选读文献 248
第11章 关系数据库设计算法和其他依赖 249
11.1 关系分解的性质 250
11.1.1 关系分解和范式的不足 250
11.1.2 分解的依赖保持性质 250
11.1.3 分解的非加性(无损)连接性质 251
11.1.4 检验二元分解的非加性连接性质 253
11.1.5 连续非加性连接分解 254
11.2 关系数据库模式设计算法 254
11.2.1 依赖保持分解成3NF模式 254
11.2.2 非加性连接分解成BCNF模式 255
11.2.3 依赖保持和非加性(无损)连接分解成3NF模式 256
11.2.4 NULL值和悬挂元组问题 258
11.2.5 规范化算法的讨论 258
11.3 多值依赖和第四范式 261
11.3.1 多值依赖的形式化定义 261
11.3.2 函数依赖和多值依赖的推理规则 263
11.3.3 第四范式 263
11.3.4 非加性连接分解成4NF关系 264
11.4 连接依赖和第五范式 265
11.5 包含依赖 266
11.6 其他依赖和范式 267
11.6.1 模板依赖 267
11.6.2 域-码范式 268
11.7 小结 268
复习题 268
练习题 269
实验题 270
选读文献 270
第12章 实际数据库设计方法学和UML图的使用 271
12.1 组织中信息系统的角色 271
12.1.1 使用数据库系统的组织环境 271
12.1.2 信息系统的生命周期 273
12.1.3 数据库应用系统的生命周期 274
12.2 数据库设计与实现过程 275
12.2.1 第1阶段:需求汇集和分析 276
12.2.2 第2阶段:概念数据库设计 277
12.2.3 第3阶段:DBMS的选择 284
12.2.4 第4阶段:数据模型映射(逻辑数据库设计) 285
12.2.5 第5阶段:物理数据库设计 286
12.2.6 第6阶段:数据库系统的实现和调优 286
12.3 使用UML图作为数据库设计规范说明的辅助工具 287
12.3.1 UML作为设计规范说明的标准 287
12.3.2 将UML用于数据库应用设计 287
12.3.3 各种UML图 288
12.3.4 建模和设计的示例:UNIVERSITY数据库 291
12.4 基于UML的设计工具:Rational Rose 293
12.4.1 面向数据库设计的RationalRose 293
12.4.2 Rational Rose Data Modeler 293
12.4.3 使用Rational Rose Data Modeler的数据建模 294
12.5 自动化数据库设计工具 297
12.6 小结 299
复习题 299
选读文献 300
第四部分 数据存储、索引、查询处理和物理设计
第13章 磁盘存储、基本文件结构和散列 304
13.1 概述 304
13.1.1 存储层次和存储设备 304
13.1.2 数据库的存储 305
13.2 二级存储设备 306
13.2.1 磁盘设备的硬件描述 306
13.2.2 磁带存储设备 310
13.3 块缓冲 311
13.4 把文件记录保存在磁盘上 312
13.4.1 记录和记录类型 312
13.4.2 文件、定长记录和变长记录 313
13.4.3 记录块、跨块记录与非跨块记录 314
13.4.4 在磁盘上分配文件块 315
13.4.5 文件首部 315
13.5 文件操作 315
13.6 无序记录文件(堆文件) 317
13.7 有序记录文件(排序文件) 318
13.8 散列技术 320
13.8.1 内部散列 321
13.8.2 磁盘文件的外部散列法 323
13.8.3 允许动态文件扩展的散列技术 324
13.9 其他主文件组织 327
13.9.1 混合记录文件 327
13.9.2 B树和其他数据结构作为主组织 327
13.10 使用RAID技术的并行磁盘访问 327
13.10.1 用RAID增强可靠性 328
13.10.2 用RAID改善性能 329
13.10.3 RAID组织体系和级别 329
13.11 新的存储系统 331
13.11.1 存储局域网 331
13.11.2 网络连接存储 331
13.12 小结 332
复习题 332
练习题 333
选读文献 335
第14章 文件的索引结构 336
14.1 单级有序索引的类型 336
14.1.1 主索引 337
14.1.2 聚簇索引 339
14.1.3 辅助索引 339
14.1.4 小结 344
14.2 多级索引 344
14.3 使用B树与B+树的动态多级索引 346
14.3.1 搜索树和B树 347
14.3.2 B+树 350
14.4 多码上的索引 357
14.4.1 多属性上的有序索引 357
14.4.2 分区散列法 357
14.4.3 网格文件 358
14.5 其他类型的索引 358
14.5.1 使用散列和其他数据结构作为索引 358
14.5.2 逻辑索引与物理索引 359
14.5.3 讨论 359
14.6 小结 359
复习题 360
练习题 360
选读文献 362
第15章 查询处理和优化的算法 363
15.1 把SQL查询转换成关系代数 364
15.2 外排序算法 365
15.3 SELECT与JOIN操作的算法 366
15.3.1 SELECT操作的实现 366
15.3.2 JOIN操作的实现 369
15.4 PROJECT和集合操作的算法 374
15.5 聚集操作和外连接的实现 375
15.5.1 聚集操作的实现 375
15.5.2 外连接的实现 375
15.6 用流水线组合操作 376
15.7 在查询优化中使用启发式规则 376
15.7.1 查询树和查询图的表示法 377
15.7.2 查询树的启发式优化 378
15.7.3 将查询树转换为查询执行计划 383
15.8 利用选择性和代价估算进行查询优化 383
15.8.1 查询执行的代价成分 383
15.8.2 代价函数中使用的目录信息 384
15.8.3 SELECT操作的代价函数示例 384
15.8.4 JOIN的代价函数示例 386
15.8.5 多关系查询和连接顺序 387
15.8.6 说明基于代价的查询优化的示例 388
15.9 Oracle中的查询优化概述 390
15.10 语义查询优化 390
15.11 小结 391
复习题 391
练习题 391
选读文献 392
第16章 物理数据库设计和调优 393
16.1 关系数据库中的物理数据库设计 393
16.1.1 影响物理数据库设计的因素 393
16.1.2 物理数据库设计决策 394
16.2 关系系统中的数据库调优概述 396
16.2.1 索引的调优 396
16.2.2 数据库设计的调优 397
16.2.3 查询的调优 398
16.2.4 其他的查询调优原则 399
16.3 小结 400
复习题 400
选读文献 400
附录A ER模型的可选图形表示法 401
附录B 磁盘参数 403
附录C QBE语言概述 405
猜您喜欢