图书目录

目录

源代码 

第一篇 数据库原理与应用基础

第 1章数据库概论 ················································································································3 

1.1 

数据库基本概念 ·······································································································3 

1.1.1 

数据库 ···········································································································3 

1.1.2 

数据库管理系统 ···························································································4 

1.1.3 

数据库系统 ···································································································4 

1.1.4 

数据管理技术的发展 ···················································································6 

1.2 

数据模型 ···················································································································8 

1.2.1 

数据建模 ·······································································································8 

1.2.2 

概念模型 ·······································································································9 

1.2.3 

数据模型的三要素 ·····················································································10 

1.2.4 

层次模型、网状模型和关系模型 ······························································10 

1.

3数据库系统结构 ·····································································································12 

1.3.1 

数据库系统中模式的概念 ··········································································12 

1.3.2 

数据库系统的三级模式结构 ······································································12 

1.3.3 

数据库的两级映像功能和数据独立性 ······················································13 

1.4 

数据库新技术 ·········································································································14 

1.4.1 

大数据 ·········································································································14 

1.4.2 

并行数据库系统 ·························································································19 

1.4.3 

分布式数据库系统 ·····················································································21 

1.4.4 

数据仓库 ·····································································································22 

1.4.5 

联机分析处理 ·····························································································24 

1.4.6 

数据挖掘 ·····································································································27 

1.5 

小结 ························································································································29 习题 1 ······························································································································30 

第 2章关系数据库系统模型 ······························································································32 

2.1 

关系模型 ·················································································································32 

2.1.1 

关系数据结构 ·····························································································32 

2.1.2 

关系操作 ·····································································································35 

2.1.3 

关系的完整性 ·····························································································36

2.2 

关系代数 ·················································································································38 

2.2.1 

传统的集合运算 ·························································································38 

2.2.2 

专门的关系运算 ·························································································40 

2.2.3 

关系代数综合举例 ·····················································································46 

2.3 

关系演算 ·················································································································48 

2.3.1 

元组关系演算 ·····························································································48 

2.3.2 

域关系演算 ·································································································50 

2.4 

小结 ························································································································52 习题 2 ······························································································································53 

第 3章关系数据库标准语言 SQL ·····················································································56 

3.1 

SQL概述 ················································································································56 

3.1.1 

SQL的基本概念 ·························································································57 

3.1.2 

SQL的组成 ································································································57 

3.1.3 

SQL的特点 ································································································58 

3.2 

数据定义 ·················································································································59 

3.2.1 

数据库的定义和删除 ·················································································59 

3.2.2 

数据类型 ·····································································································59 

3.2.3 

基本表的定义、修改和删除 ······································································60 

3.3 

数据查询 ·················································································································64 

3.3.1 

单表查询 ·····································································································65 

3.3.2 

连接查询 ·····································································································72 

3.3.3 

嵌套查询 ·····································································································76 

3.3.4 

联合查询 ·····································································································80 

3.4 

数据更新 ·················································································································81 

3.4.1 

插入数据 ·····································································································81 

3.4.2 

修改数据 ·····································································································83 

3.4.3 

删除数据 ·····································································································84 

3.5 

视图和索引 ·············································································································86 

3.5.1 

视图·············································································································86 

3.5.2 

索引·············································································································88 

3.6 

小结 ························································································································90 习题 3 ······························································································································90 

第 4章数据库完整性 ··········································································································94 

4.1 

数据库完整性概述 ·································································································94 

4.2 

实体完整性 ·············································································································95 

4.2.1 

实体完整性定义 ·························································································95 

4.2.2 实体完整性检查和违约处理 ······································································96 

4.3 参照完整性 ·············································································································96 

4.3.1 参照完整性定义 ·························································································96 

4.3.2 参照完整性检查和违约处理 ······································································96 

4.4 用户定义的完整性 ·································································································98 

4.4.1 属性上的约束 ·····························································································99 

4.4.2 元组上的约束 ···························································································100 

4.5 完整性约束命名子句 ···························································································100 

4.6 完整性约束删除和修改 ·······················································································101 

4.7 触发器···················································································································102 

4.7.1 创建触发器 ·······························································································103 

4.7.2 激活触发器 ·······························································································106 

4.7.3 删除触发器 ·······························································································106 

4.8 小结 ······················································································································106 习题 4 ····························································································································107 

第 5章数据库安全性 ········································································································110 

5.1 数据库安全性概述 ·······························································································110 

5.1.1 数据库的不安全因素 ···············································································110 

5.1.2 安全标准 ···································································································111 

5.2 数据库安全性控制 ·······························································································112 

5.2.1 用户标识和鉴别 ·······················································································112 

5.2.2 存取控制策略 ···························································································113 

5.2.3 自主存取控制 ···························································································114 

5.2.4 强制存取控制 ···························································································114 

5.3 视图机制 ···············································································································115 

5.4 审计 ······················································································································115 

5.5 数据加密 ···············································································································115 

5.6 MySQL安全设置 ·································································································116 

5.6.1 MySQL访问控制 ·····················································································116 

5.6.2 用户管理 ···································································································117 

5.6.3 权限管理 ···································································································119 

5.6.4 角色管理 ···································································································124 

5.7 小结 ······················································································································125 习题 5 ····························································································································126 

6.1 常量、变量、运算符和表达式 ············································································129 

6.1.1 

常量···········································································································129 

6.1.2 

变量···········································································································130 

6.1.3 

运算符和表达式 ·······················································································131 

6.2 

系统函数 ···············································································································132 

6.2.1 

数学函数 ···································································································132 

6.2.2 

字符串函数 ·······························································································133 

6.2.3 

日期和时间函数 ·······················································································135 

6.2.4 

其他函数 ···································································································136 

6.3 

自定义函数 ···········································································································137 

6.4 

流程控制语句 ·······································································································138 

6.4.1 

BEGIN…END语句块、局部变量 ··························································138 

6.4.2 

重置语句结束标记和注释 ········································································139 

6.4.3 

条件语句 ···································································································141 

6.4.4 

循环语句 ···································································································143 

6.5 

存储过程 ···············································································································145 

6.5.1 

创建存储过程 ···························································································146 

6.5.2 

调用存储过程 ···························································································146 

6.5.3 

存储过程的参数 ·······················································································146 

6.5.4 

存储过程的删除 ·······················································································149 

6.6 

游标 ······················································································································149 

6.6.1 

声明游标 ···································································································149 

6.6.2 

打开游标 ···································································································149 

6.6.3 

读取数据 ···································································································150 

6.6.4 

关闭游标 ···································································································150 

6.7 

小结 ······················································································································151 习题 6 ····························································································································152 

第 6章数据库编程 ············································································································129 

目 录 

第二篇 数据库管理和维护

第 7章事务和并发控制 ····································································································157 

7.1 

事务的基本概念 ···································································································157 

7.1.1 

事务的概念 ·······························································································157 

7.1.2 

事务特性 ···································································································157 

7.1.3 

MySQL事务控制语句 ·············································································158 

7.2 

并发控制 ···············································································································163 

7.2.1 

并发执行可能引起的问题 ········································································164 

7.2.2 

事务隔离级别 ···························································································165 

7.2.3 

MySQL事务隔离级别设置 ·····································································166 

7.3 封锁 ······················································································································171 

7.3.1 锁···············································································································171 

7.3.2 封锁协议 ···································································································172 

7.3.3 封锁带来的问题 ·······················································································174 

7.3.4 并发调度的可串行性 ···············································································176 

7.3.5 两阶段封锁协议 ·······················································································178 

7.4 封锁的粒度 ···········································································································180 

7.4.1 多粒度封锁 ·······························································································180 

7.4.2 意向锁 ·······································································································181 

7.5 MySQL的并发控制 ·····························································································182 

7.6 小结 ······················································································································185 习题 7 ····························································································································186 

第 8章数据库恢复技术 ····································································································190 

8.1 数据库恢复概述 ···································································································190 

8.2 故障的种类 ···········································································································190 

8.2.1 事务内部的故障 ·······················································································190 

8.2.2 系统故障 ···································································································191 

8.2.3 介质故障 ···································································································191 

8.3 事务访问数据方式 ·······························································································192 

8.4 恢复实现技术 ·······································································································193 

8.4.1 数据转储 ···································································································193 

8.4.2 登记日志文件 ···························································································194 

8.5 数据库恢复策略 ···································································································196 

8.5.1 事务故障的恢复 ·······················································································196 

8.5.2 系统故障的恢复 ·······················································································196 

8.5.3 介质故障的恢复 ·······················································································197 

8.6 检查点技术和数据库镜像 ···················································································197 

8.6.1 具有检查点的恢复技术 ···········································································197 

8.6.2 数据库镜像 ·······························································································199 

8.7 MySQL数据库备份和恢复 ·················································································200 

8.7.1 备份数据 ···································································································200 

8.7.2 恢复数据 ···································································································204 

8.7.3 使用二进制日志文件恢复数据 ································································206 

8.8 小结 ······················································································································209 习题 8 ····························································································································210 

目 录 

第三篇 数据库设计和应用开发

第 9章关系数据理论 ········································································································217 

9.1 

问题的提出 ···········································································································217 

9.2 

规范化···················································································································220 

9.2.1 函数依赖、码和范式 ···············································································220 

9.2.2  1NF············································································································221 

9.2.3  2NF············································································································222 

9.2.4  3NF············································································································224 

9.2.5  BCNF ········································································································225 

9.2.6 

多值依赖与 4NF ·······················································································226 

9.2.7 

规范化小结 ·······························································································228 

9.3 

数据依赖的公理系统 ···························································································229 

9.3.1 

Armstrong公理系统 ·················································································229 

9.3.2 

闭包及其计算 ···························································································230 

9.3.3 

确定候选码 ·······························································································232 

9.3.4 

函数依赖集的等价和最小函数依赖集 ····················································233 

9.4 

关系模式的分解 ···································································································235 

9.4.1 

模式分解的定义 ·······················································································235 

9.4.2 

分解的无损连接性 ···················································································236 

9.4.3 

分解的保持依赖性 ···················································································238 

9.4.4 

模式分解的算法 ·······················································································238 

9.5 

小结 ······················································································································239 习题 9 ····························································································································240 

第 10章数据库设计 ··········································································································244 

10.1 

数据库设计概述 ·································································································244 

10.2 

需求分析 ·············································································································247 

10.3 

概念结构设计 ·····································································································249 

10.3.1 

概念结构的特点和设计步骤 ·······························································249 

10.3.2 

E-R模型 ·······························································································251 

10.4 

逻辑结构设计 ·····································································································252 

10.4.1 

逻辑结构设计的步骤 ···········································································252 

10.4.2 

E-R模型向关系模型的转换 ································································253 

10.4.3 

数据模型的优化和设计外模式 ···························································255 

10.5 

物理结构设计 ·····································································································256 

10.6 

数据库实施 ·········································································································257 

10.7 数据库运行和维护 ·····························································································258 

10.8 小结 ····················································································································258 习题 10 ··························································································································259

第 11章数据库应用系统设计案例 ···················································································263 

11.1系统需求分析 ·····································································································263 

11.1.1  需求分析的任务 ···················································································263 

11.1.2  数据流图·······························································································265 

11.1.3  数据字典·······························································································265 

11.2数据库概念结构设计 ·························································································268 

11.2.1  设计实体 E-R图···················································································268 

11.2.2  设计局部 E-R图···················································································269 

11.2.3  设计全局 E-R图···················································································270 

11.3数据库逻辑结构设计 ·························································································272 

11.3.1  E-R图向关系模式的转换 ····································································272 

11.3.2  关系模式的优化 ···················································································273 

11.3.3  基本关系表的结构 ···············································································274 

11.4数据库物理结构设计 ·························································································276 

11.4.1  定义关系模式 ·······················································································276 

11.4.2  定义用户外模式 ···················································································278 

11.4.3  定义索引·······························································································278 

11.5小结·····················································································································279 

第四篇 数据库实验

实验准备 1——MySQL 8.0安装与配置 ·············································································283 实验准备 2——实验与章节对应表 ·····················································································287 实验 1数据定义 ·················································································································288 实验 2数据查询 ·················································································································291 实验 3数据更新 ·················································································································296 实验 4视图和索引 ·············································································································299 实验 5数据库完整性 ·········································································································303 实验 6安全管理 ·················································································································308 

实验 7存储过程和游标 ·····································································································310 

目 录 

实验 8事务和并发控制 ·····································································································314 实验 9备份和恢复 ·············································································································318 附录 A案例数据库:学生信息数据库 studb的表结构和样本数据 ·································320 附录 B实验数据库:商店数据库 shopexpm的表结构和样本数据 ···································323 参考文献 ·······························································································································326