数据库系统原理要点整理
CH1 数据库系统引论
- 数据库系统的特点
- 数据结构化
- 数据独立性高
- 数据冗余少
- 数据共享
- 统一的数据保护功能
- 数据模型
- 数据结构
- 数据操作
- 数据的完整性约束
- 数据库系统的三级模式和二级映像
- 模式、内模式、外模式
- 外模式模式映像:逻辑独立性
- 模式内模式映像:物理独立性
- DBMS的功能
- 数据库的定义功能
- 数据库的操纵功能
- 数据库的保护功能
- 数据库维护功能
- 数据库系统涉及的人员
- 用户
- 应用程序员
- 系统分析员
- 数据库管理员DBA
CH2 数据模型
- E-R模型的主要概念
- 实体
- 属性
- 实体间的联系
CH3 关系数据库
- 关系代数
- 传统的集合运算:并、交、差、笛卡尔积
- 专门的关系运算:选择、投影、连接、除
- 五种基本运算:并、差、笛卡儿积、选择、投影
CH4 SQL
- 九个动词
- 数据定义:CREATE、DROP、ALTER
- 数据查询:SELECT
- 数据更新:INSERT、DELETE、UPDATE
- 数据控制:GRANT、REVOKE
- 聚簇索引:索引次序与表中元组的物理次序一致的索引
- 查询
- 单表查询
- 统计查询
- 连接查询:外连接
- 嵌套查询:相关子查询、非相关子查询
- 集合查询
- 插入
- 插入单个元组
- 插入子查询结果
- 嵌入式SQL引入了游标机制来来协调面向集合和面向记录两种不同的处理方式
CH5 查询处理和查询优化
- 查询处理的过程
- 查询分析:词法分析、语法分析、语义分析
- 查询检查:安全性检查、完整性检查、有效性检查
- 建立查询的内部表示:语法树
- 查询优化
- 查询计划执行
- 选择操作的实现
- 顺序扫描法
- 二分查找法
- 使用索引(或散列)的扫描方法
- 连接操作的实现
- 嵌套循环法
- 索引嵌套循环法
- 排序合并法
- 散列连接法
- 查询优化技术
- 代数优化
- 基于存储路径的优化
- 基于代价估算的优化
- 代数优化的启发式规则
- 尽可能早地执行选择操作
- 投影运算和选择运算尽量同时进行
- 将投影运算同其或前其后的二元操作结合
- 把某些选择操作同其前的笛卡儿积操作结合起来成为一个连接操作
- 存储公共子表达式
CH6 数据库的安全性
- 数据库系统主要采取的安全技术
- 访问控制技术:用户名和口令
- 存取控制技术:自主存取控制DAC、强制存取控制MAC
- 数据加密技术
- 数据审计
- 强制存取控制MAC
- 主体的许可级别>=客体的密级:可读
- 主体的许可级别<=客体的密级:可写
- 角色与用户是一对多的关系
- 视图:隐藏数据
CH7 数据库的完整性
- 完整性约束按作用对象分类
- 列级约束
- 元组约束
- 关系约束
- 完整性子系统的功能
- 提供定义完整性约束条件的机制
- 提供完整性检查的方法
- 违约处理
- 破坏参照完整性时的违约处理:拒绝执行、级联操作、置空值
- 在参照关系中插入(修改)元组:受限插入、递归插入
- 在被参照关系中删除(修改)元组:受限删除、级联删除、置空值
- 触发器
- SQL Server:inserted、deleted
- MySQL:new、old
CH8 数据库恢复技术
- 事务的四个特性ACID:
- 原子性A:要么都做要么都不做
- 一致性C:从一个一致状态到另一个一致状态
- 隔离性I:不互相干扰
- 持久性D:一旦提交,数据修改是永久的
- 故障分类
- 系统故障
- 事务内部的故障
- 介质故障
- 其他原因
- 数据转储
- 静态转储、动态转储
- 海量转储、增量转储
- 先写日志,再写数据库
- 介质故障的恢复
- 利用后备副本重装数据库:静态转储、动态转储+日志
- REDO已完成的事务
- 系统故障的恢复
- 正向扫描日志文件,建立UNDO和REDO队列
- 反向扫描日志文件,对UNDO队列进行UNDO处理
- 正向扫描日志文件,对REDO队列进行REDO处理
- 写检查点的步骤
- 写日志
- 写检查点
- 写数据
- 写重新开始文件
CH9 并发控制
- 异常问题
- 丢失更新:更新被覆盖
- 不可重复读:读过之后被修改,下次读数据不一致
- 读“脏”数据:原数据被撤销
- 可串行化调度:多个事务的并发执行是正确的,当且仅的并发执行的结果与这些事务按某一串行顺序执行的结果相同
- 冲突
- 不冲突:读写不同的数据、读读
- 冲突:读写、写写
- 冲突等价:如果一个调度S能通过一系列非冲突操作执行顺序的交换变成调度S1,则称调度S和S1 冲突等价
- 冲突可串行包含于状态可串行
- 接触活锁:先来先服务
- 死锁:
- 预防死锁:一次封锁法、顺序封锁法、事务重试法
- 解除死锁:超时法、事务等待图法
- 解除死锁的方法:选择一个或多个代价最小的事务进行回滚
- 两段封锁协议2PL
- 两段封锁协议产生的是可串行化调度
- 两段封锁协议不能保持防止死锁
CH10 关系数据库设计理论
- 存储异常
- 数据冗余
- 插入异常
- 删除异常
- 更新异常
- 部分依赖包含于传递依赖
- 键
- 超键:元组角度
- 候选键:函数依赖角度
- 都是确定全部属性,都是最小属性集
- 函数依赖公理
- Armstrong公理:自反律、增广律、传递律
- 推论:合成规则、分解规则、伪传递规则
- 完备性:蕴含等价于用公理推出,F+,X+
- 求X+的有效算法,如何证明X->Y是否是F+中的成员
- 函数依赖集等价的定义:F+ = G+
- 最小函数依赖集的定义:1. 右部都是单属性 2. 没有多余的函数依赖 3. 左部没有多余的属性
- 最小函数依赖集不唯一
- 关系模式的规范化
- 1NF:属性不可再分
- 2NF:非主属性没有部分依赖
- 3NF:非主属性没有传递依赖
- BCNF:主属性没有传递依赖,每一个函数依赖的决定因素都是候选键
- 4NF:不存在非平凡的非函数依赖的多值依赖
- 证明:若一个关系模式属于3NF,则一定属于2NF
CH11 数据库设计
- 数据库设计的过程
- 需求分析:数据字典
- 概念结构设计:E-R图
- 逻辑结构设计:关系模式
- 物理结构设计
- 数据库实施
- 数据库运行与维护
CH12 数据库编程
- 数据库编程
- 存储过程
- 用户定义函数
- 触发器