第1篇 关系数据库设计技术
第1章 关系模型和关系型数据库管理系统 3
1.1 问题的引出 3
1.2 关系模型 5
1.2.1 关系模型的数据结构 5
1.2.2 关系模型的数据操作 7
1.2.3 关系模型的数据约束 12
1.3 关系型数据库管理系统RDBMS 14
第2章 范式及其对数据库设计的指导意义 16
2.1 问题的引出 16
2.2 范式理论概述 17
2.3 1NF及对实践的指导意义 19
2.3.1 1NF的最常见的表述及认识上的误区 19
2.3.2 1NF另一种表述和全面理解1NF 20
2.4 函数依赖 21
2.5 2NF及对实践的指导意义 22
2.6 3NF及对实践的指导意义 23
2.7 BCNF——扩充的第三范式 25
2.8 范式应用实例分析 26
2.8.1 正确理解1NF——树结点的数据表设计 26
2.8.2 3NF在实践中的应用问题 29
2.9 范式的局限——对冗余的进一步讨论 33
2.9.1 范式无法消除的冗余——计算列问题 33
2.9.2 范式无法消除的其他冗余 34
2.9.3 突破范式限制 36
2.9.4 冗余的代价 37
2.9.5 小结 38
第3章 数据库静态结构设计和实现 39
3.1 概念模型一般概念 39
3.1.1 概念模型的两个要素 39
3.1.2 实体关系图 42
3.1.3 概念模型向关系模型转换的方法和规则 43
3.1.4 确定实体属性的重要规则 44
3.2 PowerDesigner概述 44
3.2.1 概念数据模型CDM概述 45
3.2.2 CDM分析设计的一般流程 45
3.2.3 建立CDM的一般操作 47
3.3 实体——域、数据项和属性 48
3.3.1 域 48
3.3.2 数据项 49
3.3.3 实体 51
3.4 实体之间的关系 53
3.4.1 关系 54
3.4.2 关联和关联连接 59
3.4.3 小结 60
3.5 继承 61
3.6 概念数据模型实例分析 63
3.6.1 单据的概念数据模型 63
3.6.2 考勤系统的概念数据模型 64
3.6.3 商品多供应商问题的概念数据模型 66
3.6.4 单据相关人员的概念数据模型 67
3.7 物理数据模型PDM 72
3.8 数据库的建立 76
第2篇 SQL程序设计
第4章 查询语句和视图 81
4.1 单表查询 81
4.2 数据源中数据表的各种连接 86
4.2.1 交叉连接和内连接 87
4.2.2 外连接 88
4.2.3 自连接 90
4.2.4 外连接条件和选择条件 90
4.3 子查询及其逻辑运算符 92
4.4 关系集合运算的实现 94
4.4.1 并运算 95
4.4.2 交和差运算 95
4.4.3 除运算 96
4.5 视图 98
4.6 典型查询实例分析 101
4.6.1 不同选择条件的聚合列的查询 101
4.6.2 一行数据归属多个分组的查询 106
4.6.3 分组列值最大(小)值所在行的查询 112
4.6.4 交叉表的查询 114
4.6.5 汇总表的查询 117
4.7 查询语句小结 124
第5章 修改语句及其子查询的运用 126
5.1 插入行 126
5.1.1 插入单行 126
5.1.2 插入子查询结果 127
5.2 更新行 127
5.2.1 简单的更新 128
5.2.2 WHERE条件带子查询的更新 128
5.2.3 表达式包含子查询的更新 129
5.3 删除行 131
第6章 数据库中数据的安全控制 133
6.1 问题的引出 133
6.2 用户和角色 135
6.3 授权和回收 137
6.4 视图机制控制用户的权限 138
6.4.1 单个基表的视图 139
6.4.2 多个基表的视图 140
6.4.3 通过视图修改基表的应用意义 142
第7章 数据库行为特征设计——SQL程序设计 144
7.1 SQL程序基础 144
7.1.1 批处理 145
7.1.2 变量的声明和使用 146
7.1.3 流程控制语句 149
7.2 函数和表达式 151
7.2.1 表达式和标准函数 151
7.2.2 自定义函数——标量函数 160
7.2.3 表值函数 162
7.3 存储过程 166
7.3.1 存储过程的创建和调用 166
7.3.2 存储过程实例分析——月初库存的生成 169
7.4 触发器 181
7.4.1 创建触发器 181
7.4.2 触发器应用实例 182
7.5 临时表和表变量 187
7.6 游标 193
7.6.1 游标及游标变量的声明 193
7.6.2 打开游标 195
7.6.3 移动游标指针并取得当前行数据 195
7.6.4 关闭和释放游标 196
7.6.5 使用游标实例 196
7.7 事务 200
7.7.1 事务定义方法及基本特性 200
7.7.2 加锁 204
7.7.3 隔离级别 207
7.7.4 SQL Server的事务管理模式 210
7.7.5 事务应用实例 211
第3篇 数据库应用程序界面和中间层设计
第8章 数据库应用程序开发技术概述 215
8.1 数据库应用系统的体系结构 216
8.2 可视化程序设计概述 218
8.3 可视化程序设计实例 218
8.4 数据存取技术 221
第9章 C/S结构在线式数据库应用程序设计 224
9.1 数据库应用程序界面设计需求 224
9.2 Delphi简介 225
9.2.1 Delphi集成开发环境 225
9.2.2 Object Pascal语言概要 227
9.3 界面设计 228
9.4 建立数据模块(Data Module) 230
9.5 控件数据和数据表数据的同步 233
9.5.1 设置属性建立同步 233
9.5.2 数据同步机制解析 234
9.6 实现按钮功能的程序 235
9.7 计算列的计算程序 238
9.8 报表的设计和输出 239
9.9 数据表的打开和窗口的创建 241
9.10 小结 242
第10章 C/S结构断开式数据库应用程序设计 244
10.1 ADO.NET 244
10.2 数据库应用程序界面设计需求 245
10.3 创建项目和界面控件设置 246
10.4 程序方式实现界面控件与数据库数据的交互 248
10.4.1 控件和数据库数据的交互机制概述 249
10.4.2 连接、加载和简单绑定——学生信息的显示 249
10.4.3 详细讲述绑定 251
10.4.4 DataGrid和Relation——学生选课及成绩的显示 258
10.4.5 进一步探究dataSet 260
10.4.6 把dataSet数据存入数据库——保存功能的实现 264
10.4.7 尝试断开式连接的有效性 269
10.5 数据集及绑定的可视化设计和实现 269
10.5.1 类型化和非类型化dataSet 269
10.5.2 构建类型化dataSet 270
10.5.3 设置控件的绑定属性 271
10.6 报表设计 271
10.6.1 水晶报表(Crystal Report)概述 271
10.6.2 简单报表——学生基本信息表 272
10.6.3 使用子报表——学生成绩单格式一 277
10.6.4 运用主从关系——学生成绩单格式二 279
第11章 B/S多层架构入门 281
11.1 基础准备 281
11.1.1 安装JDK 281
11.1.2 安装Eclipse和MyEclipse 282
11.1.3 安装和启动Weblogic 282
11.1.4 在MyEclipse中配置Weblogic 283
11.1.5 SQL Server的设置和安装JDBC 284
11.2 开始第一个程序 284
11.2.1 JDBC连接池 285
11.2.2 配置Data Source和JNDI技术 286
11.2.3 编写Java应用程序 287
11.2.4 编译Java应用程序 288
11.2.5 运行Java应用程序 289
11.2.6 在MyEclispe中运行程序 290
11.2.7 Java应用程序的存储结构 291
11.3 J2EE和EJB简述 293
11.4 实用的用户验证需求 294
11.5 无状态SessionBean——用户验证和密码修改 295
11.5.1 创建和部署无状态SessionBean 296
11.5.2 客户端调用SessionBean 300
11.5.3 增加修改用户密码的方法 307
11.6 有状态SessionBean--保留用户信息 311
11.6.1 创建有状态SessionBean 311
11.6.2 JSP调用有状态的SessionBean 314
11.6.3 有状态和无状态SessionBean特点 317
11.7 EntityBean——修改密码 320
11.7.1 EntityBean——不包含主键类 320
11.7.2 EntityBean——包含主键类 323
11.7.3 Java程序测试EntityBean 326
11.8 常见错误及处理 333
附录A DEMO数据库中数据表结构及数据 335
附录B 完整的Delphi程序 339
附录C 完整的C#窗口Frm_Std_Grade程序 345
附录D CrystalReport设计界面 363
附录E MyEclipse中实例项目清单 365
参考文献 368