目录 第一部分数据库的基本概念和基础知识 第1章绪论31.1数据库系统概述3 1.1.1数据库的基本概念3 1.1.2数据库系统的目标5 1.1.3数据库系统的发展历史8 1.1.4数据管理技术的发展趋势10 1.2数据视图11 1.2.1数据抽象11 1.2.2实例和模式12 1.2.3数据模型13 1.3数据库管理系统概述14 1.3.1数据库语言14 1.3.2查询处理16 1.3.3数据存储17 1.3.4数据库体系结构17 1.4数据库设计18 1.4.1设计过程18 1.4.2ER模型18 1.4.3规范化19 1.5数据库用户和管理员20 1.5.1数据库用户20 1.5.2数据库管理员21 小结21 习题22 第2章关系模型23 2.1关系数据结构23 2.1.1关系的通俗解释23 2.1.2关系的定义24 2.1.3关系模式26 2.2关系模型的完整性约束26 2.2.1实体完整性27 2.2.2参照完整性27 2.2.3用户自定义完整性28 2.3关系操作28 2.3.1基本的关系操作28 2.3.2关系查询语言28 2.4关系代数29 2.4.1基本的关系运算29 2.4.2扩展的关系运算32 2.5查询优化35 2.5.1代数优化35 2.5.2查询执行38 2.6关系演算39 2.6.1元组关系演算39 2.6.2域关系演算41 小结42 习题42 目录〖3〗第二部分关系数据库的基本原理 第3章关系数据库语言——SQL473.1SQL简介47 3.2数据定义48 3.2.1基本表的定义48 3.2.2基本表的修改51 3.2.3基本表的删除51 3.3数据查询52 3.3.1单表查询52 3.3.2多表查询60 3.3.3嵌套子查询62 3.3.4集合查询66 3.4数据更新67 3.4.1数据插入67 3.4.2删除数据68 3.4.3修改数据69 小结70 习题70 第4章视图和索引72 4.1视图72 4.1.1视图的定义72 4.1.2视图的查询74 4.2视图的更新74 4.2.1更新视图75 4.2.2删除视图76 4.3索引76 4.3.1索引类型77 4.3.2创建索引79 4.3.3选择索引82 4.4数据库系统的模式结构83 4.4.1三级模式结构83 4.4.2数据独立性85 小结86 习题86 第5章约束和触发器87 5.1主码和外码约束87 5.1.1主码约束87 5.1.2主外码约束88 5.2基于属性和元组的约束90 5.2.1非空值约束91 5.2.2UNIQUE约束91 5.2.3CHECK子句91 5.2.4用户自定义域92 5.3约束的修改93 5.4断言94 5.4.1创建断言94 5.4.2使用断言94 5.5触发器96 5.5.1定义触发器96 5.5.2触发器的执行101 5.5.3删除触发器102 小结102 习题102 第6章数据库的安全性104 6.1数据库的安全性概述104 6.1.1数据库安全的基本概念104 6.1.2数据库的潜在安全风险105 6.1.3数据库安全常用的关键技术105 6.2数据库安全性控制106 6.2.1用户身份鉴别106 6.2.2存取控制109 6.2.3自主存取控制110 6.2.4强制存取控制119 6.3审计120 6.3.1审计事件120 6.3.2审计功能120 6.3.3PostgreSQL的审计121 6.4数据库加密技术122 6.4.1数据加密122 6.4.2PostgreSQL加密技术123 6.5数据脱敏技术124 小结127 习题128 第7章事务管理129 7.1事务129 7.1.1事务的ACID性质129 7.1.2事务的原子性和持久性131 7.1.3事务的一致性和隔离性132 7.2可串行化134 7.2.1串行调度134 7.2.2可串行化调度135 7.2.3冲突可串行化调度136 7.2.4事务隔离性级别138 7.3并发控制139 7.3.1基于锁的协议139 7.3.2两段锁协议141 7.3.3死锁处理142 7.3.4多粒度封锁143 7.3.5基于时间戳的协议145 7.3.6多版本机制146 7.4数据库恢复146 7.4.1故障类型147 7.4.2恢复技术147 7.4.3检查点恢复技术151 7.4.4恢复算法151 7.5PostgreSQL的备份与恢复153 7.5.1PostgreSQL的备份153 7.5.2PostgreSQL的恢复157 小结160 习题161 第8章数据库应用162 8.1三层体系结构162 8.1.1Web服务器层162 8.1.2应用服务器层163 8.1.3数据库服务器层163 8.2存储过程和函数163 8.2.1定义部分165 8.2.2流程控制171 8.2.3存储过程和函数的创建173 8.2.4存储过程和函数的调用176 8.3JDBC177 8.3.1概述177 8.3.2JDBC访问数据库的基本流程179 8.3.3JDBC的游标与参数绑定182 8.4应用程序安全性185 8.4.1SQL注入186 8.4.2应用程序认证189 8.4.3应用级授权190 8.4.4审计追踪190 小结191 习题191 第三部分数据库的设计 第9章数据库设计1959.1概述195 9.1.1需求分析196 9.1.2概念模型的设计197 9.1.3逻辑模型的设计200 9.1.4物理结构的设计200 9.2ER模型201 9.2.1实体集201 9.2.2联系集201 9.2.3属性集202 9.2.4扩展的ER特性203 9.3约束204 9.3.1映射基数204 9.3.2参与约束205 9.3.3码205 9.4ER图205 9.4.1主要构件206 9.4.2映射基数207 9.4.3角色208 9.4.4弱实体集208 9.4.5多元联系208 9.4.6ISA联系209 9.5ER设计问题209 9.5.1消除冲突和冗余209 9.5.2实体集与属性210 9.5.3实体集与联系集210 9.5.4二元联系与多元联系集211 9.6ER模型转换为关系模式212 9.6.1实体集到关系的转换213 9.6.2弱实体集的处理213 9.6.3联系集到关系的转换213 9.6.4泛化的表示214 9.7统一建模语言215 9.7.1UML常用概念215 9.7.2UML图到关系的转换216 小结217 习题218 第10章关系数据库设计理论220 10.1设计选择220 10.2第一范式222 10.3规范化222 10.3.1函数依赖222 10.3.2码223 10.3.3BCNF范式223 10.3.4第三范式224 10.4函数依赖理论224 10.4.1函数依赖集的闭包224 10.4.2属性子集的闭包226 10.4.3正则覆盖226 10.4.4无损分解228 10.4.5保持函数依赖性231 10.5分解算法232 10.5.1候选码的求解算法232 10.5.2分解为BCNF233 10.5.3分解为3NF235 10.6反规范化的定义236 10.6.1反规范化的定义236 10.6.2常用的反规范化技术237 10.6.3反规范化下的数据完整性237 小结238 习题238 第四部分数据库管理的新技术 第11章NoSQL数据库24311.1概述243 11.1.1NoSQL数据库243 11.1.2NoSQL的理论基础245 11.2键值数据库247 11.2.1基本概念247 11.2.2Redis数据库的结构248 11.2.3Redis数据库的操作252 11.3列簇数据库255 11.3.1基本概念255 11.3.2HBase的数据模型256 11.3.3HBase的存储结构258 11.3.4HBase的系统架构259 11.3.5HBase的操作264 11.4文档数据库270 11.4.1基本概念270 11.4.2MongoDB的数据模型271 11.4.3MongoDB集群架构278 11.4.4MongoDB的基本语法280 11.5图数据库294 11.5.1基本概念294 11.5.2Neo4j介绍295 11.5.3Neo4j的存储结构296 11.5.4Neo4j的查询语言CQL301 小结307 习题307 第12章大数据管理309 12.1概述309 12.1.1大数据的概念309 12.1.2大数据的影响310 12.1.3大数据技术311 12.2分布式文件系统312 12.2.1计算机集群结构312 12.2.2HDFS简介313 12.3分布式并行处理314 12.3.1MapReduce的基本架构315 12.3.2MapReduce工作过程317 12.3.3MapReduce编程实践319 12.4云数据库323 12.4.1云数据库产品324 12.4.2关系数据服务326 12.4.3华为云数据库GaussDB(for MySQL)328 12.4.4华为云数据库GaussDB(openGauss)331 12.4.5NoSQL数据服务334 小结336 习题336 参考文献337