数据库系统概念

数据库系统概念
作 者: 西尔伯沙茨 杨冬青 马秀莉
出版社: 机械工业出版社
丛编项: 计算机科学丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 数据库理论 数据库 计算机与互联网
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍Abraham Silberschatz于纽约州立大学石溪分校获得博士学位,现为耶鲁大学计算机科学系教授,曾任新泽西州Murray Hill贝尔实验室信息科学研究中心副主席,ACM和IEEE会员。他的研究方向包括操作系统、数据库系统、网络系统和分布式系统。.Henry F.Korth于普林斯顿大学获得博士学位,现为美国里海大学教授,曾任贝尔实验室信息科学研究中心数据库原理研究室主任,ACM会员和IEEE高级成员。他的研究方向包括高性能数据库系统、实时数据库系统和XML数据库。..S.Sudarshan于威斯康...

内容简介

本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学院等都采用本书作为教科书。我国也有许多所大学采用本书以前版本的中文版作为本科生和研究生的数据库课程的教材和主要教学参考书,收到了良好的效果。本书调整和新增内容:调整了第4版的讲授顺序。首先介绍SQL及其高级特性,使学生容易接受数据库设计的概念。新增数据库设计的专门讨论。彻底改写和更新了基于对象的数据库和XML的相关内容。重新组织数据挖掘和信息检索的内容,增加了对数据库系统PostgreSQL的实例研究。本书特点:综合全面。涵盖了数据模型、关系模型、基于对象的数据库和XML、数据存储和查询、事务管理、数据库系统体系结构等方面的内容。直观易懂。采用直观的方式描述概念,以结构清晰的图示和示例代替形式化的证明。实用性强。以银行数据库实例生动地解释重要概念,通俗易懂。内容新颖。反映了数据库在设计、管理和使用方式等方面的变化及数据库概念方面的发展趋势。深入研究实例。提供四个领先的数据库系统PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server的实例研究。本书是经典的数据库系统教科书《Database System Concepts》的最新修订版,全面介绍数据库系统的各种知识,透彻阐释数据库管理的基本概念。本书内容丰富,不仅讨论了数据库查询语言、模式设计、数据仓库、数据库应用开发、基于对象的数据库和XML、数据存储和查询、事务管理、数据挖掘与信息检索以及数据库系统体系结构等方面的内容,而且对性能评测标准、性能调整、标准化以及空间与地理数据、事务处理监控等高级应用主题进行了广泛讨论。本书既可作为高年级本科生或低年级研究生的数据库课程教材,也可供数据库领域的技术人员参考。

图书目录

第1章 引言 1 .

1.1 数据库系统的应用 1

1.2 数据库系统的目标 2

1.3 数据视图 3

1.3.1 数据抽象 4

1.3.2 实例和模式 5

1.3.3 数据模型 5

1.4 数据库语言 6

1.4.1 数据操纵语言 6

1.4.2 数据定义语言 6

1.5 关系数据库 7

1.5.1 表 7

1.5.2 数据操纵语言 8

1.5.3 数据定义语言 8

1.5.4 来自应用程序的数据库访问 9

1.6 数据库设计 9

1.6.1 设计过程 9

1.6.2 银行企业的数据库设计 10

1.6.3 实体-联系模型 10

1.6.4 规范化 11

1.7 基于对象数据库和半结构化数据库 12

1.7.1 基于对象数据模型 12

1.7.2 半结构化数据模型 12

1.8 数据存储和查询 12

1.8.1 存储管理器 13

1.8.2 查询处理器 13

1.9 事务管理 13

1.10 数据挖掘与分析 14

1.11 数据库体系结构 15

1.12 数据库用户和管理员 17

1.12.1 数据库用户和用户界面 17

1.12.2 数据库管理员 17

1.13 数据库系统的历史 18

1.14 小结 19

术语回顾 20

实践习题 20

习题 20

文献注解 20

第一部分 关系数据库

第2章 关系模型 24

2.1 关系数据库的结构 24

2.1.1 基本结构 24

2.1.2 数据库模式 25

2.1.3 码 27

2.1.4 查询语言 28

2.2 关系代数基本运算 29

2.2.1 选择运算 29

2.2.2 投影运算 29

2.2.3 关系运算的组合 30

2.2.4 并运算 30

2.2.5 集合差运算 30

2.2.6 笛卡儿积运算 31

2.2.7 更名运算 33

2.2.8 关系代数的形式化定义 34

2.3 附加的关系代数运算 34

2.3.1 集合交运算 35

2.3.2 自然连接运算 35

2.3.3 除运算 36

2.3.4 赋值运算 37

2.4 扩展的关系代数运算 37

2.4.1 广义投影 38

2.4.2 聚集函数 38

2.4.3 外连接 39

2.5 空值 41

2.6 数据库的修改 42

2.6.1 删除 42

2.6.2 插入 42

2.6.3 更新 43

2.7 小结 43

术语回顾 44

实践习题 44

习题 45

文献注解 46

第3章 SQL 47

3.1 背景 47

3.2 数据定义 48

3.2.1 基本域类型 48

3.2.2 SQL中的基本模式定义 48

3.3 SQL查询的基本结构 50

3.3.1 select子句 50

3.3.2 where子句 51

3.3.3 from子句 51

3.3.4 更名运算 52

3.3.5 元组变量 52

3.3.6 字符串运算 53

3.3.7 排列元组的显示次序 54

3.3.8 重复 54

3.4 集合运算 55

3.4.1 union运算 55

3.4.2 intersect运算 55

3.4.3 except运算 56

3.5 聚集函数 56

3.6 空值 58

3.7 嵌套子查询 59

3.7.1 集合成员资格 59

3.7.2 集合的比较 60

3.7.3 测试是否为空关系 60

3.7.4 测试是否存在重复元组 61

3.8 复杂查询 62

3.8.1 派生关系 62

3.8.2 with子句 62

3.9 视图 63

3.9.1 视图定义 64

3.9.2 用其他视图定义视图 65

3.10 数据库的修改 66

3.10.1 删除 66

3.10.2 插入 67

3.10.3 更新 68

3.10.4 视图的更新 69

3.10.5 事务 70

3.11 连接关系 ˇˇ 71

3.11.1 举例 71

3.11.2 连接类型和条件 72

3.12 小结 74

术语回顾 74

实践习题 75

习题 76

文献注解 77

第4章 高级SQL 79

4.1 SQL的数据类型与模式 79

4.1.1 SQL中内建的数据类型 79

4.1.2 用户定义类型 80

4.1.3 大对象类型 81

4.1.4 模式. 目录与环境 81

4.2 完整性约束 82

4.2.1 单个关系上的约束 82

4.2.2 not null约束 82

4.2.3 unique约束 83

4.2.4 check子句 83

4.2.5 参照完整性 84

4.2.6 断言 86

4.3 授权 86

4.4 嵌入式SQL 87

4.5 动态SQL 90

4.5.1 ODBC 90

4.5.2 JDBC 92

4.6 函数和过程化结构 ˇˇ 95

4.6.1 SQL函数和过程 95

4.6.2 过程化结构 96

4.6.3 外部语言例程 98

4.7 递归查询 ˇˇ 99

4.7.1 使用迭代的传递闭包 99

4.7.2 SQL中的递归 100

4.8 高级SQL特性 ˇˇ 101

4.8.1 create table的扩展 102

4.8.2 关于子查询的更多内容 102

4.8.3 数据库更新的高级结构 103

4.9 小结 103

术语回顾 104

实践习题 104

习题 105

文献注解 106

第5章 其他关系语言 107

5.1 元组关系演算 107

5.1.1 查询的例子 107

5.1.2 形式化定义 109

5.1.3 表达式的安全性 109

5.1.4 语言的表达能力 110

5.2 域关系演算 110

5.2.1 形式化定义 110

5.2.2 查询的例子 111

5.2.3 表达式的安全性 111

5.2.4 语言的表达能力 112

5.3 QBE 112

5.3.1 框架表 113

5.3.2 在单个关系上的查询 113

5.3.3 在多个关系上的查询 114

5.3.4 条件框 115

5.3.5 结果关系 116

5.3.6 在Microsoft Access中的QBE 117

5.4 Datalog 118

5.4.1 基本结构 119

5.4.2 Datalog规则的语法 120

5.4.3 非递归Datalog的语义 121

5.4.4 安全性 122

5.4.5 Datalog中的关系运算 123

5.4.6 Datalog中的递归 124

5.4.7 递归的能力 125

5.5 小结 127

术语回顾 127

实践习题 127

习题 128

文献注解 129

第二部分 数据库设计

第6章 数据库设计和EˉR模型 132

6.1 设计过程概览 132

6.1.1 设计阶段 132

6.1.2 设计选择 133

6.2 实体-联系模型 133

6.2.1 实体集 134

6.2.2 联系集 135

6.2.3 属性 137

6.3 约束 138

6.3.1 映射基数 138

6.3.2 码 139

6.3.3 参与约束 140

6.4 实体-联系图 140

6.5 实体-联系设计问题 144

6.5.1 用实体集还是用属性 144

6.5.2 用实体集还是用联系集 145

6.5.3 二元联系集与n元联系集 146

6.5.4 联系属性的布局 147

6.6 弱实体集 147

6.7 扩展EˉR特性 149

6.7.1 特殊化 149

6.7.2 一般化 150

6.7.3 属性继承 151

6.7.4 一般化上的约束 151

6.7.5 聚集 153

6.7.6 可选择的EˉR符号 154

6.8 银行企业的数据库设计 155

6.8.1 EˉR设计的可选方案 155

6.8.2 银行数据库的数据需求 156

6.8.3 银行数据库中的实体集 156

6.8.4 银行数据库中的联系集 156

6.8.5 银行数据库中的EˉR图 157

6.9 转换为关系模式 158

6.9.1 强实体集的表示方式 158

6.9.2 弱实体集的表示方式 158

6.9.3 联系集的表示方式 159

6.9.4 复合属性和多值属性 160

6.9.5 一般化的表示方式 161

6.9.6 聚集的表示方式 161

6.9.7 银行企业的关系模式 162

6.10 数据库设计的其他方面 162

6.10.1 数据约束和关系数据库设计 162

6.10.2 使用需求:查询和性能 163

6.10.3 授权需求 163

6.10.4 数据流. 工作流 164

6.10.5 数据库设计的其他问题 164

6.11 统一建模语言UML ˇˇ 164

6.12 小结 166

术语回顾 167

实践习题 167

习题 169

文献注解 170

第7章 关系数据库设计 172

7.1 好的关系设计的特点 172

7.1.1 设计选择:更大的模式 172

7.1.2 设计选择:更小的模式 174

7.2 原子域和第一范式 176

7.3 使用函数依赖的分解 176

7.3.1 码和函数依赖 177

7.3.2 BoyceˉCodd范式 178

7.3.3 BCNF和保持依赖 178

7.3.4 第三范式 180

7.3.5 更高的范式 182

7.4 函数依赖理论 182

7.4.1 函数依赖集的闭包 182

7.4.2 属性集的闭包 184

7.4.3 正则覆盖 185

7.4.4 无损分解 187

7.4.5 保持依赖 188

7.5 分解的算法 189

7.5.1 BCNF分解 189

7.5.2 3NF分解 191

7.5.3 BCNF和3NF的比较 192

7.6 使用多值依赖的分解 193

7.6.1 多值依赖 193

7.6.2 第四范式 194

7.6.3 4NF分解 195

7.7 更多的范式 196

7.8 数据库设计过程 196

7.8.1 EˉR模型和规范化 196

7.8.2 属性和联系的命名 197

7.8.3 为了性能解除规范化 198

7.8.4 其他设计问题 198

7.9 时态数据建模 198

7.10 小结 200

术语回顾 201

实践习题 201

习题 203

文献注解 203

第8章 应用设计和开发 205

8.1 用户界面和工具 205

8.1.1 表格和图形用户界面 205

8.1.2 报表生成器 206

8.2 数据库的Web界面 207

8.3 Web基础 208

8.3.1 统一资源定位符 208

8.3.2 超文本标记语言 208

8.3.3 客户端脚本和applet 209

8.3.4 Web服务器和会话 210

8.4 servlet和JSP 212

8.4.1 一个servlet的例子 212

8.4.2 servlet会话 213

8.4.3 servlet的生命周期 213

8.4.4 servlet支持 213

8.4.5 服务器端脚本 214

8.5 建立大型Web应用 215

8.5.1 构建Web界面 215

8.5.2 Microsoft ASP 215

8.5.3 提高应用程序性能 216

8.6 触发器 217

8.6.1 对触发器的需求 217

8.6.2 SQL中的触发器 218

8.6.3 何时不用触发器 220

8.7 SQL中的授权 221

8.7.1 权限的授予 221

8.7.2 在SQL中授权 222

8.7.3 角色 223

8.7.4 收回权限 224

8.7.5 视图. 函数和过程的授权 225

8.7.6 SQL授权的局限 225

8.7.7 审计追踪 226

8.8 应用系统安全性 226

8.8.1 加密技术 226

8.8.2 数据库中的加密支持 227

8.8.3 鉴定 228

8.8.4 保护应用程序 230

8.8.5 隐私 230

8.9 小结 231

术语回顾 232

实践习题 232

习题 233

项目建议 234

文献注解 235

第三部分 基于对象的数据库和XML

第9章 基于对象的数据库 238

9.1 概述 238

9.2 复杂数据类型 238

9.3 SQL中的结构类型和继承 240

9.3.1 结构类型 240

9.3.2 类型继承 242

9.4 表继承 243

9.5 SQL中的数组和多重集合类型 244

9.5.1 创建和访问集合体值 245

9.5.2 查询以集合体为值的属性 245

9.5.3 嵌套和解除嵌套 246

9.6 对象标识和SQL中的引用类型 248

9.7 OˉR特性的实现 249

9.8 持久化程序设计语言 250

9.8.1 对象的持久化 251

9.8.2 对象标识和指针 251

9.8.3 持久对象的存储和访问 252

9.8.4 持久化C++系统 252

9.8.5 持久化Java系统 254

9.9 面向对象与对象-关系 255

9.10 小结 256

术语回顾 256

实践习题 257

习题 258

文献注解 259

第10章 XML 261

10.1 动机 261

10.2 XML数据的结构 263

10.3 XML文档模式 265

10.3.1 文档类型定义 266

10.3.2 XML Schema 268

10.4 查询和转换 270

10.4.1 XPath 270

10.4.2 XQuery 272

10.4.3 XSLT ˇˇ 276

10.5 XML应用程序接口 278

10.6 XML数据的存储 279

10.6.1 非关系的数据存储 279

10.6.2 关系数据库 279

10.6.3 SQL/XML 281

10.7 XML应用 283

10.7.1 存储复杂结构的数据 283

10.7.2 标准化数据交换格式 283

10.7.3 Web服务 284

10.7.4 数据中介 285

10.8 小结 285

术语回顾 286

实践习题 287

习题 287

文献注解 288

第四部分 数据存储和查询

第11章 存储和文件结构 292

11.1 物理存储介质概述 292

11.2 磁盘 294

11.2.1 磁盘的物理特性 294

11.2.2 磁盘性能的度量 295

11.2.3 磁盘块访问的优化 296

11.3 RAID 298

11.3.1 通过冗余提高可靠性 298

11.3.2 通过并行提高性能 299

11.3.3 RAID级别 300

11.3.4 RAID级别的选择 302

11.3.5 硬件问题 303

11.3.6 其他的RAID应用 303

11.4 第三级存储 304

11.4.1 光盘 304

11.4.2 磁带 304

11.5 存储访问 305

11.5.1 缓冲区管理器 305

11.5.2 缓冲区替换策略 306

11.6 文件组织 307

11.6.1 定长记录 308

11.6.2 变长记录 309

11.7 文件中记录的组织 310

11.7.1 顺序文件组织 310

11.7.2 多表聚类文件组织 311

11.8 数据字典存储 312

11.9 小结 313

术语回顾 314

实践习题 315

习题 316

文献注解 316

第12章 索引与散列 318

12.1 基本概念 318

12.2 顺序索引 319

12.2.1 稠密索引和稀疏索引 319

12.2.2 多级索引 320

12.2.3 索引的更新 321

12.2.4 辅助索引 322

12.3 B + 树索引文件 323

12.3.1 B + 树的结构 323

12.3.2 B + 树的查询 325

12.3.3 B + 树的更新 326

12.3.4 B + 树文件组织 330

12.3.5 字符串上的索引 331

12.4 B树索引文件 331

12.5 多码访问 332

12.5.1 使用多个单码索引 333

12.5.2 多码索引 333

12.5.3 不唯一的搜索码 334

12.5.4 覆盖索引 334

12.5.5 辅助索引和记录重定位 334

12.6 静态散列 335

12.6.1 散列函数 335

12.6.2 桶溢出处理 337

12.6.3 散列索引 338

12.7 动态散列 339

12.7.1 数据结构 339

12.7.2 查询和更新 340

12.7.3 静态散列与动态散列比较 343

12.8 顺序索引和散列的比较 343

12.9 位图索引 344

12.9.1 位图索引结构 344

12.9.2 位图操作的有效实现 345

12.9.3 位图和B + 树 346

12.10 SQL中的索引定义 346

12.11 小结 347

术语回顾 348

实践习题 348

习题 350

文献注解 350

第13章 查询处理 352

13.1 概述 352

13.2 查询代价的度量 353

13.3 选择运算 354

13.3.1 基本算法 354

13.3.2 利用索引的选择 355

13.3.3 涉及比较的选择 356

13.3.4 复杂选择的实现 356

13.4 排序 357

13.5 连接运算 359

13.5.1 嵌套循环连接 360

13.5.2 块嵌套循环连接 360

13.5.3 索引嵌套循环连接 361 ..

13.5.4 归并连接 362

13.5.5 散列连接 364

13.5.6 复杂连接 368

13.6 其他运算 368

13.6.1 去除重复 368

13.6.2 投影 368

13.6.3 集合运算 369

13.6.4 外连接 369

13.6.5 聚集 370

13.7 表达式计算 370

13.7.1 实体化 370

13.7.2 流水线 371

13.8 小结 374

术语回顾 374

实践习题 375

习题 376

文献注解 376

第14章 查询优化 378

14.1 概述 378

14.2 关系表达式的转换 379

14.2.1 等价规则 379

14.2.2 转换的例子 381

14.2.3 连接的次序 382

14.2.4 等价表达式的枚举 383

14.3 表达式结果集统计大小的估计 384

14.3.1 目录信息 384

14.3.2 选择运算结果大小的估计 385

14.3.3 连接运算结果大小的估计 386

14.3.4 其他运算的结果集大小的估计 387

14.3.5 不同取值个数的估计 388

14.4 选择执行计划 388

14.4.1 查询执行技术的相互作用 388

14.4.2 基于代价的优化 389

14.4.3 启发式优化 391

14.4.4 嵌套子查询的优化 ˇˇ 393

14.5 物化视图 ˇˇ 394

14.5.1 视图维护 394

14.5.2 增量的视图维护 395

14.5.3 查询优化和物化视图 397

14.6 小结 397

术语回顾 398

实践习题 399

习题 400

文献注解 400

第五部分 事务管理

第15章 事务 404

15.1 事务概念 404

15.2 事务状态 406

15.3 原子性和持久性的实现 407

15.4 并发执行 408

15.5 可串行化 411

15.5.1 冲突可串行化 411

15.5.2 视图可串行化 ˇˇ 413

15.6 可恢复性 413

15.6.1 可恢复调度 414

15.6.2 无级联调度 414

15.7 隔离性的实现 414

15.8 可串行化判定 415

15.9 小结 416

术语回顾 417

实践习题 417

习题 417

文献注解 418

第16章 并发控制 419

16.1 基于锁的协议 419

16.1.1 锁 419

16.1.2 锁的授予 421

16.1.3 两阶段封锁协议 422

16.1.4 封锁的实现 ˇˇ 423

16.1.5 基于图的协议 424

16.2 基于时间戳的协议 426

16.2.1 时间戳 426

16.2.2 时间戳排序协议 426

16.2.3 Thomas写规则 427

16.3 基于有效性检查的协议 428

16.4 多粒度 429

16.5 多版本机制 431

16.5.1 多版本时间戳排序 431

16.5.2 多版本两阶段封锁 432

16.6 死锁处理 433

16.6.1 死锁预防 433

16.6.2 基于超时的机制 434

16.6.3 死锁检测与恢复 434

16.7 插入与删除操作 436

16.7.1 删除 436

16.7.2 插入 436

16.7.3 幻象现象 437

16.8 弱一致性级别 438

16.8.1 二级一致性 438

16.8.2 游标稳定性 438

16.8.3 SQL中的弱一致性级别 439

16.9 索引结构中的并发 ˇˇ 439

16.10 小结 441

术语回顾 443

实践习题 443

习题 445

文献注解 446

第17章 恢复系统 447

17.1 故障分类 447

17.2 存储器结构 447

17.2.1 存储器类型 447

17.2.2 稳定存储器的实现 448

17.2.3 数据访问 449

17.3 恢复与原子性 450

17.4 基于日志的恢复 450

17.4.1 延迟的数据库修改 451

17.4.2 立即的数据库修改 452

17.4.3 检查点 454

17.5 并发事务的恢复 455

17.5.1 与并发控制的交互 455

17.5.2 事务回滚 455

17.5.3 检查点 455

17.5.4 重启动恢复 456

17.6 缓冲区管理 456

17.6.1 日志记录缓冲 456

17.6.2 数据库缓冲 457

17.6.3 操作系统在缓冲区管理中的作用 458

17.7 非易失性存储器数据丢失的故障 458

17.8 高级恢复技术 ˇˇ 459

17.8.1 逻辑undo日志 459

17.8.2 事务回滚 460

17.8.3 检查点 460

17.8.4 重启动恢复 460

17.8.5 模糊检查点 461

17.8.6 ARIES 461

17.9 远程备份系统 464

17.10 小结 465

术语回顾 467

实践习题 467 习题 468

文献注解 468

第六部分 数据挖掘与信息检索

第18章 数据分析与挖掘 472

18.1 决策支持系统 472

18.2 数据分析和联机分析处理 473

18.2.1 联机分析处理 473

18.2.2 OLAP实现 476

18.2.3 扩展的聚集 477

18.2.4 排名 478

18.2.5 分窗 480

18.3 数据仓库工程 481

18.3.1 数据仓库的成分 481

18.3.2 数据仓库模式 482

18.4 数据挖掘 483

18.4.1 数据挖掘应用 483

18.4.2 分类 484

18.4.3 关联规则 488

18.4.4 其他类型的关联 489

18.4.5 聚类 490

18.4.6 其他类型的挖掘 491

18.5 小结 491

术语回顾 492

实践习题 493

习题 493

文献注解 494

第19章 信息检索 496

19.1 概述 496

19.2 使用术语的相关排级 497

19.2.1 使用TFˉIDF方法排级 497

19.2.2 基于相似性的检索 498

19.3 使用超链接的相关性 499

19.3.1 流行度排序 499

19.3.2 PageRank 500

19.3.3 其他的流行度度量 501

19.4 同义词. 多义词和本体 502

19.5 文档的索引 503

19.6 检索的有效性度量 504

19.7 Web搜索引擎 504

19.8 信息检索和结构化数据 505

19.8.1 信息抽取 505

19.8.2 查询结构化数据 505

19.8.3 问题解答 506

19.9 目录 506

19.10 小结 507

术语回顾 508

实践习题 509

习题 509

文献注解 510

第七部分 系统体系结构

第20章 数据库系统体系结构 512

20.1 集中式与客户-服务器体系结构 512

20.1.1 集中式系统 512

20.1.2 客户-服务器系统 513

20.2 服务器系统体系结构 514

20.2.1 事务服务器进程结构 514

20.2.2 数据服务器 515

20.3 并行系统 516

20.3.1 加速比和扩展比 517

20.3.2 互连网络 518

20.3.3 并行数据库体系结构 519

20.4 分布式系统 521

20.4.1 分布式数据库的一个例子 522

20.4.2 实现问题 522

20.5 网络类型 523

20.5.1 局域网 523

20.5.2 广域网 524

20.6 小结 525

术语回顾 525

实践习题 526

习题 527

文献注解 527

第21章 并行数据库 528

21.1 概述 528

21.2 I/O并行 528

21.2.1 划分技术 528

21.2.2 划分技术比较 529

21.2.3 偏斜的处理 530

21.3 查询间并行 531

21.4 查询内并行 531

21.5 操作内并行 532

21.5.1 并行排序 532

21.5.2 并行连接 533

21.5.3 其他的关系操作 536

21.5.4 操作的并行计算的代价 537

21.6 操作间并行 537

21.6.1 流水线并行 537

21.6.2 独立的并行 538

21.6.3 查询优化 538

21.7 并行系统设计 539

21.8 小结 540

术语回顾 540

实践习题 541

习题 541

文献注解 542

第22章 分布式数据库 544

22.1 同构和异构数据库 544

22.2 分布式数据存储 544

22.2.1 数据复制 544

22.2.2 数据分片 545

22.2.3 透明性 546

22.3 分布式事务 547

22.3.1 系统结构 547

22.3.2 系统故障模式 548

22.4 提交协议 548

22.4.1 两阶段提交 548

22.4.2 三阶段提交 551

22.4.3 事务处理的可选择模型 551

22.5 分布式数据库的并发控制 552

22.5.1 封锁协议 553

22.5.2 时间戳 555

22.5.3 弱一致性复制 555

22.5.4 死锁处理 556

22.6 可用性 557

22.6.1 基于多数的方法 558

22.6.2 读一个. 写所有可用的方法 559

22.6.3 站点重建 559

22.6.4 与远程备份比较 559

22.6.5 协调器的选择 560

22.7 分布式查询处理 561

22.7.1 查询转换 561

22.7.2 简单的连接处理 561

22.7.3 半连接策略 562

22.7.4 利用并行性的连接策略 563

22.8 异构分布式数据库 563

22.8.1 数据的统一视图 563

22.8.2 查询处理 564

22.9 目录系统 564

22.9.1 目录访问协议 565

22.9.2 LDAP:轻便目录访问协议 565

22.10 小结 568

术语回顾 569

实践习题 570

习题 571

文献注解 572

第八部分 其他主题

第23章 高级应用开发 574

23.1 性能调整 574

23.1.1 瓶颈的位置 574

23.1.2 可调参数 575

23.1.3 硬件的调整 575

23.1.4 模式的调整 577

23.1.5 索引的调整 577

23.1.6 使用物化视图 577

23.1.7 物理设计的自动调整 578

23.1.8 事务的调整 579

23.1.9 性能模拟 580

23.2 性能基准程序 580

23.2.1 任务集 580

23.2.2 数据库应用类型 581

23.2.3 TPC基准程序 581

23.2.4 OODB基准程序 582

23.3 标准化 583

23.3.1 SQL标准 583

23.3.2 数据库连接标准 584

23.3.3 对象数据库标准 585

23.3.4 基于XML的标准 585

23.4 应用系统移植 586

23.5 小结 586

术语回顾 587

实践习题 587

习题 588

文献注解 588

第24章 高级数据类型和新的应用 590

24.1 动机 590

24.2 数据库中的时间 590

24.2.1 SQL中的时间描述 591

24.2.2 时态查询语言 592

24.3 空间与地理数据 592

24.3.1 几何信息的表示 592

24.3.2 设计数据库 593

24.3.3 地理数据 594

24.3.4 空间查询 595

24.3.5 空间数据的索引 596

24.4 多媒体数据库 599

24.4.1 多媒体数据格式 599

24.4.2 连续媒体数据 600

24.4.3 基于相似性的检索 600

24.5 移动计算和个人数据库 601

24.5.1 移动计算模型 601

24.5.2 路由和查询处理 602

24.5.3 广播数据 602

24.5.4 连接断开与一致性 603

24.6 小结 604

术语回顾 605

实践习题 605

习题 606

文献注解 606

第25章 高级事务处理 608

25.1 事务处理监控器 608

25.1.1 TP监控器体系结构 608

25.1.2 使用TP监视器进行应用协调 610

25.2 事务工作流 611

25.2.1 工作流说明 612

25.2.2 工作流的故障原子性需求 613

25.2.3 工作流的执行 613

25.2.4 工作流的恢复 614

25.2.5 工作流管理系统 614

25.3 电子商务 615

25.3.1 电子目录 615

25.3.2 市场 616

25.3.3 订单结算 616

25.4 主存数据库 617

25.5 实时事务系统 618

25.6 长事务 619

25.6.1 不可串行化的执行 619

25.6.2 并发控制 620

25.6.3 嵌套事务和多级事务 620

25.6.4 补偿事务 621

25.6.5 实现问题 622

25.7 多数据库中的事务管理 622

25.7.1 两级串行化 623

25.7.2 保证全局串行化 624

25.8 小结 625

术语回顾 625

实践习题 626

习题 627

文献注解 627

第九部分 实例研究

第26章 PostgreSQL 630

26.1 概述 630

26.2 用户界面 630

26.2.1 交互式终端界面 630

26.2.2 图形界面 631

26.2.3 编程语言接口 631

26.3 SQL变化和扩展 633

26.3.1 PostgreSQL类型 633

26.3.2 规则和其他主动数据库特征 634

26.3.3 可扩展性 636

26.4 PostgreSQL中的事务管理 638

26.4.1 PostgreSQL的并发控制 639

26.4.2 恢复 644

26.5 存储和索引 644

26.5.1 表 645

26.5.2 索引 645

26.6 查询处理和优化 646

26.6.1 查询重写 646

26.6.2 查询规划和优化 647

26.6.3 查询执行器 647

26.6.4 触发器和约束 648

26.7 系统结构 648

文献注解 649

第27章 Oracle 650

27.1 数据库设计和查询工具 650

27.1.1 数据库设计工具 650

27.1.2 查询工具 651

27.2 SQL的变化和扩展 651

27.2.1 对象-关系特性 651

27.2.2 联机分析处理 652

27.2.3 触发器 652

27.3 存储和索引 652

27.3.1 表空间 653

27.3.2 段 653

27.3.3 表 653

27.3.4 按索引组织的表 654

27.3.5 索引 654

27.3.6 位图索引 655

27.3.7 基于函数的索引 656

27.3.8 连接索引 656

27.3.9 域索引 656

27.3.10 划分 657

27.3.11 物化视图 658

27.4 查询处理和优化 658

27.4.1 执行方法 658

27.4.2 优化 659

27.4.3 SQL调优顾问 661

27.4.4 并行执行 661

27.5 并发控制与恢复 662

27.5.1 并发控制 662

27.5.2 恢复的基本结构 663

27.5.3 Oracle数据卫士 664

27.6 系统体系结构 664

27.6.1 专用服务器:内存结构 664

27.6.2 专用服务器:进程结构 665

27.6.3 共享服务器 665

27.6.4 Oracle Real ApplicationClusters 665

27.7 复制. 分布以及外部数据 666

27.7.1 复制 666

27.7.2 分布式数据库 666

27.7.3 外部数据源 666

27.8 数据库管理工具 667

27.8.1 Automatic WorkloadRepository 667

27.8.2 数据库资源管理 667

27.8.3 Oracle Enterprise Manager 667

27.9 数据挖掘 667

文献注解 668

第28章 IBM DB2UniversalDatabase 669

28.1 概述 669

28.2 数据库设计工具 670

28.3 SQL的变化和扩展 670

28.3.1 XML特性 670

28.3.2 数据类型的支持 671

28.3.3 用户自定义函数和方法 672

28.3.4 大对象 672

28.3.5 索引扩展和约束 672

28.3.6 Web服务 672

28.3.7 消息队列 673

28.4 存储和索引 673

28.4.1 存储体系结构 673

28.4.2 缓冲池 674

28.4.3 表. 记录和索引 674

28.5 多维聚类 675

28.5.1 块索引 676

28.5.2 块映射 677

28.5.3 设计考虑 677

28.5.4 对现有技术的影响 677

28.6 查询处理和优化 677

28.6.1 存取方法 678

28.6.2 连接. 聚集和集合操作 679

28.6.3 对复杂SQL处理的支持 679

28.6.4 多处理器查询处理特性 679

28.6.5 查询优化 679

28.7 物化的查询表 680

28.7.1 发送查询到MQT 680

28.7.2 MQT的维护 680

28.8 DB2中的自治特性 681

28.8.1 配置 681

28.8.2 优化 681

28.9 工具和实用程序 682

28.10 并发控制和恢复 683

28.10.1 并发与隔离 683

28.10.2 提交和回滚 683

28.10.3 日志和恢复 684

28.11 系统体系结构 684

28.12 复制. 分布和外部数据 685

28.13 商务智能特性 686

文献注解 686

第29章 Microsoft SQL Server 687

29.1 管理. 设计和查询工具 687

29.1.1 数据库开发和可视化数据库工具 687

29.1.2 数据库查询和调整工具 687

29.1.3 SQL Server ManagementStudio 690

29.2 SQL的变体和扩展 691

29.2.1 数据类型 691

29.2.2 查询语言增强 691

29.2.3 例程 692

29.3 存储和索引 693

29.3.1 文件组 693

29.3.2 文件组中的空间管理 693

29.3.3 表 694

29.3.4 索引 694

29.3.5 分区 694

29.3.6 在线创建索引 694

29.3.7 扫描和预读 694

29.4 查询处理及优化 695

29.4.1 优化处理概述 695

29.4.2 查询简化 695

29.4.3 重排序和基于代价的优化 696

29.4.4 更新计划 696

29.4.5 优化时的数据分析 697

29.4.6 部分搜索和启发式搜索 697

29.4.7 查询执行 697

29.5 并发与恢复 698

29.5.1 事务 698

29.5.2 封锁 698

29.5.3 恢复和可用性 699

29.6 系统体系结构 700

29.6.1 服务器的线程池 701

29.6.2 内存管理 701

29.6.3 安全 701

29.7 数据访问 702

29.8 分布式异构查询处理 702

29.9 复制 703

29.9.1 复制模型 703

29.9.2 复制选项 703

29.10 .NET中的服务器编程 704

29.10.1 .NET基本概念 704

29.10.2 SQL CLR宿主 705

29.10.3 可扩展性协定 706

29.11 SQL Server2005中对XML的支持 707

29.11.1 本地存储和组织XML 708

29.11.2 验证和标定XML数据类型 708

29.11.3 查询和更新XML数据类型 708

29.11.4 XQuery表达式的执行 710

29.12 SQL Server服务代理 710

29.13 数据仓库和商务智能 712

29.13.1 SQL Server集成服务 712

29.13.2 SQL Server分析服务 713

29.13.3 SQL Server报表服务 714

文献注解 714

参考文献 716