《数据库管理系统 第2版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)Raghu Ramakrishnan,(美)Johannes Gehrke著;周立柱等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2002
  • ISBN:7302057613
  • 页数:667 页
图书介绍:

目录 1

译者序 1

第1章 数据库系统简介 3

第一部分 基本原理 3

前言 3

1.2 历史回顾 4

1.1 概述 4

1.4 数据库管理系统的优点 6

1.3 文件系统和数据库管理系统 6

1.5 数据库管理系统中数据的描述和存储 7

1.5.1 关系模型 8

1.5.2 数据库管理系统的抽象级别 9

1.5.3 数据独立性 10

1.7 事务管理 11

1.6 数据库管理系统中的查询 11

1.7.2 未完成的事务和系统崩溃 12

1.7.1 事务的并发执行 12

1.8 数据库管理系统的结构 13

1.7.3 要点 13

1.9 与数据库打交道的人 14

1.10 复习要点 15

练习 16

文献注解 17

项目练习 17

2.1 数据库设计纵览 18

第2章 实体—联系模型 18

2.1.1 其他步骤 19

2.3 联系和联系集 20

2.2 实体、属性和实体集 20

2.4.1 码约束 22

2.4 ER模型的其他特征 22

2.4.3 弱实体 24

2.4.2 参与约束 24

2.4.4 类层次 26

2.4.5 聚合 27

2.5.1 实体与属性 28

2.5 用ER模型进行概念数据库设计 28

2.5.2 实体与联系 29

2.5.3 二元与三元联系 30

2.5.4 聚合与三元联系 31

2.7 复习要点 32

2.6 大型企业的概念数据库设计 32

练习 33

文献注解 36

第3章 关系模型 37

3.1 关系模型简介 38

3.1.1 使用SQL-92创建和修改关系 40

3.2 关系上的完整性约束 41

3.2.1 码约束 42

3.2.2 外码约束 43

3.2.3 一般约束 44

3.3 完整性约束的强制执行 45

3.4 查询关系数据 47

3.5.1 从实体集合到关系表 49

3.5 逻辑数据库设计:从ER模型到关系模型 49

3.5.2 从联系集(不包括约束)到关系表 50

3.5.3 转换带有码约束的联系集 51

3.5.4 转换带有参与约束的联系集 52

3.5.6 转换类层次 54

3.5.5 转换弱实体集合 54

3.5.7 转换带聚合的ER图 55

3.5.8 ER模型到关系模型:更多的例子 56

3.6 视图简介 57

3.6.2 视图的更新 58

3.6.1 视图、数据独立性和安全 58

3.8 复习要点 61

3.7 删除/修改关系表和视图 61

练习 62

项目练习 63

文献注解 64

4.1 预备知识 67

第4章 关系代数和演算 67

第二部分 关系查询 67

4.2.1 选择和投影 68

4.2 关系代数 68

4.2.2 集合操作 69

4.2.4 连接 71

4.2.3 改名 71

4.2.5 除 73

4.2.6 关系代数查询的其他实例 74

4.3 关系演算 78

4.3.1 元组关系演算 79

4.3.2 域关系演算 82

4.4 代数与演算的表达能力 84

4.5 复习要点 85

练习 86

文献注解 88

第5章 SQL:查询、编程与触发程序 89

5.2 基本SQL查询的形式 91

5.1 用例说明 91

5.2.1 基本SQL查询的实例 94

5.2.2 在SELECT命令中的表达式和字符串 95

5.3 UNION、INTERSECT和EXCEPT 96

5.4.1 嵌套查询简介 99

5.4 嵌套查询 99

5.4.3 集合比较操作 101

5.4.2 相关嵌套查询 101

5.4.4 有关嵌套查询的其他例子 102

5.5 聚合操作符 103

5.5.1 GROUP BY和HAVING子句 105

5.5.2 聚合查询的其他例子 108

5.6.2 逻辑连接运算AND、OR和NOT 111

5.6.1 使用空值的比较 111

5.6 空值 111

5.6.4 外连接 112

5.6.3 SQL构造符的作用 112

5.7 嵌入式SQL 113

5.6.5 禁止使用空值 113

5.7.2 嵌入SQL语句 114

5.7.1 声明变量和异常 114

5.8.1 基本的游标定义和用法 115

5.8 游标 115

5.8.2 游标的性质 116

5.10 ODBC和JDBC 118

5.9 动态SQL 118

5.10.1 体系结构 119

5.10.2 使用JDBC的例子 120

5.11.1 单表上的约束 121

5.11 SQL-92中的复杂完整性约束 121

5.11.3 断言:几个表上的IC 122

5.11.2 域约束 122

5.12 触发程序和主动数据库 123

5.12.1 SQL中触发程序的例子 124

5.13.1 为什么触发程序难以理解 125

5.13 设计主动数据库 125

5.13.3 触发程序的其他用途 126

5.13.2 约束和触发程序 126

5.14 复习要点 127

练习 128

文献注解 133

项目练习 133

6.1 简介 134

第6章 示例查询——QBE 134

6.2 基本QBE查询 135

6.3 多个关系上的查询 136

6.2.1 其他的特点:复制、排序的答案 136

6.4 在“关系名”列上的否定 137

6.5 聚合 138

6.6 条件框 139

6.6.1 And/Or查询 140

6.8 更新 141

6.7 无名列 141

6.8.1 更新命令上的限制 142

6.9 除和关系完整性 143

6.10 复习要点 144

练习 145

文献注解 146

项目练习 146

7.1 存储层次 149

第7章 存储数据:磁盘和文件 149

第三部分 数据存储和索引 149

7.1.1 磁盘 150

7.2 RAID 152

7.1.2 磁盘结构对性能的影响 152

7.2.1 数据划分 153

7.2.3 冗余的层次 154

7.2.2 冗余 154

7.3.1 跟踪空闲块 157

7.3 磁盘空间管理 157

7.2.4 RAID级别的选择 157

7.4 缓冲区管理程序 158

7.3.2 使用操作系统中的文件系统来管理磁盘空间 158

7.4.1 缓冲区替换策略 159

7.4.2 数据库管理系统和操作系统的缓冲区管理 160

7.5.1 堆文件 162

7.5 文件和索引 162

7.5.2 索引简介 163

7.6.1 定长记录 165

7.6 页格式 165

7.6.2 变长记录 166

7.7.1 定长记录 167

7.7 记录格式 167

7.7.2 变长记录 168

7.8 复习要点 169

练习 170

文献注解 172

项目练习 172

8.1 代价模型 173

第8章 文件组织和索引 173

8.2 比较三种文件组织方式 174

8.2.2 排序文件 175

8.2.1 堆文件 175

8.2.3 哈希文件 176

8.2.4 选择文件的组织方式 177

8.3 索引概述 178

8.4.1 聚集索引和非聚集索引 179

8.4 索引的性质 179

8.3.1 索引中数据目录项的不同选择 179

8.4.3 主索引和二级索引 181

8.4.2 稠密索引和稀疏索引 181

8.5 SQL-92中的索引说明 182

8.4.4 使用组合搜索码的索引 182

练习 183

8.6 复习要点 183

文献注解 185

项目练习 185

9.1 索引顺序存取方法 186

第9章 树结构索引 186

9.2 B+树:一种动态索引结构 190

9.3 节点的格式 191

9.4 搜索 192

9.5 插入 193

9.6 删除 195

9.7 重复 199

9.8.1 码压缩 200

9.8 实际的B+树 200

9.8.2 B+树中的块载入 201

9.8.3 秩的概念 203

9.9 复习要点 204

9.8.4 在rid上的插入和删除的影响 204

练习 205

项目练习 208

文献注解 209

10.1 静态哈希 210

第10章 基于哈希的索引 210

10.2 可扩展哈希 211

10.1.1 记号和约定 211

10.3 线性哈希 215

10.4 可扩展哈希和线性哈希 220

练习 221

10.5 复习要点 221

文献注解 225

项目练习 225

第11章 外排序 229

第四部分 查询求解 229

11.1 简单的两路归并排序算法 230

11.2 外归并排序 232

11.2.1 运行次数的最小化 234

11.3.1 块读写 235

11.3 最小化I/O代价和I/O的次数 235

11.3.2 双缓冲 236

11.4.1 聚集索引 237

11.4 使用B+树来排序 237

11.4.2 非聚集索引 238

11.5 复习要点 239

练习 240

文献注解 241

项目练习 241

12.1 查询处理介绍 242

第12章 关系操作求解 242

12.1.2 预备知识:例子和代价计算 243

12.1.1 存取路径 243

12.2.2 没有索引的排序数据 244

12.2.1 没有索引的非排序数据 244

12.2 选择操作 244

12.2.3 B+树索引 245

12.3.1 CNF和索引匹配 246

12.3 一般的选择条件 246

12.2.4 哈希排序,等价选择 246

12.3.2 求解没有析取的选择 247

12.3.3 带有析取的选择 248

12.4 投影操作 249

12.4.2 基于哈希函数的投影 250

12.4.1 基于排序的投影 250

12.4.4 用于投影的索引的使用 252

12.4.3 用于投影的排序和哈希 252

12.5 连接操作 253

12.5.1 嵌套循环连接算法 254

12.5.2 排序归并连接算法 257

12.5.3 哈希连接 260

12.6 集合操作 264

12.5.4 一般的连接条件 264

12.7 聚合操作 265

12.6.2 用于并和差的哈希 265

12.6.1 用于并和差的排序 265

12.8 缓冲的影响 266

12.7.1 使用索引实现聚合 266

12.9 复习要点 267

练习 268

文献注解 271

项目练习 271

第13章 查询优化简介 272

13.1.1 查询求解计划 273

13.1 关系查询优化概述 273

13.1.2 流水线求解 274

13.1.4 System R优化器 275

13.1.3 操作符和访问方法的迭代接口 275

13.2.1 存储在系统目录中的信息 276

13.2 在关系DBMS中的系统目录 276

13.3.1 下推选择 278

13.3 可选计划:研究这一问题动机的实例 278

13.3.2 使用索引 279

练习 282

13.4 复习要点 282

第14章 典型的关系查询优化器 283

14.1 将SQL查询转换成关系代数表达式 284

14.2.1 估计结果的大小 286

14.2 估算执行计划的开销 286

14.3.2 投影 290

14.3.1 选择 290

14.3 关系代数的等价 290

14.3.4 选择、投影和连接 291

14.3.3 叉积和连接 291

14.3.5 其他的等价 292

14.4.1 单关系查询 293

14.4 列举可选的执行计划 293

14.4.2 多关系查询 296

14.5 嵌套子查询 302

14.7 复习要点 304

14.6 查询优化的其他方法 304

练习 305

文献注解 312

项目练习 312

15.1.1 冗余导致的问题 317

15.1 模式求精简介 317

第五部分 数据库设计 317

第15章 模式求精和范式 317

15.1.3 模式分解中的一些问题 319

15.1.2 模式分解 319

15.2 函数依赖 320

15.3.1 实体集上的约束 321

15.3 模式求精的动机 321

15.3.3 实体属性的确定 322

15.3.2 联系集上的约束 322

15.3.4 确定实体集 323

15.4.1 函数依赖集的闭包 324

15.4 函数依赖推理 324

15.5 范式 326

15.4.2 属性闭包 326

15.5.1 Boyce-Codd范式 327

15.5.2 第三范式 328

15.6 分解 329

15.6.1 无损连接分解 330

15.6.2 依赖保持分解 331

15.7.1 分解为BCNF 332

15.7 规范化 332

15.7.2 分解为3NF 333

15.8.1 多值依赖 336

15.8 其他类型的依赖 336

15.8.2 第四范式 338

15.8.5 包含依赖 339

15.8.4 第五范式 339

15.8.3 连接依赖 339

15.9 复习要点 340

练习 341

项目练习 344

文献注解 345

第16章 物理数据库设计和调整 346

16.1.1 数据库负载 347

16.1 物理数据库设计简介 347

16.2 索引选择的指导方针 348

16.1.3 数据库调整的必要性 348

16.1.2 物理设计和调整的决策 348

16.3 索引选择的基本例子 350

16.4 聚集和索引 351

16.4.1 两个关系的协同聚集 354

16.5 在多属性搜索码上的索引 355

16.6 能够实现只读索引计划的索引 356

16.7.1 调整索引 358

16.7 数据库调整简介 358

16.7.2 调整概念模式 359

16.7.3 调整查询和视图 360

16.8.2 分解 361

16.8.1 设置一个弱范式 361

16.8 调整概念模式时的选择 361

16.8.3 分解的选择 362

16.8.5 水平分解 363

16.8.4 垂直分解 363

16.9 调整查询和视图中的选择 364

16.10 并发控制的影响 365

16.11 DBMS基准测试 366

16.11.2 基准测试的使用 367

16.11.1 著名的DBMS基准测试 367

16.12 复习要点 368

练习 369

文献注解 375

项目练习 375

17.1 数据库安全简介 376

第17章 安全 376

17.3 任意存取控制 377

17.2 存取控制 377

17.3.1 授予和回收视图的访问控制和完整性约束 384

17.4 强制性存取控制 385

17.4.1 多级关系和多实例化 386

17.4.2 转换通道,DoD安全级别 387

17.5.2 统计数据库的安全 388

17.5.1 数据库管理员的任务 388

17.5 有关安全的其他问题 388

17.5.3 加密 389

17.6 复习要点 391

练习 392

文献注解 394

项目练习 394

18.1 事务概念 397

第18章 事务管理简介 397

第六部分 事务管理 397

18.1.2 原子性和持久性 398

18.1.1 一致性和隔离性 398

18.2 事务和调度 399

18.3.3 交叉执行带来的异常 400

18.3.2 可串行化 400

18.3 事务的并发执行 400

18.3.1 并发执行的动机 400

18.3.4 包括中止事务的调度 402

18.4.1 严格的两阶段加锁 403

18.4 基于加锁的并发控制 403

18.5 崩溃恢复简介 404

18.5.2 正常执行时与恢复相关的执行步骤 405

18.5.1 偷帧和强制写页 405

18.6 复习要点 406

18.5.3 ARIES简介 406

练习 407

文献注解 408

19.1.1 2PL、可串行性和可恢复性 409

19.1 回顾基于加锁的并发控制方法 409

第19章 并发控制 409

19.1.2 观测可串行化 411

19.2.1 实现加锁和解锁请求 412

19.2 加锁管理 412

19.2.2 死锁 413

19.2.3 基于加锁的并发控制的性能 415

19.3.1 动态数据库和幻影问题 416

19.3 特殊的加锁技术 416

19.3.2 B+树的并发控制 417

19.3.3 多粒度锁 419

19.4.1 事务特性 420

19.4 SQL-92对事务的支持 420

19.4.2 事务和约束 421

19.5.1 乐观的并发控制 422

19.5 不加锁的并发控制 422

19.5.2 基于时间戳的并发控制 423

19.5.3 多版本并发控制 425

19.6 复习要点 426

练习 427

文献注解 430

20.1 ARIES算法简介 431

第20章 崩溃恢复 431

20.1.1 日志 432

20.1.2 其他和恢复相关的数据结构 434

20.1.3 日志写优先的协议 435

20.2.1 分析阶段 436

20.2 从系统崩溃中恢复 436

20.1.4 检查点 436

20.2.2 重做阶段 438

20.2.3 取消阶段 439

20.3 介质恢复 441

20.5 复习要点 442

20.4 其他算法以及与并发控制的交互作用 442

练习 443

文献注解 445

第21章 并行和分布式数据库 449

第七部分 新课题 449

21.1 并行数据库系统的可用结构 450

21.2.1 数据划分 451

21.2 并行查询处理 451

21.3 数据操作的并行化 452

21.2.2 并行化顺序数据操作处理程序 452

21.3.3 连接 453

21.3.2 排序 453

21.3.1 批量载入和扫描 453

21.4 并行查询优化 455

21.5.1 分布式数据库系统的类型 456

21.5 分布式数据库简介 456

21.6.2 协同服务器系统 457

21.6.1 客户/服务器系统 457

21.6 分布式DBMS的体系结构 457

21.7.1 划分 458

21.7 分布式DBMS的数据存储 458

21.6.3 中间件系统 458

21.8.1 命名对象 459

21.8 分布目录管理 459

21.7.2 复制 459

21.8.3 分布数据的独立性 460

21.8.2 目录结构 460

21.9.1 分布式DBMS中无连接的查询 461

21.9 分布式查询处理 461

21.9.2 分布式DBMS中的连接操作 462

21.10 分布数据的更新 465

21.9.3 基于代价的查询优化 465

21.10.2 异步复制 466

21.10.1 同步复制 466

21.11 分布式事务处理简介 468

21.12.1 分布式死锁 469

21.12 分布式并发控制 469

21.13 分布式事务恢复 470

21.13.1 事务正常执行和提交协议 471

21.13.2 发生故障后进行恢复 472

21.13.3 重新讨论两阶段提交 473

21.14 复习要点 474

21.13.4 三阶段提交 474

练习 476

文献注解 481

22.1 万维网 483

第22章 因特网数据库 483

22.1.1 HTML简介 484

22.2 体系结构 485

22.1.2 数据库和万维网 485

22.2.1 应用服务器和服务器端Java 487

22.3.1 XML简介 490

22.3 HTML以外的其他技术 490

22.3.2 XML DTD 492

22.3.3 特定领域的DTD 494

22.3.4 XML-QL:查询XML数据 495

22.3.5 半结构化数据模型 497

22.3.6 半结构化数据的实现问题 498

22.4 用于文本搜索的索引 499

22.4.1 倒排文件 500

22.5 万维网上的分级关键字搜索 501

22.4.2 签名文件 501

22.5.1 万维网页分级算法 502

22.6 复习要点 504

练习 505

文献注解 507

第23章 决策支持 509

23.1 决策支持简介 510

23.2.1 创建和管理数据仓库 511

23.2 数据仓库 511

23.3 OLAP 512

23.3.1 多维数据模型 512

23.3.2 OLAP查询 514

23.3.3 面向OLAP的数据库设计 517

23.4.1 位图索引 518

23.4 OLAP实现技术 518

23.4.2 连接索引 519

23.4.3 文件组织 520

23.5.1 视图、OLAP和数据仓库 521

23.5 视图和决策支持 521

23.4.4 其他OLAP实现问题 521

23.5.3 视图实物化和按需要进行计算 522

23.5.2 查询的修改 522

23.5.4 视图实物化的问题 524

23.6.1 前N项查询 525

23.6 快速得到查询结果 525

23.6.2 联机聚集 526

23.7 复习要点 527

练习 528

文献注解 530

24.1 数据挖掘简介 531

第24章 数据挖掘 531

24.2 关联计数 532

24.2.1 频繁项集 533

24.2.2 冰山式查询 534

24.3 规则挖掘 535

24.3.3 关联规则和ISA层次 536

24.3.2 找出关联规则的算法 536

24.3.1 关联规则 536

24.3.4 通用化关联规则 537

24.3.5 顺序模式 538

24.3.6 使用关联规则进行预测 539

24.3.8 分类和回归规则 540

24.3.7 贝叶斯网络 540

24.4 树结构规则 541

24.4.1 决策树 542

24.4.2 建立决策树的算法 543

24.5.1 聚类算法 545

24.5 聚类 545

24.6 在序列上的相似搜索 546

24.7 其他的数据挖掘任务 547

24.6.1 找出相似序列的算法 547

24.8 复习要点 548

练习 549

文献注解 550

第25章 对象数据库系统 552

25.1.1 新的数据类型 553

25.1 说明研究动因的实例 553

25.1.2 操纵新类型数据 554

25.2 用户定义的抽象数据类型 556

25.2.1 ADT方法的定义 557

25.3 构造类型 558

25.3.1 构造类型的数据操纵 559

25.4.1 相等的概念 561

25.4 对象、对象标识符和引用类型 561

25.5.1 定义带有继承的类型 563

25.5 继承 563

25.4.2 引用类型的解除 563

25.5.3 群体层次、类型区间和查询 564

25.5.2 方法联编 564

25.6.1 构造类型和ADT 565

25.6 ORDBMS的数据库设计 565

25.6.2 对象标识符 567

25.6.3 扩展ER模型 568

25.7.1 存储和存取方法 569

25.7 实现ORDBMS的新挑战 569

25.6.4 使用嵌套群体 569

25.7.2 查询处理 571

25.7.3 查询优化 572

25.8 OODBMS 573

25.8.1 ODMG数据模型和ODL 574

25.8.2 OQL 575

25.9.1 RDBMS和ORDBMS 576

25.9 RDBMS与OODBMS和ORDBMS的比较 576

25.10 复习要点 577

25.9.3 OODBMS和ORDBMS:不同点 577

25.9.2 OODBMS和ORDBMS:相似点 577

练习 579

文献注解 581

26.1 空间数据和查询类型 583

第26章 空间数据管理 583

26.2 涉及空间数据的应用 584

26.3 空间索引简介 586

26.4 基于空间填充曲线的索引 587

26.3.1 已提出的索引结构概述 587

26.4.1 区域四叉树和Z-排序区域数据 588

26.5 网格文件 589

26.4.2 使用Z-排序的空间查询 589

26.6 R树:点和区域数据 592

26.5.1 使用网格文件来处理区域 592

26.6.1 查询 593

26.6.2 插入和删除操作 594

26.6.4 通用化搜索树 595

26.6.3 并发控制 595

26.8 复习要点 596

26.7 高维索引问题 596

练习 597

文献注解 599

第27章 演绎数据库 600

27.1.1 Datalog 601

27.1 递归查询简介 601

27.2 理论基础 603

27.2.1 最小模型语义 604

27.2.3 不动点操作符 605

27.2.2 安全datalog程序 605

27.3 带有否定的递归查询 606

27.2.4 最小模型=最小不动点 606

27.3.1 范围限制和否定 607

27.3.2 分层 608

27.3.3 聚合操作 609

27.4 递归查询的有效求解 610

27.4.1 无重复推理的不动点求解 611

27.4.2 下移选择操作来避免不相关的推理 612

练习 614

27.5 复习要点 614

文献注解 616

28.1.1 事务处理监视程序 617

28.1 高级事务处理 617

第28章 其他专题 617

28.2 对多个数据源的集成访问 618

28.1.3 实时DBMS 618

28.1.2 新的事务模型 618

28.4 主存数据库 619

28.3 移动数据库 619

28.5 多媒体数据库 620

28.7 时态和序列数据库 621

28.6 地理信息系统 621

文献注解 622

28.9 总结 622

28.8 信息可视化 622

附录A 数据库设计实例研究:因特网商店 624

附录B MINIBASE教学辅助软件 633

参考文献 636