目录 3
第Ⅰ部分 设计篇 3
第1章 步入数据库系统世界 3
1.1 概述 3
1.1.1 数据库系统应用示例 4
1.1.2 数据库系统的作用 6
1.1.3 常见的数据库系统 8
1.1.4 数据库应用程序的开发过程 11
1.2 数据库技术的演变 12
1.2.1 数据库技术的环境 12
1.2.2 传统的文件管理阶段 13
1.2.3 现代的数据库管理系统阶段 14
1.3 数据库系统架构 16
1.3.1 数据存储架构 16
1.3.2 数据视图管理架构 18
1.3.3 数据库应用架构 19
1.4 数据库管理系统组件 23
1.4.1 数据和元数据 23
1.4.2 输入 24
1.4.3 查询处理器 25
1.4.5 事务管理器 26
1.4.4 存储管理器 26
1.5 数据库技术的发展趋势 27
1.5.1 数据库技术面临的挑战 27
1.5.2 数据库技术的未来 27
1.6 小结 29
1.7 思考和练习 29
第2章 数据库建模——ER图 31
2.1 ER图的基本概念 31
2.1.1 实体集和实体集中的属性 32
2.1.2 联系集和联系集中的属性 35
2.1.3 绘制ER图 37
2.2 ER图设计原则 39
2.2.1 真实性原则 40
2.2.2 避免冗余原则 40
2.2.3 简单性原则 40
2.2.4 恰当性原则:用实体集还是用属性 41
2.2.5 恰当性原则:用实体集还是用联系集 41
2.3 对约束建模 42
2.3.1 映射约束 42
2.3.2 键码约束 45
2.3.3 参照完整性约束 47
2.4 弱实体集 48
2.3.4 其他类型的约束 48
6.2.6 正则覆盖 1 49
2.4.1 弱实体集产生的原因 49
2.4.2 对弱实体集的要求 50
2.4.3 弱实体集的表示方法 50
2.5.1 特殊化技术 51
2.5 ER图的高级技术 51
2.5.2 概括技术 52
2.5.3 属性继承技术 53
2.5.4 概括约束设计 53
2.5.5 聚集技术 54
2.7 思考和练习 56
2.6 小结 56
3.1 概述 58
3.1.1 IDEF方法族简介 58
第3章 数据库建模——IDEF1x图 58
3.1.2 IDEF1x图的概念和特点 60
3.2 IDEF1x图的语法和语义 61
3.2.1 实体 61
3.2.2 连接联系 62
3.2.3 分类联系 66
3.2.4 非确定联系 68
3.2.5 属性 69
3.2.6 主键码和次键码 71
3.2.7 外键码 73
3.3 使用IDEF1x图建立数据库模型的过程 75
3.3.1 准备阶段 75
3.3.2 定义实体阶段 78
3.3.3 定义联系阶段 79
3.3.4 定义键码阶段 81
3.3.5 定义属性阶段 85
3.3.6 文件编制阶段 87
3.4 小结 88
3.5 思考和练习 88
第4章 数据库建模——ODL方法 90
4.1 面向对象概述 90
4.1.1 面向对象模型和关系模型比较 90
4.1.2 面向对象基本概念 91
4.2 ODL的基本结构 93
4.2.1 ODL概念 93
4.2.2 ODL接口说明 94
4.2.3 ODL中的属性 95
4.2.4 ODL中的联系 96
4.2.5 反向联系的概念 97
4.2.6 联系的多重性 99
4.2.7 ODL中的类型 101
4.2.8 ODL中方法署名的说明 104
4.3 子类和约束 106
4.3.1 ODL中的子类 106
4.3.2 ODL中的约束 110
4.4 小结 115
4.5 思考和练习 115
第5章 关系模型 117
5.1 基本概念 117
5.2 从ER图到关系模型设计的转换 122
5.2.2 实体集到关系模式的转换 123
5.2.1 ER图和关系模式的比较 123
5.2.3 联系集到关系模式的转换 124
5.2.4 弱实体集到关系模式的转换 126
5.2.5 ER图中其他元素的转换 127
5.2.6 键码的转换 129
5.3 从IDEF1x图到关系模型设计的转换 130
5.4 从ODL设计到关系模型设计的转换 131
5.4.1 ODL设计和关系模式设计的比较 131
5.4.2 从ODL属性到关系模式的属性 132
5.4.3 ODL设计中非原子属性的转换 132
5.4.4 ODL设计中联系的转换 136
5.4.5 ODL设计中联系和反向联系问题 137
5.4.6 ODL设计中子类结构的转换 137
5.5 小结 139
5.6 思考和练习 139
第6章 关系模式的规范化设计 141
6.1 概述 141
6.1.1 异常问题 141
6.1.2 泛关系模式和数据库模式 142
6.2 函数依赖 143
6.2.1 函数依赖的定义 143
6.2.2 函数依赖和键码 144
6.2.3 逻辑蕴含 145
6.2.4 函数依赖的推理规则 146
6.2.5 属性集的闭包 147
6.3 关系模式的分解 150
6.4 关系模式的范式 151
6.4.1 第一范式 151
6.4.2 BCNF范式 152
6.4.3 分解成BCNF模式的算法 152
6.4.4 函数依赖的投影 154
6.4.5 第三范式 155
6.4.6 第二范式 157
6.5 多值依赖 157
6.5.1 多值依赖的概念 158
6.5.2 多值依赖的推理规则 159
6.5.3 第四范式 159
6.6 范式之间的关系 160
6.7 数据库模式的实例 161
6.7.1 图书管理数据库模式 161
6.7.2 计算机产品信息管理数据库模式 163
6.8 小结 164
6.9 思考和练习 165
第Ⅱ部分 编程篇 169
第7章 关系代数基本理论 169
7.1 概述 169
7.2 关系代数的基本运算 170
7.2.1 集合运算 170
7.2.2 选择运算 172
7.2.3 投影运算 174
7.2.4 笛卡儿积运算 175
7.2.5 改名运算 176
7.3.1 自然连接运算 177
7.3 关系代数的附加运算 177
7.3.2 θ连接运算 178
7.3.3 除法运算 179
7.3.4 赋值运算 180
7.4 扩充的关系代数运算 181
7.4.1 广义投影运算 181
7.4.2 外连接运算 182
7.4.3 聚集运算 183
7.5 关系演算 183
7.5.2 域关系演算 184
7.5.1 元组关系演算 184
7.6 关系代数的修改运算 185
7.6.1 插入运算 185
7.6.2 删除运算 186
7.6.3 修改运算 186
7.7 关系代数表达式的优化策略 187
7.8 小结 188
7.9 思考和练习 188
第8章 Datalog语言 190
8.1 基本概念 190
8.1.1 基本结构 190
8.1.2 一般规则 192
8.1.3 安全规则 193
8.1.4 外延谓词和内涵谓词 195
8.2 关系代数向Datalog规则的转换 196
8.2.1 从集合运算到Datalog规则 196
8.2.2 从投影运算到Datalog规则 197
8.2.3 从笛卡儿乘积到Datalog规则 197
8.2.4 从选择运算到Datalog规则 198
8.2.5 从连接运算到Datalog规则 200
8.2.6 从多重运算到Datalog规则 200
8.3.1 关系代数存在的问题 201
8.3 递归原理 201
8.3.2 计算最小固定点 203
8.3.3 使用Datalog规则表示固定点公式 204
8.4 包的运算 205
8.4.1 包的意义 205
8.4.2 包的关系运算 206
8.4.3 包的逻辑运算 209
8.5 小结 209
8.6 思考和练习 210
第9章 SQL语言初步 212
9.1 概述 212
9.2 简单查询语句 213
9.2.1 最简单的查询语句 214
9.2.2 投影 215
9.2.3 选择 217
9.2.4 字符串比较 220
9.2.5 日期和时间的比较 221
9.2.6 排序结果 221
9.2.7 副本 223
9.3 高级查询语句 224
9.3.1 连接查询 224
9.3.2 集合查询 230
9.3.3 聚集查询 232
9.3.4 子查询 234
9.4 数据库更新语句 236
9.4.1 插入数据 237
9.4.2 删除数据 238
9.4.3 修改数据 238
9.5 数据定义语句 239
9.5.1 数据类型和域 240
9.5.2 管理表 241
9.5.3 默认值 243
9.5.4 索引定义 243
9.5.5 管理视图 244
9.6 递归查询 246
9.7 动手练习 247
9.8 小结 248
9.9 思考和练习 249
第10章 SQL语言高级功能 251
10.1 约束 251
10.1.1 键码约束 251
10.1.2 外键码约束 253
10.1.3 非空约束 254
10.1.4 CHECK约束 255
10.1.5 断言约束 256
10.2 触发器 258
10.2.1 触发器的结构 258
10.2.2 触发器示例 260
10.3 游标 261
10.3.1 定义游标 261
10.3.2 游标的选项 262
10.4 嵌入式SQL语言 263
10.4.1 接口和声明 263
10.4.2 动态的SQL语句 264
10.5.1 权限的类型 265
10.5 安全控制和权限管理 265
10.5.2 授权和收权 266
10.6 动手练习 267
10.7 小结 268
10.8 思考和练习 268
第Ⅲ部分 实现篇 273
第11章 索引和散列技术 273
11.1 概述 273
11.1.1 文件组织方式 273
11.1.2 顺序文件组织 274
11.1.3 聚集文件组织 275
11.2 索引技术 276
11.2.1 基本概念 276
11.2.2 顺序索引 276
11.2.3 B+树索引文件 280
11.3 散列技术 280
11.3.1 基本概念 281
11.3.2 散列索引 281
11.4 Microsoft SQL Server系统中的索引 282
11.4.1 索引类型 282
11.4.2 创建索引的方法 284
11.6 思考和练习 285
11.5 小结 285
第12章 查询处理技术 286
12.1 概述 286
12.2 查询处理的代价模型 288
12.3 单个关系运算的代价估计 289
12.3.1 选择运算的代价估计 289
12.3.2 连接运算的代价估计 290
12.4 表达式运算的代价估计 291
12.4.1 实体化方法 291
12.3.3 集合运算的代价估计 291
12.4.2 流水线方法 292
12.5 Microsoft SQL Server系统的查询处理器 293
12.5.1 特性概述 293
12.5.2 交互式操作 294
12.5.3 执行计划 295
12.5.4 优化索引 296
12.5.5 优化隐藏 297
12.6 小结 298
12.7 思考和练习 299
13.1 事务 300
13.1.1 事务的基本概念 300
第13章 事务和并发控制 300
13.1.2 事务的状态变迁图 301
13.1.3 事务的并发执行 302
13.1.4 事务的一致性级别 304
13.2 并发控制 305
13.2.1 并发操作带来的问题 305
13.2.2 锁 305
13.2.3 死锁 306
13.3 Microsoft SQL Server系统的事务和锁 307
13.3.1 事务的类型 307
13.3.2 事务的工作原理 308
13.3.3 锁的粒度 310
13.3.4 锁的类型 313
13.3.5 死锁和死锁的解决方案 315
13.4 小结 316
13.5 思考和练习 316
第Ⅳ部分 提高篇 319
第14章 分布式数据库技术 319
14.1 概述 319
14.2 分布式数据库的概念和特点 321
14.2.1 分布式数据库的概念 322
14.2.2 分布式数据库的特点 322
14.3.1 数据复制 324
14.3 分布式数据存储技术 324
14.3.2 数据分片 326
14.3.3 数据混合存储 329
14.4 分布式数据查询技术 330
14.4.1 分布式数据查询示例 331
14.4.2 基于半连接的优化策略 332
14.4.3 基于连接的优化策略 333
14.5 Microsoft SQL Server的分布式计算特点 333
14.5.1 Microsoft Distributed Transaction Coordinator 333
14.5.3 数据复制 334
14.5.2 链接服务器 334
14.6 小结 338
14.7 思考和练习 338
第15章 数据仓库技术 339
15.1 概述 339
15.2 数据挖掘和数据中心库 341
15.2.1 数据挖掘技术 342
15.2.2 数据中心库 344
15.3 数据仓库的支持工具 345
15.3.1 OLAP服务 345
15.3.2 数据转换服务 346
15.4 数据仓库的实现步骤 347
15.3.3 PivotTable服务 347
15.4.1 确定用户需求 348
15.4.2 设计和建立数据库 348
15.4.3 提取和加载数据 351
15.5 数据的粒度、分割和元数据 352
15.6 小结 353
15.7 思考和练习 353
第16章 信息系统的开发过程 354
16.1 信息系统概述 354
16.2.1 方法类型 356
16.2 开发信息系统的方法论 356
16.2.2 开发策略 357
16.3 信息系统开发阶段 358
16.3.1 调查研究阶段 358
16.3.2 系统分析阶段 360
16.3.3 系统设计阶段 362
16.3.4 系统实施阶段 365
16.3.5 系统评价阶段 365
16.4 影响信息系统开发成功和失败的因素 366
16.5 小结 367
16.6 思考和练习 368
参考文献 369