第1章 数据库系统概述 1
1.1数据库系统及其总体结构 2
1.1.1数据库管理系统出现的背景 2
1.1.2数据库系统的抽象层次 10
1.1.3数据库语言与SQL 12
1.1.4 SQL与ODBC/JDBC/OLE DB/ADO 13
1.1.5数据库系统总体结构 18
1.2数据库系统中的关键术语与概念 19
1.2.1数据库及其相关概念 19
1.2.2视图及其相关概念 21
1.2.3数据抽象、数据模型、数据模式及其相互关系 23
1.2.4传统数据模型回顾 26
1.3数据库系统的用户 28
1.4数据库应用系统开发概述 29
1.4.1 C/S模式 29
1.4.2 B/S模式 30
1.4.3组件与分布式对象开发技术 31
1.4.4 CGI/ISAPI/NSAPI 35
1.4.5 ASP/JSP/PHP 36
1.4.6 .NET与Java EE开发平台 38
1.4.7 Web应用的MVC架构及其各种实现 39
1.5由应用需求看数据库技术的发展 40
1.5.1基于文件系统的数据管理 41
1.5.2第一代数据库系统 42
1.5.3第二代数据库系统 42
1.5.4 OLTP及OLAP 44
1.5.5数据仓库与数据挖掘 44
1.5.6并行与分布式数据库系统 45
1.5.7 Internet/Web数据库 46
1.5.8面向对象的数据库系统 47
小结 48
习题 49
第2章 高级(概念)数据模型 51
2.1关于数据模型的几个重要问题 51
2.2数据库设计综述 53
2.3基本实体联系模型 54
2.3.1实体、实体型及属性 55
2.3.2联系及联系型 57
2.3.3 E-R模型中的完整性约束 58
2.3.4弱实体 63
2.3.5 E-R模型各元素图示 64
2.3.6应用示例 65
2.4扩展实体联系模型 68
2.4.1类层次 68
2.4.2演绎与归纳 69
2.4.3演绎的原则 69
2.4.4聚集 70
2.5利用E-R模型的概念数据库设计 70
2.5.1实体与属性的取舍 71
2.5.2属性在实体与联系间的取舍 71
2.5.3二元联系与三元联系的取舍 72
2.5.4三元联系与聚集的取舍 73
2.5.5大型系统的概念数据库设计方法 73
2.6 E-R模型设计工具——ERwin 74
2.6.1 ERwin建模方法 74
2.6.2 ERwin应用实例 77
2.7 UML对象模型 81
2.7.1对象模型的核心概念 81
2.7.2对象模型的组成 84
2.7.3 UML概述 85
2.7.4对象模型的UML表示 85
2.7.5用类图表达泛化 87
2.7.6用类图表达聚合与组合 87
2.7.7用类图表达依赖 88
2.7.8用类图表达实现 89
小结 89
习题 90
第3章 关系数据模型 91
3.1 SQL语言简介 91
3.2关系数据模型的数据结构 93
3.3关系模型上的完整性约束 94
3.3.1完整性约束简介 94
3.3.2域约束 95
3.3.3主键约束 95
3.3.4唯一约束 96
3.3.5外键约束 96
3.3.6一般性约束 99
3.3.7完整性约束的实施 99
3.4 SQL Server和Sybase支持的完整性约束及其设定 100
3.4.1 SQL Server和Sybase支持的完整性约束 100
3.4.2 DEFAULT的设定 101
3.4.3 RULE的设定 103
3.4.4检查约束的设定 104
3.4.5主键约束的设定 105
3.4.6唯一约束的设定 106
3.4.7外键约束的设定 106
3.4.8触发器的定义 108
3.5视图及其操作 113
3.5.1基本概念 113
3.5.2视图的创建 113
3.5.3视图的修改与删除 114
3.5.4视图的数据插入 114
3.6实体联系模型向关系模型的转换 116
3.6.1转换的一般方法 116
3.6.2联系型转换为表 117
3.6.3带键约束的联系型可不转换为表 119
3.6.4 ERM向RM转换方法小结 120
3.6.5 E-R模型向关系模型转换示例 121
3.7对象模型向关系模型的转换 122
3.7.1关系模型的UML表示 122
3.7.2转换的一般方法 122
3.7.3类的转换 123
3.7.4关联关系的转换 124
3.7.5关联类的转换 125
3.7.6聚合、组合及泛化关系的转换 128
3.7.7转换实例 130
3.8关系代数 132
3.8.1简介 132
3.8.2关系代数概述 133
3.8.3选择与投影 134
3.8.4集合操作 135
3.8.5改名操作 138
3.8.6联结操作 139
3.8.7除(商)操作 143
3.8.8关系代数查询表达式示例 143
3.9关系运算 149
3.9.1元组关系运算 150
3.9.2域关系运算 152
小结 154
习题 154
第4章 SQL语言及其操作 157
4.1 SQL语言概况 158
4.1.1 SQL语言及其标准 158
4.1.2 SQL语言的特点 158
4.1.3 SQL-92标准的分级 159
4.1.4标准SQL语言与实际数据库产品中的SQL语言 159
4.2数据定义子语言及其操作 160
4.2.1定义子语言的3个命令关键字 160
4.2.2定义数据库 161
4.2.3定义表 164
4.2.4定义视图 167
4.2.5定义索引 168
4.3数据操纵子语言及其操作 170
4.3.1数据操纵子语言的4个命令关键字 171
4.3.2数据插入 171
4.3.3数据修改 172
4.3.4数据删除 173
4.3.5数据查询 174
4.4 Sybase和MS SQL Server中的T-SQL语言 181
4.4.1 T-SQL语言简介 181
4.4.2 T-SQL的数据类型 182
4.4.3 T-SQL编程 184
4.4.4 T-SQL提供的函数 190
4.4.5 T-SQL游标 196
4.4.6 T-SQL存储过程 199
4.5在C/C++中使用SQL 202
4.5.1嵌入式SQL语句的基本形式 203
4.5.2嵌入式SQL与宿主语言的通信 205
4.5.3 SQL通信区 205
4.5.4主变量的定义与使用 206
4.5.5嵌入SQL中的游标定义与使用 210
4.5.6 C语言中的嵌入式SQL实例 211
4.6在PowerBuilder中使用SQL 216
4.6.1静态SQL语句 216
4.6.2动态SQL语句 216
4.6.3存储过程调用 219
小结 220
习题 220
第5章 数据库的保护 223
5.1数据库保护概况 223
5.1.1数据库破坏的类型 224
5.1.2 DBMS对数据库的保护措施 224
5.2数据库安全性 225
5.2.1数据库安全性概况 225
5.2.2自主式访问控制的授权与撤权 228
5.2.3 Sybase及MS SQL Server的安全体系及其设置 229
5.2.4数据库安全性的其他相关内容 232
5.3数据库完整性 233
5.3.1数据库完整性概况 233
5.3.2完整性约束的类型 234
5.3.3完整性约束的定义 235
5.3.4完整性约束的验证 237
5.3.5 SQL-92和数据库产品对完整性的推荐/支持 238
5.4故障恢复技术 238
5.4.1事务管理概况 238
5.4.2故障恢复导论 242
5.4.3日志结构 246
5.4.4 DBMS围绕更新事务的工作 247
5.4.5事务内消息的处理 251
5.4.6故障类型及恢复对策 252
5.4.7 Microsoft SQL Server中的事务及故障恢复 254
5.5并发控制 257
5.5.1并发控制导论 257
5.5.2并发执行可能引起的问题 258
5.5.3并发控制的正确性准则 261
5.5.4基于锁的并发控制协议 263
5.5.5多粒度加锁协议 268
5.5.6死锁及其预防、检测与处理 273
5.5.7 Microsoft SQL Server中的并发控制技术 276
小结 278
习题 279
第6章 关系数据库设计理论 281
6.1关系模式中可能存在的异常 281
6.1.1存在异常的关系模式示例 281
6.1.2可能存在的异常 283
6.2关系模式中存在异常的原因 284
6.3函数依赖 285
6.3.1函数依赖定义 285
6.3.2函数依赖分类及其定义 286
6.3.3其他相关定义 286
6.3.4函数依赖示例 287
6.3.5 Armstrong公理系统 288
6.4关系模式的规范形式 289
6.4.1范式 289
6.4.2规范化 289
6.4.3以函数依赖为基础的范式 290
6.4.4多值依赖与第四范式 296
6.4.5联结依赖与第五范式 298
6.5关系模式的规范化 302
6.5.1规范化步骤 302
6.5.2关系模式的分解及其指标 303
小结 304
习题 305
第7章 数据库应用设计 307
7.1数据库应用设计的步骤 307
7.2用户需求描述与分析 309
7.2.1需求分析的内容 309
7.2.2用户需求调研的方法 310
7.2.3用户需求描述与分析 311
7.2.4用户需求描述与分析实例 311
7.3概念设计 315
7.3.1概念设计的方法 315
7.3.2视图设计 315
7.3.3视图集成 316
7.4逻辑设计 317
7.4.1 E-R图向关系模型的转换 317
7.4.2数据模式的优化 320
7.4.3设计用户外模式 322
7.5物理设计 322
7.5.1索引的有关概念 322
7.5.2聚簇索引与非聚簇索引 323
7.5.3建立索引 324
7.6数据库实施 325
7.6.1数据载入 325
7.6.2编写、调试应用程序 325
7.6.3数据库试运行 326
7.7数据库使用与维护 326
小结 328
习题 328
第8章 数据库应用系统设计实例 329
8.1系统总体需求简介 329
8.1.1用户总体业务结构 329
8.1.2总体安全要求 330
8.2系统总体设计 330
8.2.1系统设计考虑的主要内容 330
8.2.2系统的体系结构 330
8.2.3系统软件开发平台 331
8.2.4系统的总体功能模块 332
8.3系统需求描述 333
8.3.1系统全局数据流图 333
8.3.2系统局部数据流图 334
8.3.3系统数据字典 335
8.4系统概念模型描述 337
8.4.1构成系统的实体型 337
8.4.2系统局部E-R图 338
8.4.3合成全局E-R图 340
8.4.4优化全局E-R图 340
8.5系统的逻辑设计 342
8.5.1转化为关系数据模型 343
8.5.2关系数据模型的优化与调整 343
8.5.3数据库表的结构 344
8.6数据库的物理设计 348
8.6.1存储介质类型的选择 348
8.6.2定义数据库 349
8.6.3创建表及视图 349
8.6.4创建索引 353
8.6.5数据库服务器性能优化 353
小结 354
习题 354
第9章 主流数据库产品与工具 355
9.1 Oracle公司的Oracle与MySQL 355
9.1.1历史沿革 355
9.1.2 Oracle数据库 356
9.1.3 MySQL数据库 356
9.1.4 Oracle开发工具 357
9.1.5 Oracle WebLogic应用服务器 358
9.2 IBM公司的DB2及Informix 358
9.2.1历史沿革 358
9.2.2 DB2数据库 359
9.2.3 Informix数据库 359
9.2.4 WebSphere应用服务器 360
9.3 SAP公司的Sybase ASE 360
9.3.1历史沿革 360
9.3.2 Sybase ASE 361
9.3.3 EAServer应用服务器 362
9.3.4 PowerBuilder 362
9.3.5 PowerDesigner 362
9.4 Microsoft公司的SQL Server 363
9.4.1历史沿革 363
9.4.2 SQL Server数据库 363
9.4.3 SQL Server的主要工具 364
9.5 Actian公司的Ingres 364
9.5.1历史沿革 364
9.5.2 Ingres开源数据库 365
9.5.3 Ingres工具 365
小结 366
习题 366
第10章 数据仓库与数据挖掘及数据库新进展 367
10.1数据仓库技术 367
10.1.1数据仓库概述 367
10.1.2数据仓库的多维数据模型 368
10.1.3数据仓库的相关概念 370
10.1.4数据仓库的系统结构 373
10.1.5数据仓库系统开发与工作过程 374
10.2数据挖掘技术 375
10.2.1数据挖掘概述 375
10.2.2数据挖掘的主要技术 377
10.2.3数据挖掘与数据仓库 378
10.2.4数据挖掘在各行业的应用 380
10.3数据库技术的研究与发展 382
10.3.1数据库技术研究的新特点 382
10.3.2数据库技术的研究热点 383
10.3.3国内数据库技术的发展状况 387
10.3.4数据库技术的发展方向 388
小结 389
习题 389
第11章 数据库上机实验及指导 391
11.1 SQL数据库语言操作实验 391
11.1.1 SQL定义子语言实验 391
11.1.2 SQL操纵子语言实验 395
11.1.3 T-SQL编程实验 401
11.2数据库完整性实验 404
11.2.1表本身的完整性 404
11.2.2表间参照完整性 406
11.3 SQL Server安全设置实验 408
11.3.1创建登录账号 408
11.3.2数据库用户设置 408
11.3.3 SQL Server角色管理 409
11.3.4 SQL Server语句及对象授权实验 410
11.4数据库系统管理实验 410
11.4.1故障恢复实验 410
11.4.2数据库服务器及性能设置实验 413
小结 414
习题 415
附录 SQL Server的Pubs样例库表结构 417
参考文献 421