第一部分 设计篇 3
第1章 步入数据库系统世界 3
1.1 数据库技术概述 3
1.1.1 数据库系统应用示例 4
1.1.2 数据库系统的作用 7
1.1.3 常见的数据库系统 8
1.1.4 数据库应用程序的开发过程 11
1.2.1 数据库技术的环境 12
1.2 数据库技术的演变 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 数据库管理系统组件 22
1.4.1 数据和元数据 23
1.4.2 输入 24
1.4.4 存储管理器 25
1.4.3 查询处理器 25
1.4.5 事务管理器 26
1.5 数据库技术的发展趋势 26
1.5.1 数据库技术面临的挑战 26
1.5.2 数据库技术的未来 27
1.6 本章小结 30
1.7 思考和练习 31
2.1 ER图的基本概念 32
2.1.1 实体集和实体集中的属性 32
第2章 数据库建模——ER图 32
2.1.2 联系集和联系集中的属性 36
2.1.3 绘制ER图 38
2.2 ER图设计原则 40
2.2.1 真实性原则 41
2.2.2 避免冗余原则 41
2.2.3 简单性原则 42
2.2.4 合适性原则:用实体集还是用属性 42
2.2.5 合适性原则:用实体集还是用联系集 42
2.3 对约束建模 43
2.3.1 映射约束 43
2.3.2 键码约束 46
2.3.3 参照完整性约束 48
2.3.4 其他类型的约束 49
2.4 弱实体集 49
2.4.1 弱实体集产生的原因 50
2.4.2 对弱实体集的要求 51
2.4.3 弱实体集的表示方法 51
2.5 ER图的高级技术 52
2.5.1 特殊化技术 52
2.5.2 概括技术 53
2.5.3 属性继承技术 54
2.5.4 概括约束设计 54
2.5.5 聚集技术 55
2.6 本章小结 57
2.7 思考和练习 57
第3章 数据库建模——IDEF1x图 59
3.1 IDEF方法族基本知识 59
3.1.1 IDEF方法族简介 59
3.1.2 IDEF1x图的概念和作用 61
3.2.1 实体 62
3.2 IDEF1x图的语法和语义 62
3.2.2 连接联系 63
3.2.3 分类联系 67
3.2.4 非确定联系 69
3.2.5 属性 70
3.2.6 主键码和次键码 72
3.2.7 外键码 74
3.3 使用IDEF1x图建立数据库模型的过程 76
3.3.1 准备阶段 76
3.3.2 定义实体阶段 79
3.3.3 定义联系阶段 80
3.3.4 定义键码阶段 82
3.3.5 定义属性阶段 86
3.3.6 文件编制阶段 88
3.4 本章小结 89
3.5 思考和练习 89
第4章 数据库建模——ODL方法 91
4.1 面向对象的基本概念 91
4.1.1 面向对象模型和关系模型比较 91
4.1.2 面向对象基本概念 92
4.2.1 ODL概念 94
4.2 ODL的基本结构 94
4.2.2 ODL接口说明 95
4.2.3 ODL中的属性 96
4.2.4 ODL中的联系 97
4.2.5 反向联系的概念 98
4.2.6 联系的多重性 100
4.2.7 ODL中的类型 102
4.2.8 ODL中的方法署名的说明 105
4.3.1 ODL中的子类 107
4.3 子类和约束 107
4.3.2 ODL中的约束 111
4.4 本章小结 116
4.5 思考和练习 116
第5章 关系模型 118
5.1 关系模型的基本概念 118
5.2 从ER图到关系模型设计的转换 123
5.2.1 ER图和关系模式的比较 124
5.2.2 实体集到关系模式的转换 124
5.2.3 联系集到关系模式的转换 125
5.2.4 弱实体集到关系模式的转换 127
5.2.5 ER图中其他元素的转换 128
5.2.6 键码的转换 130
5.3 从IDEF1x图到关系模型设计的转换 131
5.4 从ODL设计到关系模型设计的转换 132
5.4.1 ODL设计和关系模式设计的比较 132
5.4.2 从ODL属性到关系模式的属性 133
5.4.3 ODL设计中非原子属性的转换 133
5.4.4 ODL设计中联系的转换 137
5.4.6 ODL设计中子类结构的转换 138
5.4.5 ODL设计中联系和反向联系问题 138
5.5 本章小结 140
5.6 思考和练习 140
第6章 关系模式的规范化设计 142
6.1 关系模式的设计问题 142
6.1.1 异常问题 142
6.1.2 泛关系模式和数据库模式 143
6.2 函数依赖 144
6.2.1 函数依赖的定义 144
6.2.2 函数依赖和键码 145
6.2.3 逻辑蕴含 146
6.2.4 函数依赖的推理规则 147
6.2.5 属性集的闭包 148
6.2.6 正则覆盖 150
6.3 关系模式的分解 151
6.4 关系模式的范式 152
6.4.1 第一范式 152
6.4.2 BC范式 153
6.4.3 分解成BCNF模式的算法 153
6.4.4 函数依赖的投影 155
6.4.5 第三范式 156
6.5 多值依赖 158
6.4.6 第二范式 158
6.5.1 多值依赖的概念 159
6.5.2 多值依赖的推理规则 160
6.5.3 第四范式 160
6.6 范式之间的关系 161
6.7 数据库模式的实例 162
6.7.1 图书管理数据库模式 162
6.7.2 计算机产品信息管理数据库模式 164
6.8 本章小结 165
6.9 思考和练习 166
7.1 关系代数概述 171
第二部分 编程篇 171
第7章 关系代数基本理论 171
7.2 关系代数的基本运算 172
7.2.1 集合运算 172
7.2.2 选择运算 174
7.2.3 投影运算 176
7.2.4 笛卡尔积运算 177
7.2.5 改名运算 178
7.3 关系代数的附加运算 179
7.3.1 自然连接运算 179
7.3.2 θ连接运算 180
7.3.3 除法运算 181
7.3.4 赋值运算 182
7.4 扩充的关系代数运算 183
7.4.1 广义投影运算 183
7.4.2 外连接运算 183
7.4.3 聚集运算 185
7.5 关系演算 185
7.5.1 元组关系演算 186
7.5.2 域关系演算 186
7.6.1 插入运算 187
7.6 关系代数的修改运算 187
7.6.2 删除运算 188
7.6.3 修改运算 188
7.7 关系代数表达式的优化策略 189
7.8 本章小结 190
7.9 思考和练习 190
第8章 Datalog语言 192
8.1 基本概念 192
8.1.1 基本结构 192
8.1.2 一般规则 194
8.1.3 安全规则 195
8.1.4 外延谓词和内涵谓词 197
8.2 关系代数向Datalog规则的转换 198
8.2.1 从集合运算到Datalog规则 198
8.2.2 从投影运算到Datalog规则 199
8.2.3 从笛卡尔乘积到Datalog规则 199
8.2.4 从选择运算到Datalog规则 200
8.2.5 从连接运算到Datalog规则 202
8.2.6 从多重运算到Datalog规则 202
8.3.1 关系代数存在的问题 203
8.3 递归原理 203
8.3.2 计算最小固定点 205
8.3.3 使用Datalog规则表示固定点公式 206
8.4 包的运算 207
8.4.1 包的意义 207
8.4.2 包的关系运算 208
8.4.3 包的逻辑运算 211
8.5 本章小结 211
8.6 思考和练习 212
9.1 SQL概述 214
第9章 SQL语言初步 214
9.2 简单查询语句 215
9.2.1 最简单的查询语句 216
9.2.2 投影 217
9.2.3 选择 219
9.2.4 字符串比较 222
9.2.5 日期和时间的比较 223
9.2.6 排序结果 223
9.2.7 副本 225
9.3.1 连接查询 226
9.3 高级查询语句 226
9.3.2 集合查询 232
9.3.3 聚集查询 233
9.3.4 子查询 236
9.4 数据库更新语句 238
9.4.1 插入数据 238
9.4.2 删除数据 239
9.4.3 修改数据 240
9.5.1 数据类型和域 241
9.5 数据定义语句 241
9.5.2 管理表 242
9.5.3 默认值 244
9.5.4 索引定义 245
9.5.5 管理视图 245
9.6 递归查询 248
9.7 本章小结 249
9.8 思考和练习 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.10.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.1 接口和声明 263
10.4 嵌入式SQL语言 263
10.4.2 动态的SQL语句 264
10.5 安全控制和权限管理 265
10.5.1 权限的类型 265
10.5.2 授权和收权 266
10.6 本章小结 267
10.7 思考和练习 267
第三部分 实现篇 271
第11章 索引和散列技术 271
11.1 文件组织 271
11.1.1 文件组织方式 271
11.1.2 顺序文件组织 272
11.1.3 聚集文件组织 273
11.2 索引技术 274
11.2.1 基本概念 274
11.2.2 顺序索引 274
11.2.3 B+树索引文件 278
11.3 散列技术 278
11.3.1 基本概念 279
11.3.2 散列索引 279
11.4.1 索引类型 280
11.4 Microsoft SQL Server系统中的索引 280
11.4.2 创建索引的方法 282
11.5 本章小结 283
11.6 思考和练习 283
第12章 查询处理技术 284
12.1 基本步骤 284
12.2 查询处理的代价模型 286
12.3 单个关系运算的代价估计 287
12.3.1 选择运算的代价估计 287
12.3.2 连接运算的代价估计 288
12.4.1 实体化方法 289
12.3.3 集合运算的代价估计 289
12.4 表达式运算的代价估计 289
12.4.2 流水线方法 290
12.5 Microsoft SQL Server系统的查询处理器 291
12.5.1 特性概述 291
12.5.2 交互式操作 292
12.5.3 执行计划 293
12.5.4 优化索引 294
12.5.5 优化隐藏 295
12.6 本章小结 296
12.7 思考和练习 297
第13章 事务和并发控制 298
13.1 事务的概念 298
13.1.1 事务的基本概念和特性 298
13.1.2 事务的状态变迁图 299
13.1.3 事务的并发执行 300
13.1.4 事务的一致性级别 302
13.2 并发控制 303
13.2.1 并发操作带来的问题 303
13.2.2 锁 303
13.2.3 死锁 304
13.3.1 事务的类型 305
13.3 Microsoft SQL Server系统的事务和锁 305
13.3.2 事务的工作原理 306
13.3.3 锁的粒度 308
13.3.4 锁的类型 311
13.3.5 死锁和死锁的解决方案 313
13.4 本章小结 314
13.5 思考和练习 314
第14章 Microsoft Access 317
14.1 Microsoft Access 2000的基本特性 317
第四部分 应用篇 317
14.2 Microsoft Access 2000的基本操作 319
14.2.1 创建数据库 319
14.2.2 在数据库中创建Book表 321
14.2.3 在数据库中创建查询 322
14.2.4 创建窗体 324
14.3 本章小结 326
14.4 思考和练习 326
第15章 Microsoft SQL Server 327
15.1 Microsoft SQL Server 2000的特点 327
15.2.1 SQL Server Enterprise Manager 329
15.2 Microsoft SQL Server 2000系统的基本工具 329
15.2.2 SQL Query Analyzer 332
15.2.3 其他重要的工具 334
15.3 本章小结 337
15.4 思考和练习 337
第16章 信息系统的开发过程 338
16.1 信息系统概述 338
16.2 开发信息系统的方法论 340
16.2.1 方法类型 340
16.2.2 开发策略 341
16.3.1 调查研究阶段 342
16.3 信息系统开发阶段 342
16.3.2 系统分析阶段 344
16.3.3 系统设计阶段 346
16.3.4 系统实施阶段 349
16.3.5 系统评价阶段 349
16.4 影响信息系统开发成功和失败的因素 350
16.5 本章小结 351
16.6 思考和练习 352
参考书目 353