本书全面讲解数据库设计、建模、系统构建、数据存储以及数据仓库、数据治理等方面的基础知识,并提出了一种数据库管理的新方法。本书的三位作者均为该领域专家,在大数据、数据分析、数据质量和数据集成方面经验丰富。全书理论结合实践,既有对现有数据库技术的讲解,又有对*新技术趋势的分析。为了帮助读者更好地理解基本概念,书中包含大量真实案例,涉及查询实例、代码以及图形等,并搭建了在线学习环境,这使本书成为信息系统或计算机科学专业本科生和研究生入门课程的完美教材。
出版者的话
赞誉
译者序
前言
作者简介
第一部分 数据库与数据库设计
第1章 数据库管理的基本概念 2
1.1 数据库技术的应用 2
1.2 关键定义 3
1.3 基于文件与数据库的数据管理方法 3
1.3.1 基于文件的方法 3
1.3.2 基于数据库的方法 4
1.4 数据库系统的元素 6
1.4.1 数据库模型与实例 6
1.4.2 数据模型 7
1.4.3 三层架构 7
1.4.4 目录 8
1.4.5 数据库用户 9
1.4.6 数据库语言 9
1.5 数据库系统和数据库管理的优点 9
1.5.1 数据独立性 9
1.5.2 数据库建模 10
1.5.3 管理结构化、半结构化、非结构化数据 10
1.5.4 管理数据冗余 10
1.5.5 指定完整性约束 11
1.5.6 并发控制 11
1.5.7 备份和恢复设备 12
1.5.8 数据安全性 12
1.5.9 性能分析工具 12
总结 12
关键术语表 13
思考题 13
问题和练习 14
第2章 数据库管理系统的架构与分类 15
2.1 DBMS的架构 15
2.1.1 连接管理器和安全管理器 16
2.1.2 DDL编译器 16
2.1.3 查询处理器 16
2.1.4 存储管理器 19
2.1.5 DBMS工具 20
2.1.6 DBMS接口 20
2.2 DBMS分类 21
2.2.1 基于数据模型的分类 21
2.2.2 基于同步访问的分类 23
2.2.3 基于架构的分类 23
2.2.4 基于使用方法的分类 24
总结 25
关键术语表 26
思考题 26
问题和练习 28
第3章 使用(E)ER模型和UML类图进行概念数据建模 29
3.1 数据库设计阶段 29
3.2 实体关系模型 30
3.2.1 实体类型 31
3.2.2 属性类型 31
3.2.3 关系类型 32
3.2.4 弱实体类型 36
3.2.5 三元关系类型 36
3.2.6 ER模型示例 38
3.2.7 ER模型的局限性 40
3.3 扩展的实体关系模型 40
3.3.1 特化/泛化 41
3.3.2 分类 42
3.3.3 聚集 43
3.3.4 EER模型的示例 43
3.3.5 设计EER模型 44
3.4 UML类图 45
3.4.1 面向对象概述 45
3.4.2 类 45
3.4.3 变量 46
3.4.4 访问修饰符 46
3.4.5 关联 47
3.4.6 特化/泛化 49
3.4.7 聚集 49
3.4.8 UML示例 49
3.4.9 高级UML建模概念 50
3.4.10 UML与EER的对比 52
总结 53
关键术语表 56
思考题 56
问题和练习 59
第4章 数据管理的组织方面 62
4.1 数据管理 62
4.1.1 目录和元数据的作用 62
4.1.2 元数据建模 63
4.1.3 数据质量 63
4.1.4 数据治理 67
4.2 数据管理中的角色 68
4.2.1 信息架构师 68
4.2.2 数据库设计师 68
4.2.3 数据所有者 68
4.2.4 数据管理员 68
4.2.5 数据库管理员 69
4.2.6 数据科学家 69
总结 69
关键术语表 70
思考题 70
问题和练习 70
第二部分 数据库系统类型
第5章 传统数据库 72
5.1 分层模型 72
5.2 CODASYL模型 75
总结 79
关键术语表 79
思考题 80
问题和练习 80
第6章 关系数据库:关系模型 81
6.1 关系模型 81
6.1.1 基本概念 82
6.1.2 正式定义 83
6.1.3 键的类型 84
6.1.4 关系约束 86
6.1.5 关系数据模型的示例 87
6.2 规范化 88
6.2.1 非规范化关系模型中的插入、删除和更新异常 88
6.2.2 非正式的规范化准则 89
6.2.3 函数依赖和主属性类型 90
6.2.4 规范化形式 90
6.3 将概念ER模型映射到关系模型 96
6.3.1 实体类型映射 96
6.3.2 关系类型映射 97
6.3.3 多值属性类型映射 103
6.3.4 弱实体类型映射 103
6.3.5 小结 104
6.4 将概念EER模型映射到关系模型 105
6.4.1 EER特化映射 106
6.4.2 EER类别映射 107
6.4.3 EER聚集映射 108
总结 109
关键术语表 110
思考题 110
问题和练习 114
第7章 关系数据库:结构化查询语言 116
7.1 关系数据库管理系统和SQL 116
7.1.1 SQL的关键特征 116
7.1.2 三层数据库架构 118
7.2 SQL数据定义语言 119
7.2.1 DDL的关键概念 119
7.2.2 DDL的示例 120
7.2.3 参照完整性约束 123
7.2.4 DROP和ALTER命令 123
7.3 SQL数据操作语言 125
7.3.1 SQL SELECT语句 125
7.3.2 SQL INSERT语句 149
7.3.3 SQL DELETE语句 149
7.3.4 SQL UPDATE语句 150
7.4 SQL视图 152
7.5 SQL索引 154
7.6 SQL权限 155
7.7 用于元数据管理的SQL 156
总结 157
关键术语表 159
思考题 160
问题和练习 167
第8章 面向对象的数据库以及对象持久性 169
8.1 概述:OO的基本概念 169
8.2 OO的高级概念 171
8.2.1 方法重载 171
8.2.2 继承 171
8.2.3 方法重写 173
8.2.4 多态和动态绑定 173
8.3 对象持久性的基本原则 175
8.4 面向对象数据库管理系统 176
8.4.1 对象标识符 177
8.4.2 ODMG标准 177
8.4.3 对象模型 178
8.4.4 对象定义语言 178
8.4.5 对象查询语言 181
8.4.6 语言绑定 183
8.5 评估OODBMS 185
总结 186
关键术语表 186
思考题 187
问题和练习 188
第9章 扩展关系数据库 189
9.1 关系模型的局限性 189
9.2 RDBMS主动拓展 190
9.2.1 触发器 190
9.2.2 存储过程 192
9.3 对象-关系型RDBMS扩展 193
9.3.1 用户定义类型 194
9.3.2 用户定义函数 197
9.3.3 继承 198
9.3.4 行为 200
9.3.5 多态性 201
9.3.6 集合类型 201
9.3.7 大对象 203
9.4 递归的SQL查询 203
总结 205
关键术语表 206
思考题 207
问题和练习 208
第10章 XML数据库 209
10.1 可扩展标记语言 209
10.1.1 基本概念 210
10.1.2 文档类型定义和XMLSchema定义 213
10.1.3 可扩展样式表语言 216
10.1.4 命名空间 219
10.1.5 XPath 219
10.2 处理XML文档 220
10.3 存储XML文档 221
10.3.1 面向文档的XML文档存储方法 222
10.3.2 面向数据的XML文档存储方法 222
10.3.3 存储XML文档的组合方法 222
10.4 XML数据和关系数据之间的差异 223
10.5 XML文档和(对象-)关系数据之间的映射 223
10.5.1 基于表的映射 223
10.5.2 模式无关的映射 224
10.5.3 模式感知的映射 226
10.5.4 SQL/XML 227
10.6 搜索XML数据 230
10.6.1 全文搜索 231
10.6.2 基于关键字的搜索 231
10.6.3 XQuery的结构化搜索 231
10.6.4 使用RDF和SPARQL进行语义搜索 232
10.7 用于信息交换的XML 234
10.7.1 面向消息的中间件 235
10.7.2 基于SOAP的Web服务 235
10.7.3 基于REST的Web服务 238
10.7.4 Web服务和数据库 239
10.8 其他数据表示格式 239
总结 243
关键术语表 245
思考题 246
问题和练习 247
第11章 NoSQL数据库 249
11.1 NoSQL运动 249
11.1.1 “一体适用”时代的终结? 249
11.1.2 NoSQL运动的出现 250
11.2 键-值存储 252
11.2.1 从键到哈希 252
11.2.2 水平扩展 253
11.2.3 实例:Memcached 254
11.2.4 请求协调器 256
11.2.5 一致性哈希 256
11.2.6 复制和冗余 258
11.2.7 最终一致性 259
11.2.8 稳定化 260
11.2.9 完整性约束和查询 261
11.3 元组和文档存储 261
11.3.1 带键的项 262
11.3.2 过滤和查询 263
11.3.3 使用MapReduce进行复杂查询和聚合 266
11.3.4 SQL毕竟…… 275
11.4 面向列的数据库 276
11.5 基于图的数据库 277
11.5.1 Cypher概述 279
11.5.2 探索社交图谱 280
11.6 其他NoSQL类别 285
总结 286
关键术语表 287
思考题 288
问题和练习 289
第三部分 物理数据存储、
事务管理和数据库访问
第12章 物理文件组织和索引 292
12.1 存储硬件和物理数据库设计 292
12.1.1 存储层次结构 292
12.1.2 硬盘驱动器的内部结构 293
12.1.3 从逻辑概念到物理结构 296
12.2 记录组织 298
12.3 文件组织 300
12.3.1 基本概念:搜索键、主文件和辅助文件组织 300
12.3.2 堆文件组织 301
12.3.3 顺序文件组织 301
12.3.4 随机文件组织(哈希) 302
12.3.5 索引顺序文件组织 306
12.3.6 列表数据组织(线性与非线性表) 310
12.3.7 辅助索引和倒排文件 313
12.3.8 B-树和B+-树 318
总结 322
关键术语表 323
思考题 324
问题和练习 325
第13章 物理数据库组织 326
13.1 物理数据库组织和数据库访问方法 326
13.1.1 从数据库到表空间 327
13.1.2 索引设计 328
13.1.3 数据库访问方法 330
13.1.4 连接操作 337
13.2 企业存储子系统和业务连续性 338
13.2.1 磁盘阵列和RAID 339
13.2.2 企业存储子系统 341
13.2.3 业务连续性 347
总结 350
关键术语表 351
思考题 351
问题和练习 353
第14章 事务管理基础 354
14.1 事务、恢复和并发控制 354
14.2 事务和事务管理 355
14.2.1 描述事务和事务生命周期 355
14.2.2 涉及事务管理的DBMS组件 356
14.2.3 日志文件 357
14.3 恢复 358
14.3.1 故障类型 358
14.3.2 系统恢复 359
14.3.3 介质恢复 360
14.4 并发控制 361
14.4.1 典型的并发性问题 361
14.4.2 调度和串行调度 363
14.4.3 可串行化调度 363
14.4.4 乐观和悲观调度器 365
14.4.5 锁和锁协议 365
14.5 事务的ACID属性 371
总结 372
关键术语表 372
思考题 373
问题和练习 375
第15章 数据库访问和数据库API 376
15.1 数据库系统的架构 376
15.1.1 集中式系统架构 376
15.1.2 分层架构 377
15.2 数据库API的分类 379
15.2.1 专有与通用API 380
15.2.2 嵌入式与调用级API 380
15.2.3 早期绑定与晚期绑定 381
15.3 通用数据库API 382
15.3.1 ODBC 382
15.3.2 OLE DB和ADO 383
15.3.3 ADO.NET 384
15.3.4 Java数据库连接 387
15.3.5 插曲:SQL注入与访问安全 392
15.3.6 SQLJ 393
15.3.7 插曲:嵌入式API与嵌入式DBMS 395
15.3.8 语言集成查询 396
15.4 对象持久性和对象关系映射API 398
15.4.1 使用Enterprise JavaBeans的对象持久性 398
15.4.2 使用Java持久性 API实现对象持久性 402
15.4.3 使用Java数据对象的对象持久性 407
15.4.4 其他宿主语言中的对象持久性 410
15.5 数据库API总结 414
15.6 万维网中的数据库访问 416
15.6.1 最初的Web服务器 416
15.6.2 通用网关接口:面向动态网页 416
15.6.3 客户端脚本:对更丰富Web的渴望 418
15.6.4 作为平台的JavaScript 419
15.6.5 DBMS自适应:REST、其他Web服务和展望 421
总结 423
关键术语表 424
思考题 424
问题和练习 426
第16章 数据分布和分布式事务管理 427
16.1 分布式系统和分布式数据库 427
16.2 分布式数据库的架构规则 428
16.3 分割、分配和复制 430
16.3.1 垂直分割 430
16.3.2 水平分割(分片) 431
16.3.3 混合分割 431
16.3.4 复制 433
16.3.5 元数据的分布和复制 433
16.4 透明性 434
16.5 分布式查询处理 435
16.6 分布式事务管理和并发控制 437
16.6.1 主站点和主副本2PL 437
16.6.2 分布式2PL 438
16.6.3 两阶段提交协议 439
16.6.4 乐观并发和松耦合系统 441
16.6.5 基于补偿的事务模型 442
16.7 最终一致性和BASE事务 445
16.7.1 水平分割和一致性哈希 445
16.7.2 CAP定理 445
16.7.3 BASE事务 446
16.7.4 多版本并发控制和向量时钟 447
16.7.5 基于Quorum的一致性 448
总结 450
关键术语表 451
思考题 451
问题和练习 452
第四部分 数据仓库、数据治理
和大数据分析
第17章 数据仓库与商务智能 454
17.1 操作与战术/战略决策 454
17.2 数据仓库定义 455
17.3 数据仓库模式 457
17.3.1 星形模式 457
17.3.2 雪花模式 458
17.3.3 事实星座模式 458
17.3.4 特定的模式问题 459
17.4 抽取、转换和加载过程 465
17.5 数据集市 467
17.6 虚拟数据仓库和虚拟数据集市 468
17.7 操作数据存储 469
17.8 数据仓库与数据湖 469
17.9 商务智能 470
17.9.1 查询和报告 471
17.9.2 数据透视表 471
17.9.3 联机分析处理 471
总结 479
关键术语表 480
思考题 481
问题和练习 483
第18章 数据集成、数据质量和数据治理 485
18.1 数据与流程集成 485
18.1.1 分析型和操作型数据需求的融合 486
18.1.2 数据集成和数据集成模式 487
18.1.3 数据和流程集成中的数据服务和数据流 494
18.2 搜索非结构化数据和企业搜索 500
18.2.1 全文搜索原理 500
18.2.2 索引全文文档 501
18.2.3 网络搜索引擎 502
18.2.4 企业搜索 504
18.3 数据质量和主数据管理 505
18.4 数据治理 506
18.4.1 全面数据质量管理 507
18.4.2 能力成熟度模型集成 507
18.4.3 数据管理知识体系 508
18.4.4 信息和相关技术的控制目标 508
18.4.5 信息技术基础架构库 508
18.5 展望 508
总结 509
关键术语表 509
思考题 510
问题和练习 511
第19章 大数据 513
19.1 大数据的5个V 513
19.2 Hadoop 516
19.2.1 Hadoop的历史 516
19.2.2 Hadoop堆栈 517
19.3 Hadoop中的SQL 528
19.3.1 HBase:Hadoop上的第一个数据库 528
19.3.2 Pig 533
19.3.3 Hive 533
19.4 Apache Spark 536
19.4.1 Spark Core 536
19.4.2 Spark SQL 538
19.4.3 MLlib、Spark Streaming和GraphX 540
总结 541
关键术语表 542
思考题 543
问题和练习 544
第20章 分析学 546
20.1 分析过程模型 546
20.2 分析应用程序实例 548
20.3 数据科学家职务简介 549
20.4 数据预处理 550
20.4.1 用于分析的去规范化数据 550
20.4.2 抽样 551
20.4.3 探索性分析 551
20.4.4 缺失值 552
20.4.5 异常值检测和处理 553
20.5 分析的类型 553
20.5.1 预测性分析 553
20.5.2 评估预测模型 560
20.5.3 描述性分析 566
20.5.4 社交网络分析 570
20.6 分析模型的后处理 574
20.7 分析模型成功的关键因素 575
20.8 分析中的经济学视角 576
20.8.1 总所有权成本 576
20.8.2 投资回报 576
20.8.3 内包与外包 577
20.8.4 本地解决方案与云解决方案 578
20.8.5 开源软件与商业软件 579
20.9 提高分析的投资回报率 580
20.9.1 新的数据来源 580
20.9.2 数据质量 582
20.9.3 管理支持 583
20.9.4 组织因素 584
20.9.5 交叉应用 584
20.10 隐私和安全 585
20.10.1 关于隐私和安全的总体考虑 585
20.10.2 RACI矩阵 586
20.10.3 访问内部数据 587
20.10.4 隐私条例 591
总结 592
关键术语表 593
思考题 594
问题和练习 597
附录 使用在线环境