| 
 新書推薦:
 
  《 
			四海车书总会同  元代文人游历与行旅诗研究 国家社科基金后期资助项目
			》
 售價:HK$ 
			653
 
  《 
			接触 2025全新升级版 
			》
 售價:HK$ 
			347
 
  《 
			21天打造翘臀
			》
 售價:HK$ 
			301
 
  《 
			匠心传承:山西非遗日历·2026年·木版年画
			》
 售價:HK$ 
			704
 
  《 
			唐诗中的历史:战争、王朝与兴衰之歌 追随唐人“诗路”印记剖析大唐历史盛衰
			》
 售價:HK$ 
			347
 
  《 
			中国古代文学理论概论
			》
 售價:HK$ 
			449
 
  《 
			诸葛亮:三国时期的真正主角
			》
 售價:HK$ 
			301
 
  《 
			甘肃道教碑刻集(全三册)
			》
 售價:HK$ 
			4998
 
 
 | 
         
          | 編輯推薦: |   
          | 本书是被世界众多高校广泛采用的讲述数据库系统的经典教材,不仅非常适合作为高等院校计算机及相关专业的本科生或研究生的数据库系统课程的教材,对于数据库设计师和架构师也极具参考价值。 |  
         
          | 內容簡介: |   
          | 本书是被世界众多高校广泛采用的讲述数据库系统的经典教材。本书全面阐述了数据库系统在设计、使用、实现和应 用中所需的基本概念,既有对理论与设计的清晰阐述,同时又涵盖了大量模型和实际系统,紧跟现代数据库技术的* 新发展,注重对数据库系统基本原理的介绍,着重强调数据库系统中的数学模型、设计问题、关系代数和关系演算。 本书提供了大量实验和习题,为学生进行数据库的基础设计和实现提供了实践机会。 |  
         
          | 關於作者: |   
          | Ramez Elmasri(雷米兹埃尔玛斯特) Shamkant B. Navathe(沙姆坎特纳瓦特赫) 著
 |  
         
          | 目錄: |   
          | 第1部分 数据库简介 第1章 数据库与数据库用户 3
 1.1 简介 4
 1.2 一个示例 6
 1.3 数据库方法的特征 8
 1.3.1 数据库系统的自描述性 9
 1.3.2 程序与数据之间的隔离以及数据抽象 9
 1.3.3 支持数据的多种试图 11
 1.3.4 数据共享与多用户事务处理 11
 1.4 幕前角色 12
 1.4.1 数据库管理员 13
 1.4.2 数据库设计者 13
 1.4.3 最终用户 13
 1.4.4 系统分析员和应用程序员(软件工程师) 14
 1.5 幕后工作者 14
 1.6 使用DBMS方法的优势 15
 1.6.1 控制冗余 15
 1.6.2 限制未经授权的访问 16
 1.6.3 为程序对象提供持久性存储 16
 1.6.4 为高效查询处理提供存储结构和搜索技术 17
 1.6.5 提供备份和恢复 17
 1.6.6 提供多种用户接口 17
 1.6.7 表示数据间的复杂关系 18
 1.6.8 强制执行完整性约束 18
 1.6.9 允许使用规则和触发器执行推断和动作 18
 1.6.10 使用数据库方法的其他潜在优势 19
 1.7 数据库应用简史 20
 1.7.1 使用层次和网状系统的早期数据库应用 20
 1.7.2 利用关系数据库提供数据抽象和应用灵活性 20
 1.7.3 面向对象的应用以及对更复杂数据库的需求 21
 1.7.4 使用XML在Web上交换数据以实现电子商务 21
 1.7.5 为新应用扩展数据库能力 21
 1.7.6 大数据存储系统和NOSQL数据库的出现 22
 1.8 何时不使用DBMS 22
 1.9 小结 23
 复习题 23
 练习题 24
 选读文献 24
 
 第2章 数据库系统的概念和架构 25
 2.1 数据模型、模式和实例 25
 2.1.1 数据模型分类 26
 2.1.2 模式、实例和数据库状态 27
 2.2 三层模式架构和数据独立性 28
 2.2.1 三层模式架构 29
 2.2.2 数据独立性 30
 2.3 数据库语言与界面 31
 2.3.1 DBMS语言 31
 2.3.2 DBMS界面 32
 2.4 数据库系统环境 33
 2.4.1 DBMS构成模型 34
 2.4.2 数据库系统实用程序 36
 2.4.3 工具、应用环境和通信设施 36
 2.5 DBMS的集中式和客户服务器架构 37
 2.5.1 集中式DBMS架构 37
 2.5.2 基本的客户服务器架构 37
 2.5.3 DBMS的两层客户服务器架构 39
 2.5.4 面向Web应用的三层及n层架构 40
 2.6 数据库管理系统的分类 41
 2.7 小结 43
 复习题 44
 练习题 44
 选读文献 45
 
 第2部分 概念数据建模与数据库设计
 第3章 使用实体-关系(ER)模型的数据建模 49
 3.1 使用高级概念数据模型进行数据库设计 50
 3.2 一个示例数据库应用 51
 3.3 实体类型、实体集、属性和键 53
 3.3.1 实体和属性 53
 3.3.2 实体类型、实体集、键和值集 55
 3.3.3 COMPANY数据库的初始概念设计 58
 3.4 关系类型、关系集、角色和结构约束 59
 3.4.1 关系类型、关系集和关系实例 60
 3.4.2 关系度、角色名称和递归关系 61
 3.4.3 二元关系类型上的约束 63
 3.4.4 关系类型的属性 65
 3.5 弱实体类型 65
 3.6 细化COMPANY数据库的ER设计 66
 3.7 ER图、命名约定和设计问题 67
 3.7.1 ER图表示法小结 67
 3.7.2 模式构造的正确命名 69
 3.7.3 ER概念设计的设计选择 69
 3.7.4 ER图的替代表示法 70
 3.8 其他表示法示例:UML类图 70
 3.9 度大于2的关系类型 73
 3.9.1 对二元和三元(或度更高)关系的选择 73
 3.9.2 三元(或度更高)关系上的约束 76
 3.10 另一个示例:UNIVERSITY数据库 76
 3.11 小结 78
 复习题 79
 练习题 80
 实验题 85
 选读文献 86
 
 第4章 增强的实体-关系(EER)模型 88
 4.1 子类、超类和继承 88
 4.2 特化和泛化 90
 4.2.1 特化 90
 4.2.2 泛化 92
 4.3 特化和泛化层次的约束和特征 93
 4.3.1 特化与泛化的约束 93
 4.3.2 特化和泛化的层次与格 95
 4.3.3 利用特化和泛化对概念模式进行细化 97
 4.4 使用类别的UNION类型建模 98
 4.5 示例UNIVERSITY的EER模式、设计选择和形式化定义 100
 4.5.1 一个不同的UNIVERSITY数据库示例 100
 4.5.2 特化泛化的设计选择 102
 4.5.3 EER模型概念的形式化定义 103
 4.6 其他表示法的示例:在UML类图中表示特化和泛化 104
 4.7 数据抽象、知识表示和本体概念 105
 4.7.1 分类和实例化 106
 4.7.2 标识 106
 4.7.3 特化和泛化 107
 4.7.4 聚合与关联 107
 4.7.5 本体和语义Web 109
 4.8 小结 110
 复习题 110
 练习题 111
 实验题 117
 选读文献 118
 
 第3部分 关系数据模型和SQL
 第5章 关系数据模型和关系数据库约束 123
 5.1 关系模型概念 124
 5.1.1 域、属性、元组和关系 124
 5.1.2 关系的特征 126
 5.1.3 关系模型表示法 129
 5.2 关系模型约束和关系数据库模式 129
 5.2.1 域约束 130
 5.2.2 键约束和NULL值约束 130
 5.2.3 关系数据库和关系数据库模式 132
 5.2.4 实体完整性、参照完整性和外键 134
 5.2.5 其他约束类型 136
 5.3 更新操作、事务和处理约束破坏 136
 5.3.1 插入操作 137
 5.3.2 删除操作 138
 5.3.3 更新操作 138
 5.3.4 事务的概念 139
 5.4 小结 140
 复习题 140
 练习题 141
 选读文献 144
 
 第6章 SQL基础 145
 6.1 SQL数据定义和数据类型 146
 6.1.1 SQL中的模式和目录的概念 146
 6.1.2 SQL中的CREATE TABLE命令 147
 6.1.3 SQL中的属性数据类型和域 149
 6.2 在SQL中指定约束 151
 6.2.1 指定属性约束和属性默认值 151
 6.2.2 指定键约束和参照完整性约束 152
 6.2.3 命名约束 153
 6.2.4 使用CHECK在元组上指定约束 153
 6.3 SQL中的基本检索查询 154
 6.3.1 基本SQL查询的SELECT-FROM-WHERE结构 154
 6.3.2 有歧义的属性名、别名、重命名和元组变量 157
 6.3.3 未指定的WHERE子句和星号(*)的使用 158
 6.3.4 在SQL中将表作为集合 159
 6.3.5 子串模式匹配和算术运算符 161
 6.3.6 查询结果排序 162
 6.3.7 基本SQL检索查询的讨论和小结 163
 6.4 SQL中的INSERT、DELETE 和UPDATE语句 163
 6.4.1 INSERT命令 163
 6.4.2 DELETE命令 165
 6.4.3 UPDATE命令 165
 6.5 SQL的其他特性 166
 6.6 小结 167
 复习题 167
 练习题 168
 选读文献 170
 
 第7章 SQL的更多知识:复杂查询、触发器、视图和模式修改 171
 7.1 更复杂的SQL检索查询 171
 7.1.1 涉及NULL和三值逻辑的比较 171
 7.1.2 嵌套查询、元组与集多集比较 173
 7.1.3 关联的嵌套查询 175
 7.1.4 SQL中的EXISTS和UNIQUE函数 175
 7.1.5 SQL中的显式集合与重命名 177
 7.1.6 SQL中的连接表和外连接 178
 7.1.7 SQL中的聚合函数 179
 7.1.8 分组:GROUP BY和HAVING子句 181
 7.1.9 其他SQL构造:WITH和CASE 184
 7.1.10 SQL中的递归查询 185
 7.1.11 SQL查询的讨论和总结 186
 7.2 指定约束作为断言以及指定动作作为触发器 187
 7.2.1 在SQL中指定一般性约束作为断言 187
 7.2.2 SQL中的触发器简介 188
 7.3 SQL中的视图(虚表) 189
 7.3.1 SQL中的视图概念 189
 7.3.2 在SQL中指定视图 190
 7.3.3 视图实现、视图更新和内联视图 191
 7.3.4 将视图作为授权机制 193
 7.4 SQL中的模式更改语句 194
 7.4.1 DROP命令 194
 7.4.2 ALTER命令 194
 7.5 小结 195
 复习题 197
 练习题 197
 选读文献 198
 
 第8章 关系代数和关系演算 200
 8.1 一元关系运算:选择和投影 201
 8.1.1 选择运算 201
 8.1.2 投影运算 203
 8.1.3 运算序列和RENAME运算 204
 8.2 集合论中的关系代数运算 206
 8.2.1 并、交和差运算 206
 8.2.2 笛卡儿积(叉积)运算 208
 8.3 二元关系运算:连接运算和除运算 210
 8.3.1 连接运算 210
 8.3.2 连接的变体:等值连接和自然连接 211
 8.3.3 关系代数运算的完备集 213
 8.3.4 除运算 213
 8.3.5 查询树的表示法 215
 8.4 其他关系运算 216
 8.4.1 广义投影 216
 8.4.2 聚合函数和分组 217
 8.4.3 递归闭包运算 218
 8.4.4 外连接运算 219
 8.4.5 外并运算 220
 8.5 关系代数中的查询示例 221
 8.6 元组关系演算 223
 8.6.1 元组变量和值域关系 224
 8.6.2 元组关系演算中的表达式和公式 225
 8.6.3 存在量词和全称量词 226
 8.6.4 元组关系演算中的示例查询 226
 8.6.5 查询图的表示法 228
 8.6.6 在全称量词与存在量词之间转换 228
 8.6.7 在查询中使用全称量词 229
 8.6.8 安全表达式 230
 8.7 域关系演算 231
 8.8 小结 233
 复习题 234
 练习题 234
 实验题 238
 选读文献 240
 
 第9章 使用ER-关系映射和EER-关系映射进行关系数据库设计 241
 9.1 使用ER-关系映射进行关系数据库设计 241
 9.1.1 ER-关系映射算法 241
 9.1.2 关于映射ER模型构造的讨论和总结 247
 9.2 将EER模型构造映射到关系 248
 9.2.1 特化或泛化的映射 248
 9.2.2 共享子类(多重继承)的映射 251
 9.2.3 类别(并类型)的映射 251
 9.3 小结 252
 复习题 252
 练习题 252
 实验题 254
 选读文献 254
 
 第4部分 数据库编程技术
 第10章 SQL编程技术简介 257
 10.1 数据库编程技术和问题概述 258
 10.1.1 数据库编程的方法 258
 10.1.2 阻抗失配 259
 10.1.3 数据库编程中的典型交互序列 260
 10.2 嵌入式SQL、动态SQL和SQLJ 260
 10.2.1 利用嵌入式SQL检索单个元组 261
 10.2.2 使用游标处理查询结果 264
 10.2.3 使用动态SQL在运行时指定查询 266
 10.2.4 SQLJ:在Java中嵌入SQL命令 267
 10.2.5 在SQLJ中使用迭代器处理查询结果 269
 10.3 利用函数调用和类库进行数据库编程:SQLCLI和JDBC 271
 10.3.1 以C作为宿主语言利用SQLCLI进行数据库编程 271
 10.3.2 JDBC:用于Java编程的SQL类库 274
 10.4 数据库存储过程和SQLPSM 279
 10.4.1 数据库存储过程和函数 279
 10.4.2 SQLPSM:扩展SQL以指定持久存储模块 280
 10.5 3种方法的比较 282
 10.6 小结 282
 复习题 283
 练习题 283
 选读文献 283
 
 第11章 使用PHP进行Web数据库编程 284
 11.1 一个简单的PHP示例 284
 11.2 PHP的基本特性概述 287
 11.2.1 PHP变量、数据类型和编程构造 287
 11.2.2 PHP数组 288
 11.2.3 PHP函数 289
 11.2.4 PHP服务器变量和表单 291
 11.3 PHP数据库编程概述 292
 11.3.1 连接到数据库 292
 11.3.2 从表单中收集数据 294
 11.3.3 数据库表中的检索查询 295
 11.4 用于数据库Web编程的Java 技术简介 296
 11.5 小结 297
 复习题 297
 练习题 297
 选读文献 298
 
 第5部分 对象、对象-关系和XML:概念、模型、语言和标准
 第12章 对象和对象-关系数据库 301
 12.1 对象数据库概念概述 302
 12.1.1 面向对象概念和特性简介 302
 12.1.2 对象标识以及对象与文字的比较 303
 12.1.3 对象和文字的复杂类型结构 304
 12.1.4 操作封装和对象持久性 306
 12.1.5 类型层次和继承 309
 12.1.6 其他面向对象概念 312
 12.1.7 对象数据库概念总结 313
 12.2 SQL的对象数据库扩展 314
 12.2.1 使用CREATE TYPE的用户定义类型和复杂对象 314
 12.2.2 使用引用类型的对象标识符 317
 12.2.3 基于UDT创建表 317
 12.2.4 操作封装 318
 12.2.5 指定继承和函数重载 318
 12.2.6 通过引用指定联系 319
 12.3 ODMG对象模型和对象定义语言ODL 320
 12.3.1 ODMG的对象模型概述 320
 12.3.2 ODMG对象模型中的继承 325
 12.3.3 对象模型中的内置接口和类 325
 12.3.4 原子(用户定义)对象 327
 12.3.5 外延、键和工厂对象 329
 12.3.6 对象定义语言(ODL) 330
 12.4 对象数据库概念设计 335
 12.4.1 ODB与RDB的概念设计之间的区别 336
 12.4.2 将EER模式映射到ODB模式 336
 12.5 对象查询语言(OQL) 338
 12.5.1 简单OQL查询、数据库入口点和迭代器变量 338
 12.5.2 查询结果和路径表达式 339
 12.5.3 OQL的其他特性 341
 12.6 ODMG标准中的C语言绑定概述 345
 12.7 小结 347
 复习题 347
 练习题 348
 选读文献 349
 
 第13章 XML:可扩展标记语言 351
 13.1 结构化、半结构化和非结构化数据 352
 13.2 XML层次(树状)数据模型 355
 13.3 XML文档、DTD和XML模式 357
 13.3.1 良构和有效的XML文档和XML DTD 357
 13.3.2 XML模式 360
 13.4 从数据库存储和提取XML文档 364
 13.5 XML语言 365
 13.5.1 XPath:在XML中指定路径表达式 365
 13.5.2 XQuery:在XML中指定查询 367
 13.5.3 XML相关的其他语言和协议 368
 13.6 从关系数据库中提取XML文档 369
 13.6.1 在平面或基于图的数据上创建层次XML视图 369
 13.6.2 断开环以将图转换成树 372
 13.6.3 从数据库中提取XML文档的其他步骤 373
 13.7 XMLSQL:用于创建XML数据的SQL函数 373
 13.8 小结 375
 复习题 375
 练习题 376
 选读文献 376
 
 第6部分 数据库设计理论和规范化
 第14章 函数依赖和关系数据库规范化的基础知识 379
 14.1 关系模式的非形式化设计准则 380
 14.1.1 给关系中的属性赋予清晰的定义 381
 14.1.2 元组中的冗余信息和更新异常 383
 14.1.3 元组中的NULL值 386
 14.1.4 生成伪元组 386
 14.1.5 关于设计准则的总结和讨论 388
 14.2 函数依赖 389
 14.3 基于主键的范式 391
 14.3.1 关系的规范化 392
 14.3.2 范式的实际应用 393
 14.3.3 键的定义和参与键的属性 393
 14.3.4 第一范式 394
 14.3.5 第二范式 397
 14.3.6 第三范式 398
 14.4 第二范式和第三范式的一般定义 399
 14.4.1 第二范式的一般定义 399
 14.4.2 第三范式的一般定义 401
 14.4.3 解释第三范式的一般定义 401
 14.5 Boyce-Codd范式 402
 14.6 多值依赖和第四范式 405
 14.7 连接依赖和第五范式 407
 14.8 小结 408
 复习题 409
 练习题 410
 实验题 414
 选读文献 414
 
 第15章 关系数据库设计算法及其他依赖 415
 15.1 函数依赖的高级主题:推理规则、等价和最小覆盖 416
 15.1.1 函数依赖的推理规则 416
 15.1.2 函数依赖集合的等价性 420
 15.1.3 最小函数依赖集合 420
 15.2 关系分解的性质 422
 15.2.1 关系分解和范式的不足 423
 15.2.2 分解的依赖保持性质 423
 15.2.3 分解的非加性(无损)连接性质 424
 15.2.4 测试二元分解的非加性连接性质 427
 15.2.5 连续的非加性连接分解 427
 15.3 关系数据库模式设计算法 427
 15.3.1 依赖保持和非加性(无损)连接的3NF模式分解 427
 15.3.2 非加性连接的BCNF模式分解 430
 15.4 NULL值、悬挂元组和替代的关系设计 431
 15.4.1 NULL值和悬挂元组的问题 431
 15.4.2 规范化算法和替代关系设计的讨论 433
 15.5 多值依赖和4NF的进一步讨论 434
 15.5.1 函数依赖和多值依赖的推理规则 434
 15.5.2 再论第四范式 435
 15.5.3 非加性连接的4NF关系分解 436
 15.6 其他的依赖和范式 437
 15.6.1 连接依赖和第五范式 437
 15.6.2 包含依赖 437
 15.6.3 基于算术函数和过程的函数依赖 438
 15.6.4 域-键范式 439
 15.7 小结 439
 复习题 440
 练习题 440
 实验题 441
 选读文献 442
 
 第7部分 文件结构、散列、索引 和物理数据库设计
 第16章 磁盘存储、基本文件结构、散列和现代存储架构 445
 16.1 简介 445
 16.1.1 存储器的层次结构和存储设备 446
 16.1.2 数据库的存储组织方式 448
 16.2 辅存设备 449
 16.2.1 磁盘设备的硬件描述 450
 16.2.2 使磁盘上的数据访问更高效 454
 16.2.3 固态元件(SSD)存储器 455
 16.2.4 磁带存储设备 456
 16.3 块缓冲 457
 16.3.1 缓冲区管理 458
 16.3.2 缓冲区替换策略 459
 16.4 把文件记录存放在磁盘上 460
 16.4.1 记录和记录类型 461
 16.4.2 文件、定长记录和变长记录 461
 16.4.3 记录块、跨块记录与非跨块记录 463
 16.4.4 在磁盘上分配文件块 464
 16.4.5 文件头 464
 16.5 文件操作 465
 16.6 无序记录的文件(堆文件) 467
 16.7 有序记录的文件(排序文件) 468
 16.8 散列技术 471
 16.8.1 内部散列 471
 16.8.2 磁盘文件的外部散列 474
 16.8.3 允许动态文件扩展的散列技术 476
 16.9 其他主文件组织 480
 16.9.1 混合记录的文件 480
 16.9.2 将B树及其他数据结构作为主组织 481
 16.10 使用RAID技术并行化磁盘访问 481
 16.10.1 利用RAID提高可靠性 482
 16.10.2 利用RAID改进性能 483
 16.10.3 RAID组织和级别 483
 16.11 现代存储架构 484
 16.11.1 存储区域网络 485
 16.11.2 网络连接存储 485
 16.11.3 iSCSI及其他基于网络的存储协议 486
 16.11.4 自动存储分层 487
 16.11.5 基于对象的存储 487
 16.12 小结 488
 复习题 489
 练习题 490
 选读文献 493
 
 第17章 文件的索引结构和物理数据库设计 495
 17.1 单级有序索引的类型 495
 17.1.1 主索引 496
 17.1.2 聚簇索引 499
 17.1.3 辅助索引 500
 17.1.4 小结 504
 17.2 多级索引 505
 17.3 使用B树和B 树的动态多级索引 508
 17.3.1 搜索树和B树 509
 17.3.2 B树 512
 17.4 多个键上的索引 520
 17.4.1 多个属性上的有序索引 520
 17.4.2 分区散列 521
 17.4.3 网格文件 521
 17.5 其他索引类型 522
 17.5.1 散列索引 522
 17.5.2 位图索引 523
 17.5.3 基于函数的索引 525
 17.6 一些关于索引的一般性主题 526
 17.6.1 逻辑索引与物理索引 526
 17.6.2 索引创建 527
 17.6.3 索引调优 528
 17.6.4 与关系和索引存储相关的其他主题 529
 17.7 关系数据库中的物理数据库设计 530
 17.7.1 影响物理数据库设计的因素 530
 17.7.2 物理数据库设计决策 532
 17.8 小结 533
 复习题 534
 练习题 534
 选读文献 537
 
 第8部分 查询处理和优化
 第18章 查询处理的策略 541
 18.1 将SQL查询转换成关系代数和其他运算符 543
 18.2 外排序算法 545
 18.3 选择运算的算法 547
 18.3.1 选择运算的实现选项 547
 18.3.2 合取选择的搜索方法 549
 18.3.3 析取选择的搜索方法 550
 18.3.4 估算条件的选择度 551
 18.4 实现连接运算 552
 18.4.1 实现连接运算的方法 552
 18.4.2 缓冲区空间和外层循环文件的选择如何影响嵌套循环连接的性能 555
 18.4.3 连接选择因子如何影响连接性能 556
 18.4.4 分区-散列连接的一般情况 557
 18.4.5 混合散列连接 558
 18.5 投影和集合运算的算法 559
 18.6 实现聚合运算和不同类型的连接 561
 18.6.1 实现聚合运算 561
 18.6.2 实现不同类型的连接 562
 18.7 使用流水线组合运算 563
 18.8 查询处理的并行算法 565
 18.8.1 运算符级并行性 566
 18.8.2 查询内的并行性 568
 18.8.3 查询间的并行性 568
 18.9 小结 569
 复习题 569
 练习题 570
 选读文献 570
 
 第19章 查询优化 571
 19.1 查询树和查询优化的启发式规则 571
 19.1.1 查询树和查询图的表示法 572
 19.1.2 查询树的启发式优化 573
 19.2 查询执行计划的选择 579
 19.2.1 查询求值的替代方法 579
 19.2.2 嵌套子查询优化 580
 19.2.3 子查询(视图)合并转换 581
 19.2.4 物化视图 583
 19.3 在基于代价的优化中使用选择度 586
 19.3.1 查询执行的代价成分 587
 19.3.2 代价函数中使用的目录信息 588
 19.3.3 直方图 588
 19.4 选择运算的代价函数 589
 19.5 连接运算的代价函数 592
 19.5.1 半连接和反连接的连接选择度和连接基数 594
 19.5.2 基于代价公式的连接优化的示例 595
 19.5.3 多关系查询和连接顺序选择 596
 19.5.4 物理优化 598
 19.5.5 连接顺序的动态编程方法 598
 19.6 说明基于代价的查询优化的示例 600
 19.7 与查询优化相关的额外问题 601
 19.7.1 显示系统的查询执行计划 602
 19.7.2 其他运算的大小估算 602
 19.7.3 计划缓存 603
 19.7.4 前k个结果优化 603
 19.8 数据仓库中的查询优化的示例 604
 19.9 Oracle中的查询优化概述 606
 19.9.1 物理优化器 606
 19.9.2 全局查询优化器 606
 19.9.3 自适应优化 607
 19.9.4 数组处理 607
 19.9.5 提示 608
 19.9.6 存储提纲 608
 19.9.7 SQL计划管理 608
 19.10 语义查询优化 609
 19.11 小结 610
 复习题 610
 练习题 611
 选读文献 611
 
 第9部分 事务处理、并发控制和恢复
 第20章 事务处理概念和理论简介 615
 20.1 事务处理简介 615
 20.1.1 单用户系统与多用户系统 616
 20.1.2 事务、数据库项、读写操作和DBMS缓冲区 616
 20.1.3 为什么需要并发控制 618
 20.1.4 为什么需要恢复 620
 20.2 事务和系统概念 621
 20.2.1 事务状态及额外的操作 621
 20.2.2 系统日志 622
 20.2.3 事务的提交点 623
 20.2.4 特定于DBMS的缓冲区替换策略 624
 20.3 事务的理想性质 625
 20.4 基于可恢复性描述调度的特征 626
 20.4.1 事务的调度(历史) 626
 20.4.2 基于可恢复性描述调度的特征 627
 20.5 基于可串行化描述调度的特征 629
 20.5.1 串行、非串行和冲突-可串行化调度 629
 20.5.2 调度的可串行化测试 632
 20.5.3 如何将可串行化用于并发控制 635
 20.5.4 视图等价和视图可串行化 636
 20.5.5 其他类型的调度等价性 637
 20.6 SQL中的事务支持 637
 20.7 小结 639
 复习题 640
 练习题 641
 选读文献 642
 
 第21章 并发控制技术 643
 21.1 并发控制的两阶段锁定技术 643
 21.1.1 锁类型和系统锁表 644
 21.1.2 通过两阶段锁定保证可串行化 647
 21.1.3 处理死锁和饥饿 650
 21.2 基于时间戳排序的并发控制 653
 21.2.1 时间戳 653
 21.2.2 并发控制的时间戳排序算法 653
 21.3 多版本并发控制技术 655
 21.3.1 基于时间戳排序的多版本技术 655
 21.3.2 使用验证锁的多版本两阶段锁定 656
 21.4 验证(乐观)技术和快照隔离并发控制 657
 21.4.1 基于验证(乐观)的并发控制 657
 21.4.2 基于快照隔离的并发控制 658
 21.5 数据项的粒度和多粒度锁定 659
 21.5.1 锁定的粒度级别考虑 659
 21.5.2 多粒度级别锁定 660
 21.6 在索引中使用锁进行并发控制 662
 21.7 其他并发控制问题 663
 21.7.1 插入、删除和幻象记录 663
 21.7.2 交互式事务 664
 21.7.3 锁存器 664
 21.8 小结 665
 复习题 665
 练习题 666
 选读文献 667
 
 第22章 数据库恢复技术 668
 22.1 恢复概念 668
 22.1.1 恢复概述和恢复算法的分类 668
 22.1.2 磁盘块的高速缓存(缓冲) 669
 22.1.3 预写式日志记录、窃取非窃取和强制非强制 670
 22.1.4 系统日志中的检查点和模糊检查点 672
 22.1.5 事务回滚和级联回滚 672
 22.1.6 不会影响数据库的事务动作 674
 22.2 基于延迟更新的NO-UNDOREDO恢复 674
 22.3 基于即时更新的恢复技术 677
 22.4 镜像分页 678
 22.5 ARIES恢复算法 679
 22.6 多数据库系统中的恢复 682
 22.7 数据库备份和灾难性故障恢复 683
 22.8 小结 683
 复习题 684
 练习题 685
 选读文献 687
 
 第10部分 分布式数据库、NOSQL系统和大数据
 第23章 分布式数据库概念 691
 23.1 分布式数据库概念 692
 23.1.1 DDB的构成 692
 23.1.2 透明性 692
 23.1.3 可用性和可靠性 693
 23.1.4 可伸缩性和分区容错性 694
 23.1.5 自治性 694
 23.1.6 分布式数据库的优点 695
 23.2 分布式数据库设计中的数据分段、复制和分配技术 695
 23.2.1 数据分段和分片 696
 23.2.2 数据复制和分配 698
 23.2.3 分段、分配和复制的示例 698
 23.3 分布式数据库中的并发控制和恢复概述 701
 23.3.1 基于数据项的标识副本的分布式并发控制 702
 23.3.2 基于投票的分布式并发控制 703
 23.3.3 分布式恢复 704
 23.4 分布式数据库中的事务管理概述 704
 23.4.1 两阶段提交协议 705
 23.4.2 三阶段提交协议 705
 23.4.3 事务管理的操作系统支持 705
 23.5 分布式数据库中的查询处理和优化 706
 23.5.1 分布式查询处理 706
 23.5.2 分布式查询处理的数据传输代价 706
 23.5.3 使用半连接的分布式查询处理 708
 23.5.4 查询和更新分解 709
 23.6 分布式数据库系统的类型 711
 23.7 分布式数据库架构 713
 23.7.1 并行架构与分布式架构 714
 23.7.2 纯粹的分布式数据库的通用架构 715
 23.7.3 联邦式数据库模式架构 716
 23.7.4 三层客户-服务器架构概述 717
 23.8 分布式目录管理 718
 23.9 小结 719
 复习题 720
 练习题 721
 选读文献 722
 
 第24章 NOSQL数据库和大数据存储系统 725
 24.1 NOSQL系统简介 725
 24.1.1 NOSQL系统的出现 725
 24.1.2 NOSQL系统的特征 726
 24.1.3 NOSQL系统的类别 728
 24.2 CAP定理 729
 24.3 基于文档的NOSQL系统和
 MongoDB 730
 24.3.1 MongoDB数据模型 730
 24.3.2 MongoDB CRUD操作 733
 24.3.3 MongoDB分布式系统特征 733
 24.4 NOSQL键-值存储 735
 24.4.1 DynamoDB概述 735
 24.4.2 Voldemort键-值分布式数据存储 736
 24.4.3 其他键-值存储的示例 738
 24.5 基于列或宽列NOSQL系统 739
 24.5.1 Hbase数据模型和版本化 739
 24.5.2 Hbase CRUD操作 741
 24.5.3 Hbase存储和分布式系统概念 741
 24.6 NOSQL图形数据库和Neo4j 742
 24.6.1 Neo4j数据模型 742
 24.6.2 Neo4j的Cypher查询语言 745
 24.6.3 Neo4j接口和分布式系统特征 746
 24.7 小结 747
 复习题 747
 选读文献 748
 
 第25章 基于MapReduce和Hadoop的大数据技术 749
 25.1 什么是大数据 751
 25.2 MapReduce和Hadoop简介 753
 25.2.1 历史背景 753
 25.2.2 MapReduce 754
 25.2.3 Hadoop版本 757
 25.3 Hadoop分布式文件系统(HDFS) 757
 25.3.1 HDFS简介 757
 25.3.2 HDFS的架构 758
 25.3.3 HDFS中的文件IO操作和副本管理 759
 25.3.4 HDFS可伸缩性 760
 25.3.5 Hadoop生态系统 761
 25.4 MapReduce:额外的细节 762
 25.4.1 MapReduce运行时环境 762
 25.4.2 示例:在MapReduce中实现连接 764
 25.4.3 Apache Hive 767
 25.4.4 HadoopMapReduce技术的优点 770
 25.5 Hadoop v2的别名YARN 770
 25.5.1 YARN背后的基本原理 770
 25.5.2 YARN的架构 772
 25.5.3 YARN上的其他框架 775
 25.6 一般性讨论 777
 25.6.1 HadoopMapReduce与并行RDBMS 777
 25.6.2 云计算中的大数据 779
 25.6.3 云中的大数据应用的数据局部性问题和资源优化 780
 25.6.4 YARN作为数据服务平台 781
 25.6.5 大数据技术面临的挑战 782
 25.6.6 继续前进 783
 25.7 小结 784
 复习题 785
 选读文献 786
 
 第11部分 高级数据库模型、系统和应用
 第26章 增强数据模型:主动数据库、时态数据库、空间数据库、多媒体数据库和演绎数据库简介 791
 26.1 主动数据库的概念和触发器 792
 26.1.1 主动数据库的泛化模型和Oracle触发器 792
 26.1.2 主动数据库的设计和实现问题 796
 26.1.3 STARBURST中的语句级主动规则的示例 798
 26.1.4 主动数据库的潜在应用 800
 26.1.5 SQL-99中的触发器 801
 26.2 时态数据库的概念 801
 26.2.1 时间表示法、日历和时间维度 802
 26.2.2 使用元组版本化在关系数据库中纳入时间 804
 26.2.3 使用属性版本化在面向对象数据库中纳入时间 809
 26.2.4 时态查询构造和TSQL2语言 810
 26.2.5 时间序列数据 812
 26.3 空间数据库概念 813
 26.3.1 空间数据库简介 813
 26.3.2 空间数据类型和模型 814
 26.3.3 空间算子和空间查询 815
 26.3.4 空间数据索引 816
 26.3.5 空间数据挖掘 817
 26.3.6 空间数据的应用 818
 26.4 多媒体数据库的概念 818
 26.4.1 图像的自动分析 820
 26.4.2 图像中的对象识别 821
 26.4.3 图像的语义标签 821
 26.4.4 音频数据源分析 822
 26.5 演绎数据库简介 822
 26.5.1 演绎数据库概述 822
 26.5.2 PrologDatalog表示法 823
 26.5.3 Datalog表示法 825
 26.5.4 子句形式和Horn子句 825
 26.5.5 规则解释 827
 26.5.6 Datalog程序及其安全性 829
 26.5.7 使用关系运算 831
 26.5.8 非递归Datalog查询求值 832
 26.6 小结 834
 复习题 835
 练习题 836
 选读文献 838
 
 第27章 信息检索和Web搜索简介 841
 第28章 数据挖掘概念 880
 第29章 数据仓库和OLAP概述 906
 第12部分 额外的数据库主题:安全性
 第30章 数据库安全性 923
 附录A ER模型的可选图形表示法 957
 附录B 磁盘参数 959
 附录C QBE语言概述 961
 C.1 QBE中的基本检索 961
 C.2 QBE中的分组、聚合和数据库修改 964
 选读文献 967
 
 参考文献 969
 |  
         
          | 內容試閱: |   
          | 献给Amalia以及Ramy、Riyad、Katrina和Thomas。 Ramez Elmasri
 献给我的妻子Aruna,感谢她的爱、支持和理解。
 献给Rohan、Maya和Ayush,感谢他们带给我们巨大的快乐。
 Shamkant B. Navathe
 译者序
 数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广泛的一门学科。数据库作为计算机及相关专业的核心课程,在国内外已经出版了大量相关的教科书。而Elmasri和Navathe编写的本书,能够连续多次再版,为世界上众多高校广泛采用,成为数据库系统原理的经典教材。究其原因,一方面是内容丰富,清晰地阐述了数据库系统的基本理论和设计问题,涵盖了数据库系统的设计、实现和管理等方面的诸多专题;另一方面则在于其结构合理、更新及时,反映了数据库系统和应用开发的发展和动向。
 在本书的第7版中,重新组织了章节顺序。不过,在组织本书内容时,仍然可以使老师在讲解本书内容时选择遵循新的章节顺序,或者选择一种不同的章节顺序。这一版还新增了两章用于介绍数据库系统和大数据处理方面的最新进展:其中一章(第24章)介绍了一类更新的数据库系统,称为NOSQL数据库;另一章(第25章)介绍了用于处理大数据的技术,包括MapReduce和Hadoop。
 本书内容组织灵活、独立,读者可根据个人需要进行取舍。特别是,可以依赖于老师的个人偏好,灵活地安排章节教学顺序。此外,本书各部分的内容相对独立,便于自学。
 本书非常适合作为高等院校计算机及相关专业的本科生或研究生的数据库系统课程的教材。对于数据库设计师和架构师,本书也是一种非常有价值的参考书。
 本书由陈宗斌、陈征主译。由于时间紧迫,加之译者水平有限,欠妥之处在所难免,恳请广大读者批评指正。
 本书介绍了设计、使用和实现数据库系统以及数据库应用程序时所需的基本概念。书中重点介绍了数据库建模与设计的基础知识、数据库管理系统提供的语言和模型,以及一些数据库系统实现技术。本书可供大学三、四年级的学生或研究生作为数据库系统的教科书和参考书使用,并可以安排一到两个学期的课时。本书的目标是对当今数据库系统和应用的最重要方面以及相关技术进行深入、最新的阐述。我们假定读者熟悉基本的程序设计以及数据结构的概念,并对计算机组织结构的基本知识有一定的了解。
 本版本的新增内容
 本书第7版中添加了以下一些关键特性:
 * 重新组织了章节顺序(基于对使用本教材的老师所做的调查访问);不过,在组织本书内容时,仍然使各位老师在讲解本书内容时,可以选择遵循新的章节顺序,或者选择一种不同的章节顺序(例如,遵循本书第6版中的章节顺序)。
 * 在本书第7版中新增了两章用于介绍数据库系统和大数据处理方面的最新进展;新增的一章(第24章)介绍了一类更新的数据库系统,称为NOSQL数据库(NOSQL database);新增的另一章(第25章)介绍了用于处理大数据(big data)的技术,包括MapReduce和Hadoop。
 * 对有关查询处理和优化的章节进行了扩充,并将其重新组织成两章;第18章重点介绍用于查询处理的策略和算法,而第19章则重点介绍查询优化技术。
 * 除了以前版本中的COMPANY数据库示例之外,在第7版的前几章(第3~8章)中还添加了另一个UNIVERSITY数据库示例。
 * 在不同程度上更新了许多单独的章,包括了更新的技术和方法;这里将不会讨论这些增强方面,而将在前言后面讨论第7版的组织结构时描述它们。
 本书的主要特色如下:
 * 本书内容组织灵活、独立,读者可根据个人需要进行取舍。特别是,可以依赖于老师的个人偏好,灵活地安排章节教学顺序。
 * 本书的配套Web站点(http:www.pearsonhighered.comcs-resources)提供了可以加载到各类关系数据库中的数据,以方便学生实现更多的实验题。
 * 依赖图(在本前言后面显示)显示了哪些章节依赖于前面的其他章节;这可为想要定制章节教学顺序的老师提供指导。
 * 补充材料集合,为老师和学生提供了一组丰富的补充材料,如PowerPoint幻灯片、正文中的图片以及教师的习题解答。
 第7版的组织结构和内容
 第7版对内容组织进行了一些改变,并且改进了个别章节。本书现在被划分为如下12个部分:
 * 第1部分(第1章和第2章)描述了基本的介绍性概念,它们是很好地理解数据库模型、系统和语言所必需的。第1章和第2章介绍了数据库、典型用户以及DBMS概念、术语和架构,并且讨论了随着时间的推移数据库技术的进步以及数据模型的简史。对这两章进行了更新,以便介绍一些更新的技术,例如NOSQL系统。
 * 第2部分(第3章和第4章)介绍了实体-关系建模和数据库设计;不过,需要指出的是,如果老师更喜欢在第3章和第4章之前讲授关于关系模型的章节(第5~8章),那么他们可以这样做。在第3章中,将介绍ER(Entity-Relationship,实体-关系)模型和ER图的概念,并用于阐述概念性的数据库设计。第4章显示了如何扩展ER模型,以纳入额外的建模概念,例如子类、特化、泛化、并类型(类别)和继承,从而导致增强的ER(EER)数据模型和EER图。在第7章和第8章中还将介绍URL类图的表示法,它们可以作为EREER图的替代模型和图形表示法。
 * 第3部分(第5~9章)将详细介绍关系数据库和SQL,并且在有关SQL的章节中包括了一些额外的新内容,用于介绍第6版没有涉及的几种SQL构造。第5章描述了基本的关系模型、它的完整性约束和更新操作。第6章描述了用于关系数据库的SQL标准的一些基本部分,包括数据定义、数据修改操作和简单的SQL查询。第7章介绍了更复杂的SQL查询,以及触发器、断言、视图和模式修改等SQL概念。第8章描述了关系代数的形式运算并且介绍了关系演算。在第8章介绍关系代数和演算之前,就介绍了关于SQL的材料(第6章和第7章),这就允许老师可以根据需要,在课程中提早开始SQL项目的教学(如果老师想要采用这种顺序,那么在第6章和第7章之前讲述第8章将是可能的)。第3部分的最后一章即第9章介绍了在ER和EER与关系映射之间进行转换,它们涉及一些算法,可以使用它们从概念性的EREER模式设计来设计关系数据库模式。
 * 第4部分(第10章和第11章)包含关于数据库编程技术的章节。这些章节被指定为阅读材料,并且辅以关于在编程项目的课程中使用的特定语言的材料(在Web上可以轻松获得这篇文档的大部分内容)。第10章介绍传统的SQL编程主题,例如嵌入式SQL、动态SQL、ODBC、SQLJ、JDBC和SQLCLI。第11章介绍Web数据库编程(在我们的示例中使用的是PHP脚本语言),并且包括了一些新材料,其中讨论了用于Web数据库编程的Java技术。
 * 第5部分(第12章和第13章)包括关于对象关系和面向对象数据库(第12章)以及XML(第13章)的更新材料。这两章阐述了SQL标准如何将对象概念和XML概念纳入该标准的更新版本中。第12章首先介绍了一些用于对象数据库的概念,然后展示了如何将它们纳入SQL标准中,以便向关系数据库系统中添加对象能力。接下来,还介绍了ODMG对象模型标准、它的对象定义以及查询语言。第13章介绍了XML(eXtensible Markup Language,可扩展标记语言)模型和语言,并讨论了如何将XML与数据库系统相关联。该章还阐述了XML概念和语言,并将XML模型与传统的数据库模型做比较。此外,书中还将展示在XML与关系表示之间将如何转换数据,以及用于从关系表中提取XML文档的SQL命令。
 * 第6部分(第14章和第15章)包含关于规范化和关系设计理论的章节(第7版把规范化算法的所有形式方面都移到了第15章)。第14章定义了函数依赖,以及基于函数依赖的规范形式。第14章还开发了一种逐步的直观规范化方法,并且包括了多值依赖和连接依赖的定义。第15章介绍了规范化理论,以及通过规范化为关系数据库设计所开发的形式化体系、理论和算法,包括关系分解算法和关系合成 算法。
 * 第7部分(第16章和第17章)介绍了磁盘上的文件组织(第16章)和数据库文件的索引(第17章)。第16章描述了在磁盘上组织记录文件的主要方法,包括有序(排序)、无序(堆)和散列文件;其中介绍了用于磁盘文件的静态和动态散列技术。还对第16章进行了更新,包括关于DBMS的缓冲区管理策略的内容、新型存储设备的概述,以及文件和现代存储架构的标准。第17章描述了文件的索引技术,包括B树和B 树数据结构以及网格文件,并且利用新的示例以及关于索引的更深入的讨论对其进行了更新,包括在物理设计期间如何选择合适的索引以及索引创建。
 * 第8部分(第18章和第19章)介绍了查询处理算法(第18章)和优化技术(第19章)。这两章进行了更新,它们是从以前版本中涵盖这两个主题的单独一章重新组织而成的,并且包括商业DBMS中使用的一些更新的技术。第18章介绍了用于在磁盘文件上搜索记录、连接来自两个文件(表)中的记录以及用于其他相关操作的算法。第18章包含一些新内容,其中讨论了半连接(semi-join)和反连接(anti-join)操作,并且利用几个示例说明如何在查询处理中使用它们;还讨论了用于选择性估计(selectivity estimation)的技术。第19章介绍了用于查询优化的技术,它们使用了成本估计和启发式规则;该章包括一些新内容,涉及嵌套式子查询优化、柱状图的使用、物理优化,以及连接排序方法和数据仓库中的典型查询的优化。
 * 第9部分(第20~22章)介绍了事务处理概念、并发控制,以及从失败中进行数据库恢复。这几章进行了更新,包括在一些商业和开源DBMS中使用的一些更新的技术。第20章介绍了事务处理系统所需的技术,并且定义了调度的可恢复性和可串行化的概念;其中新增了一节关于DBMS的缓冲区替换策略的内容,并且新增了关于快照隔离概念的讨论。第21章概述了各种并发控制协议,并且重点讨论了两阶段锁定。此外,还讨论了时间戳排序和乐观并发控制技术,以及多粒度锁定。第21章包括一些新内容,其中介绍了基于快照隔离概念的并发控制方法。最后,第23章重点介绍了数据库恢复协议,并且概述了数据库恢复中使用的概念和技术。
 * 第10部分(第23~25章)包括一章介绍分布式数据库(第23章),并且利用新增加的另外两章介绍用于大数据的NOSQL存储系统(第24章)以及基于Hadoop和MapReduce的大数据技术(第25章)。第23章介绍分布式数据库概念,包括可用性和可伸缩性、数据的复制和分片、在复制的数据当中维护数据一致性,以及许多其他的概念和技术。在第24章中,将NOSQL系统分成4个一般的类别(其中每个类别中都具有一个示例系统,它将用于我们的示例)以及一些数据模型和操作,并且讨论和比较了每种NOSQL系统的复制分布可伸缩性策略。在第25章中,介绍了用于大数据的分布式处理的MapReduce编程模型,然后介绍了Hadoop系统和HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)、Pig和Hive高级接口,以及YARN架构。
 * 第11部分(第26~29章)包括以下内容:第26章介绍了多种高级数据模型,包括活动数据库触发器(26.1节)、时态数据库(26.2节)、空间数据库(26.3节)、多媒体数据库(26.4节)和演绎数据库(26.5节)。第27章讨论了信息检索(information retrieval,IR)和Web搜索,包括诸如IR和基于关键词的搜索、比较DR与IR、检索模型、搜索评估以及评级算法之类的主题。第28章介绍了数据挖掘,其中概述了各种数据挖掘方法,例如关联规则挖掘、群集、分类和序列模式发现。第29章概述了数据仓库,包括诸如数据仓库模型和操作之类的主题,还概述了构建数据仓库的过程。
 * 第12部分(第30章)用一章的篇幅阐述数据库安全,其中讨论了用于自主访问控制的SQL命令(GRANT、REVOKE),以及强制性安全级别和模型,用于在关系数据库中包括强制性访问控制,还讨论了诸如SQL注入攻击之类的威胁,以及与数据安全和隐私相关的其他技术和方法。
 附录A给出了多种替代的图形表示法,它们用于显示概念性的ER或EER模式。如果老师更喜欢使用这些表示法,也可以用它们替代本书中使用的表示法。附录B给出了一些关于磁盘的重要物理参数。附录C概述了QBE图形查询语言。附录D和附录E(可从本书的配套Web站点http:www.pearsonhighered.comelmasri下载)介绍了基于分层和网络数据库模型的遗留数据库系统。作为许多商业数据库应用和事务处理系统的基础,这些数据库已经使用了30余年。
 本书使用指南
 讲授一门数据库课程可以有多种不同的方法。作为数据库系统的介绍性课程,第1~7部分中的章节可以按照它们在本书中的顺序进行讲授,也可以根据老师个人喜好的顺序进行讲解。教师可以根据课程的重点,对这些内容进行删减,或者从本书的其余部分选择一些章节添加进来。在本书某些章的开头一小节结尾处,我们列出了当不需要详细讨论一些主题时可以删略的章节。如果作为一门介绍性的数据库课程,我们建议讲授第1~15章的内容,并可根据学生的背景和掌握程度选择其他章的一些内容。如果重点关注的是系统实现技术,则应该使用第7~9部分中的一些章节替换前面一些章节。
 第3章和第4章介绍了使用ER和EER模型进行概念建模,这些内容将有助于从概念上加深对数据库的理解。不过,也可以部分讲解它们,或者在课程的后期加入这些内容。如果课程的重点是DBMS实现,甚至可以将这些内容略去不讲。第16章和第17章介绍了文件的组织和索引,这些内容可以放在课程的前期或后期讲授。如果课程的重点是数据库模型和语言,甚至可以将这些内容略去不讲。对于那些已经学习过文件组织课程的学生来说,可以将这些章节的部分内容作为阅读材料,或者将这些章节中的一些练习题作为相关概念的复习。
 如果课程的重点是数据库设计,那么老师应该尽早开始讲授第3章和第4章,接着介绍关系数据库。一个完整的数据库设计和实现项目的生命周期将包括概念设计(第3章和第4章)、关系数据库(第5~7章)、数据模型映射(第9章)、规范化(第14章),以及通过SQL的应用程序实现(第10章)。如果重点关注的是Web数据库编程和应用,那么也应该包括第11章的内容。此外,还需要一些有关特定编程语言以及所使用的RDBMS的其他文献。本书在编写时就考虑了其主题可以按不同的顺序讲授。下图展示了各章之间的主要依赖关系,在前两章的介绍性内容之后,可以从多个不同的主题开始讲授。尽管这个图看起来可能有些复杂,但是值得注意的是,如果按照如图所示的顺序讲授各章内容,那么将不会丢失章节间的依赖关系。如果老师想以自己选择的顺序来讲授课程,那么可将此图作为参考。
 如果将本书作为一个学期课程的教材,可以将选读的章节留作课外阅读材料;如果将本书作为上、下两学期的教材,第一学期的课程可以是数据库设计和数据库系统导论,面向大二、大三或大四的学生,涵盖第1~15章的大部分内容。第二学期的课程是数据库模型与实现技术,面向大四学生或一年级研究生,可涵盖第16~30章的大部分内容。老师还可以根据个人喜好,以其他方式来安排两个学期的课程学习顺序。
 补 充 材 料
 授权教师可以从Pearson的教师资源中心(http:www.pearsonhighered.comirc)获得本书的支持材料。要访问该Web站点,可以联系当地的Pearson代理。
 * PowerPoint讲义和图片。
 * 解决方案手册。
 致谢
 非常荣幸能够向这么多人致谢,感谢他们对本书的帮助与贡献。首先要感谢本书的编辑Matt Goldstein对本书的指导、鼓励和支持。感谢Rose Kernan对本书的生产管理、Patricia Daly对本书进行的全面细致的编辑、Martha McMaster勤勉地对书中各页所做的审校以及生产团队的管理编辑Scott Disanno,感谢他们所做的卓越工作。我们还要感谢Pearson的Kelsey Loanes对这个项目给予的持续不断的帮助,以及感谢以下审稿人:Michael Doherty、Deborah Dunn、Imad Rahal、Karen Davis、Gilliean Lee、Leo Mark、Monisha Pulimood、Hassan Reza、Susan Vrbsky、Li Da Xu、Weining Zhang和Vincent Oria。
 Ramez Elmasri要感谢Kulsawasd Jitkajornwanich、Vivek Sharma和Surya Swaminathan帮助准备第24章中的一些材料。Sham Navathe要感谢下面这些人在关键性的审稿和修订工作中所给予的帮助:Dan Forsythe和Satish Damle参与了存储系统的讨论;Rafi Ahmed详细地重新组织了关于查询处理和优化的内容;Harish Butani、Balaji Palanisamy和Prajakta Kalmegh帮助提供了Hadoop和MapReduce技术材料;Vic Ghorpadey和Nenad Jukic修订了数据仓库的内容;最后,Frank Rietta在数据库安全的更新技术方面、Kunal Malhotra在多个讨论中,以及Saurav Sahay在信息检索系统的发展方面,分别做出了他们的贡献。
 我们还要再次感谢曾经审阅以及为本书的前几版做出贡献的人们。
 最后,我们真切地感谢我们的家人所给予的支持、鼓励和耐心。
 |    |