本书是经典的数据库系统教科书《Database System Concepts》的最新修订版,它被国际上许多著名大学采用,包括斯坦福大学、德克萨斯大学、印度理工学院等。而且,这本书前一版的中文版被国内的许多大学采用为本科生和研究生的数据库课程的教材或主要教学参考书,收到了良好的效果。
本书包含了数据模型、关系模型、基于对象的系统和XML、数据存储和检索、事务处理、数据库系统体系结构等方面的内容,在第八部分“实例研究”中还讨论了特定的商品化数据库系统的细节。同时,本书还提供了关于网状模型和层次模型的联机附录。文献注解中指出了首先发表各个研究结果的文章,并列出了进一步阅读的参考文献。本书中的概念都以直观的方式加以描述,其中的许多概念基于银行运行示例,另外,书中省略了形式化证明而采用图表和示例来描述概念及预期结果,增强了本书的易读性。本书会使读者在数据库设计、数据库语言、数据库系统实现等方面得到明显提高。
本书既可作为本科生三、四年级的数据库课程教材,也可作为研究生一年级的教科书。同时,本书还提供了高级内容供数据库领域的技术人员阅读。
◆涵盖了数据模型、关系模型、基于对象的系统和XML、数据存储和检索、事务处理、数据库系统体系结构等多方面的内容
◆采用直观的方式描述所有概念,并以结构清晰的图示和例子代替形式化的证明
◆以银行数据库实例生动地解释重要概念,增强了本书的易读性
◆专门用三章来介绍特定的商品化数据库系统Oracle、Microsoft SQL Server和IBM DB2的细节
◆配有关于网状模型和层次模型的联机附录 (英文)
第1章 引言 1\r\n1.1 数据库系统的应用 1\r\n1.2 数据库系统与文件系统 2\r\n1.3 数据视图 3\r\n1.3.1 数据抽象 4\r\n1.3.2 实例和模式 5\r\n1.4 数据模型 5\r\n1.4.1 实体-联系模型 5\r\n1.4.2 关系模型 6\r\n1.4.3 其他数据模型 7\r\n1.5 数据库语言 7\r\n1.5.1 数据定义语言 7\r\n1.5.2 数据操纵语言 8\r\n1.5.3 来自应用程序的数据库访问 9\r\n1.6 数据库用户和管理员 9\r\n1.6.1 数据库用户和用户界面 9\r\n1.6.2 数据库管理员 10\r\n1.7 事务管理 10\r\n1.8 数据库系统结构 11\r\n1.8.1 存储管理器 11\r\n1.8.2 查询处理器 12\r\n1.9 应用程序体系结构 12\r\n1.10 数据库系统的历史 12\r\n1.11 小结 15\r\n术语回顾 15\r\n习题 16\r\n文献注解 16\r\n工具 16\r\n第一部分 数据模型\r\n第2章 实体-联系模型 18\r\n2.1 基本概念 18\r\n2.1.1 实体集 18\r\n2.1.2 联系集 20\r\n2.2 约束 22\r\n2.2.1 映射基数 22\r\n2.2.2 参与约束 23\r\n2.3 码 23\r\n2.3.1 实体集 23\r\n2.3.2 联系集 24\r\n2.4 设计问题 25\r\n2.4.1 用实体集还是用属性 25\r\n2.4.2 用实体集还是用联系集 25\r\n2.4.3 二元联系集与 n 元联系集 26\r\n2.4.4 联系属性的布局 27\r\n2.5 实体-联系图 27\r\n2.6 弱实体集 32\r\n2.7 扩展的E-R特性 33\r\n2.7.1 特殊化 33\r\n2.7.2 一般化 34\r\n2.7.3 属性继承 35\r\n2.7.4 一般化约束 35\r\n2.7.5 聚集 36\r\n2.7.6 可选择的E-R符号 37\r\n2.8 数据库E-R模式的设计 39\r\n2.8.1 设计阶段 39\r\n2.8.2 银行企业的数据库设计 40\r\n2.9 将E-R模式转换为表 41\r\n2.9.1 用表表示强实体集 42\r\n2.9.2 用表表示弱实体集 43\r\n2.9.3 用表表示联系集 43\r\n2.9.4 复合属性 44\r\n2.9.5 多值属性 45\r\n2.9.6 用表表示一般化 45\r\n2.9.7 用表表示聚集 45\r\n2.10 统一建模语言UML** 45\r\n2.11 小结 46\r\n术语回顾 48\r\n习题 48\r\n文献注解 51\r\n工具 52\r\n第3章 关系模型 53\r\n3.1 关系数据库的结构 53\r\n3.1.1 基本结构 53\r\n3.1.2 数据库模式 55\r\n3.1.3 码 57\r\n3.1.4 模式图 58\r\n3.1.5 查询语言 59\r\n3.2 关系代数 59\r\n3.2.1 基本运算 59\r\n3.2.2 关系代数的形式化定义 65\r\n3.2.3 附加运算 65\r\n3.3 扩展的关系代数运算 69\r\n3.3.1 广义投影 69\r\n3.3.2 聚集函数 69\r\n3.3.3 外连接 71\r\n3.3.4 空值** 73\r\n3.4 数据库的修改 74\r\n3.4.1 删除 74\r\n3.4.2 插入 75\r\n3.4.3 更新 75\r\n3.5 视图 76\r\n3.5.1 视图定义 76\r\n3.5.2 通过视图进行更新与空值 77\r\n3.5.3 用视图定义视图 77\r\n3.6 元组关系演算 78\r\n3.6.1 查询的例子 79\r\n3.6.2 形式化定义 81\r\n3.6.3 表达式的安全性 81\r\n3.6.4 语言的表达能力 82\r\n3.7 域关系演算** 82\r\n3.7.1 形式化定义 82\r\n3.7.2 查询的例子 82\r\n3.7.3 表达式的安全性 83\r\n3.7.4 语言的表达能力 84\r\n3.8 小结 84\r\n术语回顾 85\r\n习题 85\r\n文献注解 88\r\n第二部分 关系数据库\r\n第4章 SQL 90\r\n4.1 背景 90\r\n4.2 基本结构 91\r\n4.2.1 select子句 91\r\n4.2.2 where子句 92\r\n4.2.3 from子句 93\r\n4.2.4 更名运算 93\r\n4.2.5 元组变量 94\r\n4.2.6 字符串操作 94\r\n4.2.7 排列元组的显示次序 95\r\n4.2.8 重复 95\r\n4.3 集合运算 96\r\n4.3.1 并运算 96\r\n4.3.2 交运算 97\r\n4.3.3 差运算 97\r\n4.4 聚集函数 97\r\n4.5 空值 99\r\n4.6 嵌套子查询 100\r\n4.6.1 集合成员资格 100\r\n4.6.2 集合的比较 101\r\n4.6.3 测试是否为空关系 102\r\n4.6.4 测试是否存在重复元组 103\r\n4.7 视图 104\r\n4.8 复杂查询 104\r\n4.8.1 派生关系 104\r\n4.8.2 with子句 105\r\n4.9 数据库的修改 106\r\n4.9.1 删除 106\r\n4.9.2 插入 107\r\n4.9.3 更新 108\r\n4.9.4 视图的更新 109\r\n4.9.5 事务 110\r\n4.10 关系的连接** 110\r\n4.10.1 举例 110\r\n4.10.2 连接类型和条件 112\r\n4.11 数据定义语言DDL 113\r\n4.11.1 SQL中的域类型 114\r\n4.11.2 SQL的模式定义 115\r\n4.12 嵌入式SQL 117\r\n4.13 动态SQL 119\r\n4.13.1 ODBC** 119\r\n4.13.2 JDBC** 121\r\n4.14 其他SQL特性 123\r\n4.14.1 模式. 目录. 环境 123\r\n4.14.2 过程扩展与存储过程 123\r\n4.15 小结 124\r\n术语回顾 124\r\n习题 125\r\n文献注解 127\r\n第5章 其他关系语言 128\r\n5.1 Query-by-Example 128\r\n5.1.1 在一个关系上的查询 128\r\n5.1.2 在多个关系上的查询 130\r\n5.1.3 条件框 131\r\n5.1.4 结果关系 132\r\n5.1.5 元组的显示次序 133\r\n5.1.6 聚集操作 133\r\n5.1.7 数据库的修改 134\r\n5.1.8 在Microsoft Access中的QBE 136\r\n5.2 Datalog 137\r\n5.2.1 基本结构 137\r\n5.2.2 Datalog规则的语法 139\r\n5.2.3 非递归Datalog的语义 140\r\n5.2.4 安全性 142\r\n5.2.5 Datalog中的关系运算 143\r\n5.2.6 Datalog中的递归 143\r\n5.2.7 递归的能力 145\r\n5.2.8 其他语言的递归 146\r\n5.3 用户界面和工具 147\r\n5.3.1 表单和图形用户界面 147\r\n5.3.2 报表生成器 148\r\n5.4 小结 149\r\n术语回顾 149\r\n习题 149\r\n文献注解 151\r\n工具 152\r\n第6章 完整性和安全性 153\r\n6.1 域约束 153\r\n6.2 参照完整性 154\r\n6.2.1 基本概念 154\r\n6.2.2 E-R模型中的参照完整性 155\r\n6.2.3 数据库的修改 156\r\n6.2.4 SQL中的参照完整性 156\r\n6.3 断言 158\r\n6.4 触发器 158\r\n6.4.1 触发器的需求 159\r\n6.4.2 SQL中的触发器 159\r\n6.4.3 何时不用触发器 161\r\n6.5 安全性和授权 162\r\n6.5.1 安全性违例 162\r\n6.5.2 授权 163\r\n6.5.3 授权与视图 164\r\n6.5.4 权限的授予 164\r\n6.5.5 角色的概念 165\r\n6.5.6 审计追踪 166\r\n6.6 SQL中授权 166\r\n6.6.1 SQL中的权限 166\r\n6.6.2 角色 167\r\n6.6.3 授权的权限 167\r\n6.6.4 其他特性 168\r\n6.6.5 SQL授权的局限 168\r\n6.7 加密和鉴定 168\r\n6.7.1 加密技术 169\r\n6.7.2 鉴定 170\r\n6.8 小结 170\r\n术语回顾 171\r\n习题 171\r\n文献注解 173\r\n第7章 关系数据库设计 174\r\n7.1 第一范式 174\r\n7.2 关系数据库设计中易犯的错误 175\r\n7.3 函数依赖 176\r\n7.3.1 基本概念 176\r\n7.3.2 函数依赖集的闭包 179\r\n7.3.3 属性集的闭包 180\r\n7.3.4 正则覆盖 181\r\n7.4 模式分解 183\r\n7.5 分解应具有的特性 186\r\n7.5.1 无损连接分解 187\r\n7.5.2 保持依赖 187\r\n7.5.3 信息重复 189\r\n7.6 Boyce-Codd范式 189\r\n7.6.1 定义 189\r\n7.6.2 分解算法 191\r\n7.6.3 保持依赖 192\r\n7.7 第三范式 193\r\n7.7.1 定义 193\r\n7.7.2 分解算法 194\r\n7.7.3 BCNF和3NF的比较 195\r\n7.8 第四范式 196\r\n7.8.1 多值依赖 196\r\n7.8.2 第四范式定义 198\r\n7.8.3 分解算法 198\r\n7.9 更多范式 199\r\n7.10 整体数据库设计过程 199\r\n7.10.1 E-R模型和规范化 200\r\n7.10.2 泛关系设计方法 200\r\n7.10.3 为了性能解除规范化 201\r\n7.10.4 其他设计问题 202\r\n7.11 小结 202\r\n术语回顾 203\r\n习题 203\r\n文献注解 206\r\n第三部分 基于对象的数据库和XML\r\n第8章 面向对象数据库 208\r\n8.1 复杂数据类型的需要 208\r\n8.2 面向对象数据模型 208\r\n8.2.1 对象结构 209\r\n8.2.2 对象类 209\r\n8.2.3 继承 211\r\n8.2.4 多重继承 213\r\n8.2.5 对象标识 214\r\n8.2.6 对象包含 215\r\n8.3 面向对象的语言 216\r\n8.4 持久化程序设计语言 216\r\n8.4.1 对象的持久性 217\r\n8.4.2 对象标识与指针 218\r\n8.4.3 持久对象的存储和访问 218\r\n8.5 持久化C++系统 219\r\n8.5.1 ODMG C++对象定义语言 219\r\n8.5.2 ODMG C++对象操纵语言 222\r\n8.6 持久化 Java 系统 225\r\n8.7 小结 226\r\n术语回顾 226\r\n习题 226\r\n文献注解 227\r\n第9章 对象-关系数据库 229\r\n9.1 嵌套关系 229\r\n9.2 复杂类型 231\r\n9.2.1 集合体与大对象类型 231\r\n9.2.2 结构类型 232\r\n9.2.3 复杂类型的值的创建 233\r\n9.3 继承 234\r\n9.3.1 类型继承 234\r\n9.3.2 表继承 235\r\n9.3.3 重叠子表 236\r\n9.4 引用类型 237\r\n9.5 与复杂类型有关的查询 238\r\n9.5.1 路径表达式 238\r\n9.5.2 以集合体为值的属性 238 9.5.3 嵌套与解除嵌套 239\r\n9.6 函数和过程 240\r\n9.6.1 SQL函数和过程 240\r\n9.6.2 外部语言程序 241\r\n9.6.3 过程的构造 242\r\n9.7 面向对象与对象-关系 244\r\n9.8 小结 245\r\n术语回顾 245\r\n习题 246\r\n文献注解 247\r\n工具 248\r\n第10章 XML 249\r\n10.1 背景 249\r\n10.2 XML数据结构 251\r\n10.3 XML文档模式 253\r\n10.3.1 文档类型定义 253\r\n10.3.2 XML模式 256\r\n10.4 查询和转换 256\r\n10.4.1 XPath 258\r\n10.4.2 XSLT 259\r\n10.4.3 XQuery 261\r\n10.5 应用程序接口 264\r\n10.6 XML数据的存储 264\r\n10.6.1 关系数据库 264\r\n10.6.2 非关系的数据存储 266\r\n10.7 XML应用 266\r\n10.7.1 数据交换 266\r\n10.7.2 数据中介 267\r\n10.8 小结 268\r\n术语回顾 269\r\n习题 269\r\n文献注解 270\r\n工具 271\r\n第四部分 数据存储和查询\r\n第11章 存储和文件结构 274\r\n11.1 物理存储介质概述 274\r\n11.2 磁盘 276\r\n11.2.1 磁盘的物理特性 276\r\n11.2.2 磁盘性能的度量 278\r\n11.2.3 磁盘块存取的优化 279\r\n11.3 RAID 281\r\n11.3.1 通过冗余提高可靠性 281\r\n11.3.2 通过并行提高性能 282\r\n11.3.3 RAID级别 283\r\n11.3.4 RAID级别的选择 285\r\n11.3.5 硬件问题 286\r\n11.3.6 其他的RAID应用 287\r\n11.4 第三级存储 287\r\n11.4.1 光盘 287\r\n11.4.2 磁带 288\r\n11.5 存储访问 288\r\n11.5.1 缓冲区管理 289\r\n11.5.2 缓冲区替换策略 289\r\n11.6 文件组织 291\r\n11.6.1 定长记录 291\r\n11.6.2 变长记录 292\r\n11.7 文件中记录的组织 295\r\n11.7.1 顺序文件组织 296\r\n11.7.2 聚簇文件组织 297\r\n11.8 数据字典 298\r\n11.9 面向对象数据库的存储** 299\r\n11.9.1 对象到文件的映射 299\r\n11.9.2 对象标识符的实现 300\r\n11.9.3 持久化指针的管理 301\r\n11.9.4 硬件混写 301\r\n11.9.5 对象的磁盘结构与内存结构 305\r\n11.9.6 大对象 305\r\n11.10 小结 306\r\n术语回顾 307\r\n习题 308\r\n文献注解 309\r\n第12章 索引与散列 311\r\n12.1 基本概念 311\r\n12.2 有序索引 312\r\n12.2.1 主索引 312\r\n12.2.2 辅助索引 316\r\n12.3 B+树索引文件 317\r\n12.3.1 B+树的结构 317\r\n12.3.2 B+树上的查询 318\r\n12.3.3 B+树的更新 320\r\n12.3.4 B+树文件组织 323\r\n12.4 B树索引文件 325\r\n12.5 静态散列 326\r\n12.5.1 散列文件组织 326\r\n12.5.2 散列索引 329\r\n12.6 动态散列 330\r\n12.6.1 数据结构 330\r\n12.6.2 查询和更新 331\r\n12.6.3 与其他方案的比较 334\r\n12.7 有序索引和散列的比较 335\r\n12.8 SQL中的索引定义 336\r\n12.9 多码访问 336\r\n12.9.1 使用多个单码索引 336\r\n12.9.2 多码索引 337\r\n12.9.3 网格文件 337\r\n12.9.4 位图索引 339\r\n12.10 小结 342\r\n术语回顾 343\r\n习题 343\r\n文献注解 344\r\n第13章 查询处理 346\r\n13.1 概述 346\r\n13.2 查询代价的测量 347\r\n13.3 选择运算 348\r\n13.3.1 基本算法 348\r\n13.3.2 使用索引的选择 349\r\n13.3.3 涉及比较的选择 350\r\n13.3.4 复杂选择的实现 350\r\n13.4 排序 351\r\n13.5 连接运算 353\r\n13.5.1嵌嵌套循环连接 353\r\n13.5.2嵌块嵌套循环连接 354\r\n13.5.3嵌索引嵌套循环连接 355\r\n13.5.4嵌归并连接 356\r\n13.5.5嵌散列连接 358\r\n13.5.6嵌复杂连接 361\r\n13.6 其他运算 362\r\n13.6.1 消除重复 362\r\n13.6.2 投影 362\r\n13.6.3 集合运算 362\r\n13.6.4 外连接 363\r\n13.6.5 聚集 363\r\n13.7 表达式计算 364\r\n13.7.1 实体化 364\r\n13.7.2 流水线 365\r\n13.8 小结 368\r\n术语回顾 368\r\n习题 369\r\n文献注解 370\r\n第14章 查询优化 371\r\n14.1 概述 371\r\n14.2 表达式结果统计信息的估计 372\r\n14.2.1 目录信息 372\r\n14.2.2 选择运算结果的估计 373\r\n14.2.3 连接运算结果的估计 374\r\n14.2.4 其他运算的结果的估计 375\r\n14.2.5 不同取值个数的估计 376\r\n14.3 关系表达式的转换 376\r\n14.3.1 等价规则 377\r\n14.3.2 转换的例子 379\r\n14.3.3 连接的次序 380\r\n14.3.4 等价表达式的枚举 381\r\n14.4 执行计划的选择 382\r\n14.4.1 查询执行技术的相互作用 382\r\n14.4.2 基于代价的优化 383\r\n14.4.3 启发式优化 384\r\n14.4.4 查询优化器的结构** 386\r\n14.4.5 嵌套子查询的优化** 387\r\n14.5 物化视图** 388\r\n14.5.1 视图维护 389\r\n14.5.2 增量视图维护 389\r\n14.5.3 查询优化和物化视图 391\r\n14.6 小结 392\r\n术语回顾 393\r\n习题 393\r\n文献注解 395\r\n第五部分 事务管理\r\n第15章 事务 398\r\n15.1 事务概念 398\r\n15.2 事务状态 400\r\n15.3 原子性和持久性的实现 401\r\n15.4 并发执行 403\r\n15.5 可串行化 405\r\n15.5.1 冲突可串行化 406\r\n15.5.2 视图可串行化 407\r\n15.6 可恢复性 408\r\n15.6.1 可恢复调度 408\r\n15.6.2 无级联调度 409\r\n15.7 隔离性的实现 409\r\n15.8 SQL中的事务定义 409\r\n15.9 可串行化的判定 410\r\n15.10 小结 411\r\n术语回顾 412\r\n习题 412\r\n文献注解 413\r\n第16章 并发控制 414\r\n16.1 基于锁的协议 414\r\n16.1.1 锁 414\r\n16.1.2 锁的授予 417\r\n16.1.3 两阶段封锁协议 417\r\n16.1.4 封锁的实现** 419\r\n16.1.5 基于图的协议 420\r\n16.2 基于时间戳的协议 422\r\n16.2.1 时间戳 422\r\n16.2.2 时间戳排序协议 422\r\n16.2.3 Thomas写规则 424\r\n16.3 基于有效性检查的协议 424\r\n16.4 多粒度 425\r\n16.5 多版本机制 428\r\n16.5.1 多版本时间戳排序 428\r\n16.5.2 多版本两阶段封锁 429\r\n16.6 死锁处理 429\r\n16.6.1 死锁预防 430\r\n16.6.2 基于超时的机制 431\r\n16.6.3 死锁检测与恢复 431\r\n16.7 插入与删除操作 432\r\n16.7.1 删除 433\r\n16.7.2 插入 433\r\n16.7.3 幻象现象 433\r\n16.8 弱一致性级别 435\r\n16.8.1 二级一致性 435\r\n16.8.2 游标稳定性 435\r\n16.8.3 SQL中的弱一致性级别 436\r\n16.9 索引结构中的并发** 436\r\n16.10 小结 438\r\n术语回顾 440\r\n习题 441\r\n文献注解 443\r\n第17章 恢复系统 445\r\n17.1 故障分类 445\r\n17.2 存储器结构 445\r\n17.2.1 存储器类型 445\r\n17.2.2 稳定存储器的实现 446\r\n17.2.3 数据访问 447\r\n17.3 恢复与原子性 448\r\n17.4 基于日志的恢复 449\r\n17.4.1 延迟的数据库修改 449\r\n17.4.2 立即的数据库修改 451\r\n17.4.3 检查点 453\r\n17.5 影子分页 454\r\n17.6 并发事务的恢复 457\r\n17.6.1 与并发控制的关系 457\r\n17.6.2 事务回滚 457\r\n17.6.3 检查点 458\r\n17.6.4 重启动恢复 458\r\n17.7 缓冲区管理 459\r\n17.7.1 日志记录缓冲 459\r\n17.7.2 数据库缓冲 459\r\n17.7.3 操作系统在缓冲区管理中的作用 460\r\n17.8 非易失性存储器数据丢失的故障 461\r\n17.9 高级恢复技术** 461\r\n17.9.1 逻辑undo日志 462\r\n17.9.2 事务回滚 462\r\n17.9.3 检查点 463\r\n17.9.4 重启动恢复 463\r\n17.9.5 模糊检查点 464\r\n17.9.6 ARIES 464\r\n17.10 远程备份系统 467\r\n17.11 小结 468\r\n术语回顾 470\r\n习题 470\r\n文献注解 472\r\n第六部分 数据库系统体系结构\r\n第18章 数据库系统体系结构 474\r\n18.1 集中式体系结构与客户-服务器\r\n体系结构 474\r\n18.1.1 集中式系统 474\r\n18.1.2 客户-服务器系统 475\r\n18.2 服务器系统体系结构 476\r\n18.2.1 事务服务器进程结构 477\r\n18.2.2 数据服务器 478\r\n18.3 并行系统 479\r\n18.3.1 加速比和扩展比 480\r\n18.3.2 互连网络 482\r\n18.3.3 并行数据库体系结构 482\r\n18.4 分布式系统 484\r\n18.4.1 分布式数据库的一个例子 486\r\n18.4.2 实现问题 486\r\n18.5 网络类型 487\r\n18.5.1 局域网 487\r\n18.5.2 广域网 488\r\n18.6 小结 489\r\n术语回顾 489\r\n习题 490\r\n文献注解 491\r\n第19章 分布式数据库 492\r\n19.1 同构数据库和异构数据库 492\r\n19.2 分布式数据存储 492\r\n19.2.1 数据复制 493\r\n19.2.2 数据分片 493\r\n19.2.3 透明性 494\r\n19.3 分布式事务 495\r\n19.3.1 系统结构 495\r\n19.3.2 系统故障模式 496\r\n19.4 提交协议 497\r\n19.4.1 两阶段提交 497\r\n19.4.2 三阶段提交 499\r\n19.4.3 事务处理的可选择模型 500\r\n19.5 分布式数据库的并发控制 501\r\n19.5.1 封锁协议 501\r\n19.5.2 时间戳 503\r\n19.5.3 弱一致性复制 504\r\n19.5.4 死锁处理 505\r\n19.6 可用性 507\r\n19.6.1 基于多数的方法 508\r\n19.6.2 读一个. 写所有可用的方法 508\r\n19.6.3 站点重建 509\r\n19.6.4 与远程备份比较 509\r\n19.6.5 协调器的选择 509\r\n19.7 分布式查询处理 510\r\n19.7.1 查询转换 510\r\n19.7.2 简单的连接处理 511\r\n19.7.3 半连接策略 512\r\n19.7.4 利用并行性的连接策略 512\r\n19.8 异构分布式数据库 513\r\n19.8.1 数据的统一视图 513\r\n19.8.2 查询处理 514\r\n19.9 目录系统 514\r\n19.9.1 目录访问协议 515\r\n19.9.2 LDAP:轻型目录访问协议 515\r\n19.10 小结 518\r\n术语回顾 520\r\n习题 520\r\n文献注解 522\r\n第20章 并行数据库 524\r\n20.1 引言 524\r\n20.2 I/O并行 524\r\n20.2.1 划分技术 525\r\n20.2.2 划分技术的比较 525\r\n20.2.3 偏斜的处理 526\r\n20.3 查询间并行 527\r\n20.4 查询内并行 528\r\n20.5 操作内并行 529\r\n20.5.1 并行排序 529\r\n20.5.2 并行连接 530\r\n20.5.3 其他关系运算 533\r\n20.5.4 操作的并行计算的代价 534\r\n20.6 操作间并行 534\r\n20.6.1 流水线并行 534\r\n20.6.2 独立并行 535\r\n20.6.3 查询优化 535\r\n20.7 并行系统设计 536\r\n20.8 小结 537\r\n术语回顾 538\r\n习题 538\r\n文献注解 539\r\n第七部分 其他主题\r\n第21章 应用开发和管理 542\r\n21.1 数据库的Web接口 542\r\n21.1.1 动机 542\r\n21.1.2 Web基础 543\r\n21.1.3 Web服务器和会话 545\r\n21.1.4 servlet 546\r\n21.1.5 服务器端脚本 548\r\n21.1.6 提高性能 548\r\n21.2 性能调整 548\r\n21.2.1 瓶颈的定位 549\r\n21.2.2 可调参数 550\r\n21.2.3 硬件的调整 550\r\n21.2.4 模式的调整 551\r\n21.2.5 索引的调整 552\r\n21.2.6 使用物化视图 552\r\n21.2.7 事务的调整 553\r\n21.2.8 性能模拟 555\r\n21.3 性能基准程序 555\r\n21.3.1 任务集 555\r\n21.3.2 数据库应用类型 556\r\n21.3.3 TPC基准程序 556\r\n21.3.4 OODB基准程序 557\r\n21.4 标准化 558\r\n21.4.1 SQL标准 558\r\n21.4.2 数据库连接标准 559\r\n21.4.3 对象数据库标准 560\r\n21.4.4 基于XML的标准 560\r\n21.5 电子商务** 561\r\n21.5.1 电子目录 561\r\n21.5.2 市场 561\r\n21.5.3 订单结算 562\r\n21.6 遗留系统 563\r\n21.7 小结 563\r\n术语回顾 564\r\n习题 565\r\n项目建议 565\r\n文献注解 567\r\n工具 567\r\n第22章 高级查询和信息检索 568\r\n22.1 决策支持系统 568\r\n22.2 数据分析和联机分析处理 569\r\n22.2.1 联机分析处理 569\r\n22.2.2 联机分析处理实现 573\r\n22.2.3 扩展聚集 573\r\n22.2.4 排名次 575\r\n22.2.5 分窗 577\r\n22.3 数据挖掘 578\r\n22.3.1 数据挖掘应用 578\r\n22.3.2 分类 579\r\n22.3.3 关联规则 584\r\n22.3.4 其他类型的关联 586\r\n22.3.5 聚类 586\r\n22.3.6 其他类型的挖掘 587\r\n22.4 数据仓库 588\r\n22.4.1 数据仓库的成分 588\r\n22.4.2 数据仓库模式 589\r\n22.5 信息检索系统 590\r\n22.5.1 关键字搜索 591\r\n22.5.2 文档的索引 594\r\n22.5.3 度量检索的有效性 595\r\n22.5.4 Web搜索引擎 595\r\n22.5.5 目录 596\r\n22.6 小结 598\r\n术语回顾 599\r\n习题 600\r\n文献注解 601\r\n工具 602\r\n第23章 高级数据类型和新的应用 603\r\n23.1 动机 603\r\n23.2 数据库中的时间 604\r\n23.2.1 SQL中的时间定义 604\r\n23.2.2 时态查询语言 605\r\n23.3 空间与几何数据 605\r\n23.3.1 几何信息的表示 606\r\n23.3.2 设计数据库 607\r\n23.3.3 地理数据 608\r\n23.3.4 空间查询 609\r\n23.3.5 空间数据的索引 610\r\n23.4 多媒体数据库 613\r\n23.4.1 多媒体数据格式 613\r\n23.4.2 连续媒体数据 614\r\n23.4.3 基于相似性的检索 614\r\n23.5 移动计算和个人数据库 615\r\n23.5.1 移动计算模型 616\r\n23.5.2 路由和查询处理 616\r\n23.5.3 广播数据 617\r\n23.5.4 连接断开与一致性 617\r\n23.6 小结 619\r\n术语回顾 619\r\n习题 620\r\n文献注解 621\r\n第24章 高级事务处理 623\r\n24.1 事务处理监控器 623\r\n24.1.1 TP监控器体系结构 623\r\n24.1.2 使用TP监控器进行应用协调 625\r\n24.2 事务工作流 626\r\n24.2.1 工作流说明 628\r\n24.2.2 工作流的故障原子性需求 628\r\n24.2.3 工作流的执行 629\r\n24.2.4 工作流的恢复 630\r\n24.2.5 工作流管理系统 630\r\n24.3 主存数据库 631\r\n24.4 实时事务系统 632\r\n24.5 长事务 633\r\n24.5.1 不可串行化的执行 633\r\n24.5.2 并发控制 634\r\n24.5.3 嵌套事务和多级事务 635\r\n24.5.4 补偿事务 635\r\n24.5.5 实现问题 636\r\n24.6 多数据库中的事务管理 637\r\n24.6.1 两级可串行化 638\r\n24.6.2 保证全局可串行化 639\r\n24.7 小结 639\r\n术语回顾 640\r\n习题 641\r\n文献注解 642\r\n第八部分 实例研究\r\n第25章 Oracle 644\r\n25.1 数据库设计和查询工具 644\r\n25.1.1 数据库设计工具 644\r\n25.1.2 查询工具 645\r\n25.2 SQL的变化和扩展 645\r\n25.2.1 对象-关系特征 646\r\n25.2.2 触发器 646\r\n25.3 存储和索引 647\r\n25.3.1 表空间 647\r\n25.3.2 段 647\r\n25.3.3 表 648\r\n25.3.4 按索引组织的表 648\r\n25.3.5 索引 649\r\n25.3.6 位图索引 649\r\n25.3.7 基于函数的索引 650\r\n25.3.8 连接索引 650\r\n25.3.9 域索引 651\r\n25.3.10 划分 651\r\n25.3.11 物化视图 652\r\n25.4 查询处理和优化 653\r\n25.4.1 执行方法 653\r\n25.4.2 优化 654\r\n25.4.3 并行执行 655\r\n25.5 并发控制与恢复 657\r\n25.5.1 并发控制 657\r\n25.5.2 恢复的基本结构 658\r\n25.5.3 管理备用数据库 658\r\n25.6 系统体系结构 659\r\n25.6.1 专用服务器:内存结构 659\r\n25.6.2 专用服务器:进程结构 659\r\n25.6.3 多线程服务器 660\r\n25.6.4 Oracle9i Real Application Clusters 660\r\n25.7 复制. 分布以及外部数据 660\r\n25.7.1 复制 660\r\n25.7.2 分布式数据库 661\r\n25.7.3 外部数据源 661\r\n25.8 数据库管理工具 661\r\n25.8.1 Oracle Enterprise Manager 661\r\n25.8.2 数据库资源管理 662\r\n文献注解 662\r\n第26章 IBM DB2 Universal Database 663\r\n26.1 数据库设计和查询工具 664\r\n26.2 SQL的变化和扩展 664\r\n26.2.1 数据类型的支持 664\r\n26.2.2 用户定义函数和方法 665\r\n26.2.3 大对象 665\r\n26.2.4 XML支持 665\r\n26.2.5 索引扩展和约束 666\r\n26.3 存储和索引 666\r\n26.3.1 存储体系结构 666\r\n26.3.2 表. 记录和索引 667\r\n26.4 查询处理和优化 668\r\n26.4.1 访问方法 670\r\n26.4.2 连接. 聚集和集合运算 670\r\n26.4.3 支持复杂SQL处理 670\r\n26.4.4 多处理器查询处理特性 670\r\n26.4.5 查询优化 671\r\n26.5 并发控制和恢复 671\r\n26.5.1 并发与隔离 672\r\n26.5.2 提交和回滚 673\r\n26.5.3 日志和恢复 673\r\n26.6 系统体系结构 673\r\n26.7 复制. 分布和外部数据 675\r\n26.8 数据库管理工具 675\r\n26.9 小结 676\r\n文献注解 676\r\n第27章 Microsoft SQL Server 678\r\n27.1 管理. 设计和查询工具 678\r\n27.1.1 数据库开发和可视化数据库工具 678\r\n27.1.2 数据库查询和调整工具 679\r\n27.1.3 SQL Server Enterprise Manager 682\r\n27.2 SQL的变化和扩展 683\r\n27.2.1 数据类型 683\r\n27.2.2 用户定义函数 683\r\n27.2.3 视图 684\r\n27.2.4 触发器 686\r\n27.3 存储和索引 686\r\n27.3.1 文件组 686\r\n27.3.2 文件组中的空间管理 686\r\n27.3.3 表 687\r\n27.3.4 索引 687\r\n27.3.5 扫描和预读 687\r\n27.4 查询处理及优化 687\r\n27.4.1 优化处理概述 687\r\n27.4.2 查询简化 688\r\n27.4.3 重排序和基于代价的优化 688\r\n27.4.4 更新计划 689\r\n27.4.5 部分搜索和启发式搜索 689\r\n27.4.6 查询执行 690\r\n27.5 并发与恢复 690\r\n27.5.1 事务 690\r\n27.5.2 封锁 691\r\n27.5.3 日志和恢复 693\r\n27.6 系统体系结构 694\r\n27.6.1 服务器的线程池 694\r\n27.6.2 内存管理 694\r\n27.7 数据访问 695\r\n27.7.1 数据访问API 695\r\n27.7.2 SQL Server的内部通信 695\r\n27.8 分布与复制 696\r\n27.8.1 分布式异构查询处理 696\r\n27.8.2 复制 697\r\n27.9 关系数据上的全文查询 699\r\n27.10 数据仓库和分析服务 700\r\n27.10.1 分布式转换服务 700\r\n27.10.2 联机分析处理服务 700\r\n27.11 XML和Web支持 702\r\n27.11.1 XML访问SQL Server的\r\n体系结构 702\r\n27.11.2 SQL查询结果序列化成XML 703\r\n27.11.3 在关系数据上提供XML视图 703\r\n27.11.4 在XML上提供关系视图 704\r\n27.12 小结 704\r\n文献注解 704\r\n第九部分 附 录\r\n附录A 网状模型\r\nA.1 基本概念 A1\r\nA.2 数据结构图 A2\r\nA.3 DBTG CODASYL模型 A7\r\nA.4 DBTG数据检索工具 A13\r\nA.5 DBTG更新工具 A20\r\nA.6 DBTG Set处理工具 A22\r\nA.7 网状结构到文件的映像 A27\r\nA.8 小结 A31\r\n习题 A32\r\n文献注解 A35\r\n附录B 层次模型\r\nB.1 基本概念 B1\r\nB.2 树形结构图 B2\r\nB.3 数据检索工具 B13\r\nB.4 更新工具 B18\r\nB.5 可视记录 B21\r\nB.6 层次结构到文件的映像 B22\r\nB.7 IMS数据库系统 B24\r\nB.8 小结 B25\r\n习题 B26\r\n文献注解 B29\r\n附录C 高级关系设计\r\nC.1 多值依赖 C1\r\nC.2 连接依赖 C5\r\nC.3 域-码范式 C8\r\nC.4 小结 C10\r\n习题 C10\r\n文献注解 C11\r\n参考文献 706\r\n索引 734
数据库管理已经从一种专门的计算机应用发展为现代计算环境的一个核心成分. 因此, 有关数据库系统的知识已成为计算机科学教育中的一个必不可少的部分. 在本书中, 我们讲述数据库管理的基本概念, 这些概念包括数据库设计. 数据库语言及数据库系统实现等多个方面.
本书可作为本科生三年级或四年级数据库入门课程的教科书, 也可作为研究生一年级的教科书. 除了可用于入门课程的基本内容外, 本书还包括了作为课程补充或作为高级课程介绍性材料的高级内容.
我们仅要求读者熟悉基本的数据结构. 计算机组织和一种高级程序设计语言, 例如Java. C或Pascal. 书中的概念都以直观的方式加以描述, 其中的许多概念基于我们的银行运行例子. 本书中包括了一些重要的理论结果, 但省略了形式化证明. 对于各个研究结果, 文献注解中指出了首先发表并证明该结果的文章, 文献注解中还列出了进一步阅读的参考文献. 在应该给出证明的地方, 我们使用图表和例子来说明为什么结论是正确的.
本书中所包括的基本概念和算法通常基于商品化的或试验性的数据库系统中所采用的概念和算法. 然而我们以一种一般化的形式来描述这些概念和算法, 而不是和一个特定的数据库系统联系在一起. 我们在第八部分“实例研究”中讨论特定的商品化数据库系统的细节.
在《数据库系统概念》的第4版中, 我们保持了前三版的总体风格, 同时重点强调了数据库管理的进展. 新增加了几章来讨论新的技术. 对每一章都进行了编辑, 并对大多数的章进行了修改扩充. 下面我们对各章做一个简短描述.
本书的组织
本书组织成八个主要部分和三个附录:
综述(第1章). 第1章对数据库系统的性质和目标进行一般性综述. 我们解释了数据库系统的概念是如何发展起来的, 各种数据库系统的共同特性是什么, 数据库系统能为用户做什么, 以及数据库系统如何与操作系统接口. 我们还引入了一个数据库应用系统的例子:包括多个支行的一个银行企业. 这个例子是贯穿全书的运行实例. 这一章讲动机. 历史和性质.
数据模型(第2章和第3章). 第2章介绍实体-联系模型, 该模型为数据库设计问题, 以及我们在数据模型的约束下捕获现实应用的语义时所遇到的问题, 提供了一个高层视图. 第3章介绍关系数据模型, 包括与之相关的关系代数和关系演算.
关系模型(第4~7章). 第4章介绍最有影响的面向用户的关系语言—SQL. 第5章介绍另外两种关系语言—QBE和Datalog. 这两章对数据操纵—查询. 修改. 插入. 删除进行了描述. 算法和设计问题在以后的章节中描述. 因此, 这两章适合于入门课程和某些只想了解数据库系统是什么, 而不想深入掌握其内部算法和结构的人员阅读.
第6章从数据库完整性和安全性的角度介绍了约束, 第7章说明在关系数据库的设计中如何使用约束. 第6章介绍了参照完整性. 触发器和断言等完整性维护机制以及授权机制. 这一章的要点是保护数据库, 免遭意外的和有意的破坏.
第7章介绍关系数据库设计理论, 包括数据依赖和规范化等, 重点强调了提出各种范式的原因以及它们的直观含义. 这一章还详细描述了数据库设计的整个过程.
基于对象的系统和XML(第8~10章). 第8章介绍面向对象数据库, 包括面向对象程序设计的概念以及如何用这些概念去形成一个数据模型的基础. 在这儿不需要读者事先具有面向对象语言的知识. 第9章介绍对象-关系数据库, 说明SQL:1999标准如何对关系数据模型进行扩展, 以包括面向对象的特性, 例如继承性. 复杂类型和对象标识.
第10章介绍数据表示的XML标准, 它正日益广泛地应用于数据通信和复杂数据类型存储. 这一章还描述了XML查询语言.
数据存储和查询(第11~14章). 第11章讨论磁盘. 文件和文件系统结构, 以及关系和对象数据到文件系统的映像. 在第12章中介绍了多种数据存取技术, 包括散列. B+ 树索引和网格文件索引. 第13章和14章的重点是查询计算算法, 以及基于保持等价性的查询转换的查询优化.
这几章旨在使读者理解数据库存储和检索的内部机制.
事务管理(第15~17章). 第15章介绍事务处理系统的基本概念, 包括事务的原子性. 一致性. 隔离性和持久性以及可串行性概念.
第16章的重点是并发控制, 我们介绍了保证可串行性的几种技术, 包括封锁. 时间戳和乐观(有效性检查)技术. 在这一章中还讨论了死锁问题. 第17章讨论了在系统崩溃和磁盘故障情况下保证事务正确执行的主要技术. 这些技术包括日志. 影子页面. 检查点和数据库转储.
数据库系统体系结构(第18~20章). 第18章介绍计算机系统体系结构, 并描述了作为基础的计算机对于数据库系统的影响. 在这一章中我们讨论了集中式系统. 客户-服务器系统. 并行体系结构和分布式体系结构, 以及网络类型. 第19章讨论分布式数据库系统, 在分布式数据库系统的环境下再一次讨论数据库设计. 事务管理. 查询计算和优化问题. 这一章还包括了故障时的系统可用性问题, 并介绍了LDAP目录系统.
在第20章关于并行数据库的讨论中, 我们探讨了各种并行技术, 包括I/O并行. 查询间并行和查询内并行, 以及操作间并行和操作内并行. 这一章中还讨论了并行系统设计.
其他主题(第21~24章). 第21章讨论数据库应用开发和管理, 包括数据库接口(特别是Web接口). 性能调整. 性能测试标准. 标准化和电子商务中的数据库问题. 第22章讨论查询技术, 包括决策支持系统和信息检索. 决策支持领域中讨论的话题包括联机分析处理(OLAP)技术. SQL:1999对OLAP的支持. 数据挖掘和数据仓库工程. 这一章还描述了用于查询正文数据的信息检索技术, 包括Web搜索引擎中使用的基于超级链接的技术.
第23章讨论高级数据类型和新应用, 包括时态数据. 空间数据和地理数据. 多媒体数据以及移动式和个人数据库管理中的问题. 最后, 第24章讨论高级事务处理, 包括事务处理监控器. 高性能事务系统. 实时事务系统以及事务工作流.
实例研究(第25~27章). 在这一部分我们对三个领先的商品化数据库系统进行实例研究, 包括Oracle. IBM DB2和Microsoft SQL Server. 这几章中列举了上述每一种产品的独有特性, 描述了它们的内部结构, 提供了关于各个产品的丰富的有用信息, 帮助你了解前面各部分描述的各种实现技术是如何在实际系统中使用的. 这几章中还包括了实际系统设计中的几个有趣的方面.
联机附录. 虽然大多数新的数据库应用系统使用关系模型或面向对象模型, 但网状数据模型和层次数据模型也仍然在使用中. 为了满足希望了解这些数据模型的读者的需要, 我们给出了描述网状数据模型和层次数据模型的附录, 分别为附录A和附录B. 这两个附录只是在本书的Web页面上联机提供(http://www.bell-labs.com/topic/books/db-book).
第4版
对本书第4版的产生起指导作用的是我们收到的关于前面几版的许多意见和建议, 我们在孟买的印度理工学院讲授本课程的体会, 以及我们对于数据库技术发展方向的分析.
我们的基本过程是重写每一章, 将较旧的内容修改为最新的内容, 添加关于数据库技术当前进展的讨论, 并改进学生难于理解的那些话题的描述. 现在每一章都有一个术语回顾列表, 它可以帮助读者复习该章讨论的关键主题. 我们还在大多数的章后面增加了一个“工具”节, 提供与该章内容有关的软件工具的信息. 我们还增加了新的习题, 更新了参考文献.
我们增加了关于XML的新的一章, 以及三个实例研究的章, 描述领先的商品化数据库系统Oracle. IBM DB2和Microsoft SQL Server.
我们将所有的章组织为几个部分, 并重新组织了几个章的内容. 为方便那些熟悉本书第3版的读者, 我们对于主要的变化说明如下:
?实体-联系模型. 我们将实体-联系(E-R)模型的讨论已经进行了改善. 增加了一些例子, 修改了一些例子, 目的在于给读者更加直观的引导. 增加了关于各种不同的E-R表示法的总结, 以及关于UML的新的一节.
?关系数据库. 第4章关于SQL的讨论现在参考的是SQL:1999标准, 该标准是本书第3版出版之后发布的. 我们大大扩展了关于SQL的讨论, 将with子句. 扩充了的嵌入式SQL以及最近几年中应用日益广泛的ODBC和JDBC包括在我们的讨论范围中. 我们去掉了第5章中关于Quel的介绍, 因为对它的使用已经不多了. 我们修改了关于QBE的描述, 以去掉某些有歧义的地方, 并增加了关于Microsoft Access数据库中使用的QBE的介绍.
第6章现在包括完整性约束和安全性. 关于安全性的讨论从第3版的第19章移到了现在的第6章, 第6章还介绍了触发器. 第7章包括数据库设计和范式. 关于函数依赖的讨论从第3版的第6章移到了现在的第7章. 我们对第7章进行了许多改写, 对于函数依赖的处理提供了几个简捷的算法, 并且扩充了关于整个数据库设计过程的讨论. 我们将有关多值依赖推理的公理. PJNF和DKNF移到了附录中.
?基于对象的数据库. 我们改进了第8章中对于面向对象数据库的介绍, 修改了关于ODMG的讨论. 第9章中关于对象-关系数据库的讨论也进行了修改, 特别地, 用SQL:1999标准代替了第3章中使用的扩展SQL.
?XML. 第10章是第4版中新增的一章, 关于XML.
?存储. 索引和查询处理. 第11章讨论存储和文件结构, 它是第3版中的第10章. 我们对其内容进行了修改. 在过去的几年中, 磁盘驱动器和其他存储机制的许多特性发生了很大的变化, 因此我们的讨论进行了相应的修改. 我们修改了关于RAID的介绍, 以反映技术发展的趋势, 我们还扩充了关于数据字典(目录)的介绍.
第12章是第3版中的第11章, 关于索引的介绍, 现在包括了位图索引. 我们对B+ 树插入算法进行了简化, 并提供了搜索算法的伪代码, 删除了分段散列, 因为其使用已经不多了.
我们对查询处理的讨论进行了重新组织, 将原来的一章(第3版中的第12章)分为两章, 其中一章讨论查询处理(第13章), 另一章讨论查询优化(第14章). 关于代价估算和查询优化的所有细节都移到了第14章, 而将第13章集中在查询处理算法上. 我们删掉了为不同的运算计算精确的I/O操作数的几个详细(且冗长)的公式. 第14章现在包括优化算法的伪代码, 以及关于嵌套子查询和物化视图的优化的新的几节.
?事务处理. 第15章对事务进行介绍, 在第3版中是第13章, 我们对它进行了修改, 删除了视图可串行化的测试.
第16章讨论并发控制, 它包括了新的一节, 关于锁管理器的实现. 较弱的一致性级别的讨论原来在第3版的第20章中, 现在包括在本章中. 我们扩展了关于索引结构的并发控制的讨论, 给出了关于蟹行协议(crabbing protocol)的细节, 该协议是B-link协议的简化. 我们还给出了旨在避免幻象的下一码(next-key)封锁方法. 第17章讨论恢复, 它现在包括了关于ARIES恢复算法的描述. 这一章还包括了为在故障情况下提供高可用性的远程备份系统, 这是“24×7”应用所需要的一个重要特性.
与对第3版的处理一样, 讲课教师可以选择只介绍事务处理概念(只讲第15章)或详细讲解所有内容(讲第15~17章).
数据库系统体系结构. 第18章概述数据库系统体系结构. 我们对本章进行了修改, 以反映当前的技术, 这一章是第3版的第16章. 我们交换了并行数据库和分布式数据库这两章的顺序. 第19章讨论分布式数据库, 这是比较基本的内容, 任何一个与数据库打交道的人都应该熟悉该内容. 第20章(第3版中是第16章)讨论并行数据库查询处理技术, 对此内容感兴趣的主要是那些希望学习数据库内部技术的读者.
我们对第19章关于分布式数据库的讨论做了重要的改写, 减少了关于命名和透明性的描述, 增加了对于故障时的操作的描述, 包括为提供高可用性而采用的并发控制技术. 我们缩减了关于三阶段提交协议的描述和关于全局死锁的分布式检测的描述, 因为这两者在实践中都用得不多. 我们去掉了第3版的第20章中关于异构数据库查询处理问题的描述, 增加了关于目录系统, 特别是LDAP的新的一节, 因为这些技术在分布式环境中作为保证信息可用性的机制被广泛使用.
其他主题. 虽然我们对整本书都进行了修订和更新, 但我们把与正在进展的数据库研究和新的数据库应用有关的描述集中在新增加的四章中, 即从第21章到第24章.
第21章是第4版中新的一章, 讨论应用开发和管理. 这一章描述了如何建立数据库的Web接口, 包括servlet和服务器端脚本的其他机制的描述, 这些都是新的内容. 关于性能调整的一节(原先在第19章中)包括了关于5分钟规则和1分钟规则的新内容以及一些新的例子. 关于物化视图选择的一节也是新的. 有关性能测试和标准的内容进行了更新. 我们增加了关于电子商务的新的一节, 重点在电子商务中的数据库问题. 还增加了新的一节, 关于遗留系统.
第22章是关于高级查询和信息检索的, 包括关于OLAP, 特别是SQL:1999有关数据分析的扩展的新内容. 有关数据仓库工程和数据挖掘的描述也大大扩充了. 有关信息检索, 特别是Web搜索的描述做了重要扩充. 在第3版中相关的内容在第21章中.
第23章讨论高级数据类型和新应用. 这一章的内容包括时态数据. 空间数据. 多媒体数据和移动数据库. 这些内容是第3版第21章内容的更新的版本. 第24章讨论高级事务处理, 这一章的内容包括TP监控器. 工作流系统. 主存和实时数据库. 长事务以及多媒体数据库中的事务管理. 这些内容是第3版第20章内容的更新版本.
实例研究. 关于Oracle. IBM DB2和Microsoft SQL Server的实例研究是第4版新增的内容. 这几章概述了上述每一种产品的特性, 并描述了它们的内部结构.
教师注意
本书包括基本内容和高级内容, 在一个学期内不可能讲授所有内容. 我们用符号“**”把某些节标记为高级内容, 如果愿意的话可以省略这些节, 而且仍能保持内容的连续性.
教师可以将课程安排成包括本书各章的不同子集. 下面我们列出一些可能的安排:
如果学生在本课程中不使用QBE或Datalog, 可以不讲第5章.
如果面向对象的内容在另一门高级课程中讲述, 那么可以不讲第8章. 第9章和11.9节. 或者, 它们可以构成对象数据库高级课程的基础.
对于入门课程来说, 可以不讲第10章(XML)和第14章(查询优化).
我们对事务处理的讨论(第15章至第17章)和对数据库系统体系结构的讨论(第18章至第20章)都包括一章综述(分别为第15章和第18章)和后续的两章详细讨论. 如果你计划把详细讨论的几章推迟到高级课程中去讲授, 那么可以只讲第15章和第18章.
尽管21.1节可以包括在数据库入门课程中, 但第21~24章更适合于高级课程或学生自学.
可以在本书的web主页(见下一节)中找到基于本书内容的教学大纲样板.
Web主页和教学补充材料
本书的web主页的网址是
http://www.bell-labs.com/topic/books/db-book
该主页包括以下内容:
?介绍本书所有各章的幻灯片.
某些习题的答案.
三个附录.
最新勘误表.
本书用户贡献的补充材料.
我们将写出完整的解答手册, 仅提供给教师. 关于如何得到解答手册的进一步信息, 请发电子邮件到customer.service@mcgraw-hill.com. 在美国可以打电话800-338-3987. McGraw-Hill关于本书的网页是
http://www.mhhe.com/silberschatz
与我们和其他读者联系
我们提供了一个邮件列表, 使本书读者之间可以互相通信, 也可以与我们通信. 如果你愿意加入这一列表, 请发一条消息到db-book@research.bell-labs.com, 消息中包括你的姓名. 所在单位. 头衔和电子邮件地址.
我们已尽最大努力避免在本书中出现排版错误. 内容失误等. 然而, 与新发布的软件相类似, 错误在所难免. 在本书的主页中有一个最新勘误表. 如果你能指出尚未包含在最新勘误表中的本书的疏漏之处, 我们将十分感激.
我们很高兴能收到你对改进本书的建议, 也很欢迎你对本书主页做出对其他读者有用的贡献, 如程序设计练习. 课程实习建议. 联机实验室和个别指导以及讲课要点.
请将电子邮件发到db-book@research.bell-labs.com. 来信请寄到Avi Silberschatz, Bell Laboratories, Room 2T-310, 600 Mountain Avenue, Murray Hill, NJ 07974, USA.
致谢
使用本书第3版的许多学生提供了很多有用的意见, 对于我们形成第4版帮助很大. 此外, 许多人口头地或书面地与我们关于此书交换过意见, 提出了建议. 在此我们不可能一一列出, 我们谨对下列人员致以特别的感谢:
佛罗里达理工学院的Phil Bernhard. 俄亥俄州立大学的Eitan M.Gurari. Old Dominion大学的Irwin Levinstein. 佐治亚理工学院的Ling Liu. 乔治·梅森大学的Ami Motro. Case western Reserve大学的Bhagirath Narahari和Meral Ozsoyoglu. 伦敦皇家学院的Odinaldo Rodriguez, 他们是本书的审阅者. 他们的意见对于我们形成第4版帮助很大.
Soumen Chakrabarti. Sharad Mehrotra. Krithi Ramamtitham. Mike Reiter. Sunita Sarawagi. N.L.Sarda. Dilys Thomas, 感谢他们对本书中的几章内容给出了广泛和宝贵的反馈意见.
Phil Bohannon, 他编写了第10章的第一稿, 描述XML.
Oracle的Hakan Jakobsson. IBM的Sriram Padmanabhan. Microsoft的C巗ar Galindo-Legaria. Goetz Graefe. Jos?A. Blakeley. Kalen Delaney. Michael Rys. Michael Zwilling. Sameet Agarwal. Thomas Casey, 他们编写了几个附录, 分别对Oracle. IBM DB2和Microsoft SQL Server数据库系统进行描述.
Yuri Breitbart, 他帮助我们编写了分布式数据库这一章. Mike Reiter, 他帮助我们编写了安全性的几节. Jim Melton, 他帮助我们阐明SQL:1999.
Marilyn Turnamian和Nandprasad Joshi, 她们做了很好的秘书工作, 对于第4版的完成起了重要作用.
最后, Sudarshan感谢他的妻子Sita的爱和支持, 感谢他两岁的儿子Madhur的爱, 并感谢他的母亲Indira的支持. Hank感谢他的妻子Joan和孩子Abby. Joe的爱和理解. Avi感谢他的妻子Haya和他的儿子Aaron在他修改本书时的耐心和支持.
A.S.
H.F.K.
S.S.