本书从理论与实际应用相结合的角度出发,介绍数据库系统的原理知识与技术应用方法,包括数据库系统概述、关系数据模型、SQL数据库操作语言、数据库设计、数据库管理、数据库应用编程,以及分布式NoSQL数据库技术等内容。
1.本书提供Mooc等辅助教学资源,方便教学。
2.每章最后小节给出一个完整项目实践案例,帮助读者系统理解数据库技术应用方法。解决传统教材理论知识与产业工程实践脱节、工程案例偏少的问题。
3.本书第7章介绍了目前大量应用的NoSQL数据库技术及其应用方法,如键值对数据库、列存储数据库、文档数据库、图形数据库等技术知识。
陆鑫,电子科技大学信息与软件工程学院副教授,长期从事计算机领域的教学和科研工作。在商业智能和企业信息化方面有较多的项目经验,负责多个大型信息系统项目的规划、设计、开发与管理。完成多项大型系统开发,如电子科技大学清水河校区数字化校园系统、大型商业自动化管理系统、煤气管网GIS系统、环境保护GIS/GPS系统、化工企业集团大型MIS系统、包装容器抗压与堆码微机测控系统、嵌入式家电控制器仿真平台系统、钢管生产线监控跟踪系统等,其中数字化校园系统项目经费规模达几千万以上。对IT基础设施中的网络系统、主机系统、存储系统、备份系统、安全系统、Unix/Linux操作系统、中间件平台系统等有全面了解与实践经验。特别对软件系统分析与设计有较高造诣,对系统需求分析、体系结构设计、系统模型开发以及数据库开发与应用等都有丰富实践经验。在数据挖掘、嵌入式计算方向有相应研究,参与完成研究项目“数据挖掘技术预测电价预测模型”“网格环境数据挖掘平台”“基于SOA企业应用集成平台技术”“高可靠现场级实时以态网研究”“信息家电系统仿真组件平台研制”等。
第1章 数据库系统基础 1
1.1 数据库及其系统的概念 1
1.1.1 数据库的定义 1
1.1.2 数据模型 2
1.1.3 数据库系统的组成 4
1.2 数据库技术的发展 7
1.2.1 数据管理技术的演化 7
1.2.2 数据库技术的发展阶段 8
1.2.3 数据库领域的新技术 9
1.3 数据库应用系统 12
1.3.1 数据库应用系统的类型 12
1.3.2 数据库应用系统的结构 13
1.3.3 数据库应用系统的生命周期 15
1.4 典型的数据库管理系统 17
1.4.1 Microsoft SQL Server 17
1.4.2 Oracle DataBase 18
1.4.3 MySQL 18
1.4.4 PostgreSQL 19
1.5 PostgreSQL对象-关系数据库系统软件 19
1.5.1 PostgreSQL软件的获得 19
1.5.2 PostgreSQL软件的功能程序 20
1.5.3 PostgreSQL数据库的管理工具 21
1.5.4 PostgreSQL数据库对象 23
习题 24
第2章 数据库关系模型 25
2.1 关系及其相关概念 25
2.1.1 关系的通俗定义 25
2.1.2 关系的数学定义 26
2.1.3 关系模式表示 28
2.1.4 关系键的定义 28
2.2 关系模型的原理 29
2.2.1 关系模型的组成 29
2.2.2 关系模型的操作 30
2.2.3 数据完整性约束 37
2.3 PostgreSQL数据库关系操作实践 40
2.3.1 项目案例——选课管理系统 40
2.3.2 关系数据库的创建 42
2.3.3 关系表的创建 43
2.3.4 实体完整性定义 44
2.3.5 参照完整性定义 46
2.3.6 用户自定义完整性 48
习题 49
第3章 数据库操作语言SQL 53
3.1 SQL概述 53
3.1.1 SQL的发展 53
3.1.2 SQL的特点 54
3.1.3 SQL的类型 54
3.1.4 SQL的数据类型 55
3.2 数据定义SQL语句 58
3.2.1 数据库的定义 58
3.2.2 数据库表对象的定义 60
3.2.3 数据表索引对象的定义 65
3.3 数据操纵SQL语句 67
3.3.1 数据插入SQL语句 67
3.3.2 数据更新SQL语句 68
3.3.3 数据删除SQL语句 69
3.4 数据查询SQL语句 70
3.4.1 查询语句基本结构 70
3.4.2 从单表读取指定列 71
3.4.3 从单表读取指定行 72
3.4.4 从单表读取指定行和列 73
3.4.5 WHERE子句条件 73
3.4.6 查询结果排序 75
3.4.7 内置函数的使用 76
3.4.8 查询结果分组处理 80
3.4.9 使用子查询处理多表 81
3.4.10 使用连接查询多表 82
3.4.11 SQL JOIN…ON连接 83
3.5 数据控制SQL语句 86
3.5.1 GRANT语句 86
3.5.2 REVOKE语句 87
3.5.3 DENY语句 87
3.6 视图SQL语句 87
3.6.1 视图的概念 87
3.6.2 视图的创建与删除 88
3.6.3 视图的使用 89
3.7 PostgreSQL数据库SQL实践 92
3.7.1 项目案例——工程项目管理系统 92
3.7.2 数据库的创建 93
3.7.3 数据库表的定义 94
3.7.4 数据的维护操作 95
3.7.5 多表的关联查询 98
3.7.6 视图的应用 100
习题 102
第4章 数据库设计与实现 105
4.1 数据库设计概述 105
4.1.1 数据库设计方案 105
4.1.2 数据库设计过程与策略 107
4.1.3 数据库建模设计工具 108
4.2 E-R模型 109
4.2.1 模型基本元素 109
4.2.2 实体联系类型 111
4.2.3 强弱实体 114
4.2.4 标识符依赖实体 114
4.2.5 E-R模型图 115
4.3 数据库建模设计 116
4.3.1 概念数据模型设计 116
4.3.2 逻辑数据模型设计 119
4.3.3 物理数据模型设计 121
4.4 数据库规范化设计 128
4.4.1 非规范化关系表的问题 129
4.4.2 函数依赖理论 130
4.4.3 规范化设计范式 132
4.4.4 逆规范化处理 134
4.5 数据库设计模型的SQL实现 136
4.5.1 确定数据库设计的实现方式 136
4.5.2 设计模型转换为SQL脚本程序 137
4.6 基于PowerDesigner的数据库设计建模实践 138
4.6.1 项目案例——图书借阅管理系统 138
4.6.2 系统概念数据模型设计 138
4.6.3 系统逻辑数据模型设计 142
4.6.4 系统物理数据模型设计 144
4.6.5 PostgreSQL数据库实现 146
习题 154
第5章 数据库管理 156
5.1 数据库管理概述 156
5.1.1 数据库管理的目标与内容 156
5.1.2 数据库管理工具 157
5.1.3 DBMS管理功能 157
5.1.4 DBMS结构 158
5.2 事务管理 159
5.2.1 事务的概念 159
5.2.2 事务的特性 161
5.2.3 事务的并发执行 161
5.2.4 事务SQL语句 162
5.3 并发控制 165
5.3.1 并发控制问题 165
5.3.2 并发事务调度 168
5.3.3 数据库锁机制 170
5.3.4 基于锁的并发控制协议 171
5.3.5 两阶段锁定协议 174
5.3.6 并发事务死锁解决 175
5.3.7 事务隔离级别 176
5.4 安全管理 176
5.4.1 数据库系统安全概述 177
5.4.2 数据库系统安全模型 177
5.4.3 用户管理 179
5.4.4 权限管理 182
5.4.5 角色管理 184
5.5 备份与恢复 187
5.5.1 数据库备份 187
5.5.2 PostgreSQL数据库的备份方法 189
5.5.3 数据库恢复 194
5.5.4 PostgreSQL数据库的恢复方法 195
5.6 PostgreSQL数据库管理项目实践 198
5.6.1 项目案例——成绩管理系统 198
5.6.2 数据库角色管理 199
5.6.3 数据库权限管理 200
5.6.4 数据库用户管理 201
5.6.5 数据库备份与恢复管理 202
习题 204
第6章 数据库应用编程 206
6.1 数据库连接技术 206
6.1.1 ODBC技术 206
6.1.2 JDBC技术 209
6.2 Java Web数据库编程 215
6.2.1 Java Web简介 215
6.2.2 Java Web开发运行环境 215
6.2.3 Servlet技术 216
6.2.4 JSP技术 217
6.2.5 JavaBean技术 227
6.2.6 MyBatis访问数据库技术 227
6.2.7 MyBatis数据库编程 229
6.3 存储过程编程 235
6.3.1 存储过程的基础知识 236
6.3.2 存储过程的优点 244
6.3.3 存储过程的缺点 244
6.4 触发器编程 245
6.4.1 触发器的语法结构 245
6.4.2 触发器的编程技术 248
6.4.3 事件触发器 250
6.4.4 触发器的应用 252
6.4.5 使用触发器的优点 253
6.5 游标编程 253
6.5.1 游标的基础知识 253
6.5.2 游标的应用编程 255
6.6 嵌入式SQL编程 257
6.6.1 嵌入式SQL的处理过程 257
6.6.2 嵌入式SQL的基本语法 257
6.6.3 嵌入式SQL的通信方式 258
6.7 数据库应用编程项目实践 260
6.7.1 项目案例——课程管理系统 260
6.7.2 功能模块设计 262
6.7.3 模块的编码实现 263
习题 272
第7章 NoSQL数据库技术 274
7.1 NoSQL数据库概述 274
7.1.1 关系数据库的局限 275
7.1.2 NoSQL理论基础 276
7.1.3 NoSQL基本概念 277
7.2 列存储数据库 280
7.2.1 列存储的概念 280
7.2.2 HBase数据库的概念 281
7.2.3 HBase数据库的存储结构 284
7.2.4 HBase数据库的系统架构与组成 286
7.2.5 HBase数据库的应用场景 288
7.3 键值对数据库 288
7.3.1 键值对存储的概念 289
7.3.2 Redis数据库的基本知识 289
7.3.3 Redis数据库的结构 290
7.3.4 Redis数据库的相关操作 294
7.3.5 Redis数据库的体系结构 295
7.3.6 Redis数据库的应用场景 296
7.4 文档数据库 297
7.4.1 文档存储的概念 297
7.4.2 MongoDB数据库的基本概念 297
7.4.3 MongoDB数据库的管理 299
7.4.4 MongoDB数据库的集群架构 300
7.4.5 MongoDB数据库的应用场景 304
7.5 图形数据库 304
7.5.1 图形数据模型 306
7.5.2 Neo4j图形数据库 309
7.5.3 Neo4j图形数据库的存储结构 311
7.5.4 Neo4j数据库的集群结构 313
7.5.5 Neo4j数据库的查询语言CQL 314
7.6 NoSQL数据库项目实践 316
7.6.1 项目案例——成绩管理系统 316
7.6.2 设计HBase数据库表 317
7.6.3 安装HBase数据库 318
7.6.4 使用HBase Shell 318
7.6.5 操作HBase数据库 320
习题 324
附录 PostgreSQL数据库系统实验项目 326
实验1 图书销售管理系统数据库设计 326
实验2 图书销售管理系统数据库的创建与数据访问操作 327
实验3 图书销售管理系统数据库后端编程 328
实验4 图书销售管理系统数据库安全管理 329
实验5 图书销售管理系统数据库应用JSP访问编程 330
参考文献 332