数据库系统
数据库模式

关系表类型
- 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示
- 查询表:查询结果对应的表
- 视图表:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表
数据库视图
他是一个虚拟表(逻辑上的表),其内容由查询定义(仅保存SQL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据
视图的优点
- 视图能简化用户操作
- 视图使用户能以多种角度看待同一数据
- 视图对重构数据库提供了一定程度的逻辑独立性
- 视图可以对机密数据提供安全保护
物化视图
它不是传统意义上虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。
分布式数据库
- 数据独立性:除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)
- 集中与自治共享结合的控制结构。各局部的DBM可以独立地管理局不数据库,具有自治的功能。同时,系统又设有几种控制机制,协调各局部DBM的工作,执行全局应用
- 适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性。
- 全局的一致性、可串行性和可恢复性。

组成
- LDBMS
- GDBMS
- 全局数据字典
- 通信管理
结构
- 全局控制集中DDBMS
- 全局控制分散DDBMS
- 全局控制部分分散的DDBMS
分布透明性
- 分片透明性
- 水平分片
- 垂直分片
- 混合分片
- 位置透明性
- 局部数据模型透明性
分片透明:是指用户不必关心数据是如何分片的,他们对数据的操作在全局关系上进行,即如何分片对用户是透明的
复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成
位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的
局部映像透明性(逻辑透明):是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的
两阶段提交协议
2PC事务提交的两个阶段
表决阶段,目的是形成一个共同的决定 执行阶段,目的是实现这个协调者的决定
两条全局提交规则
只要有一个参与者撤销事务,协调者就必须做出全局撤销决定 只有所有参与者都同意提交事务,协调者才能做出全局提交决定
数据库设计过程

概念结构设计


逻辑结构设计
数据模型
数据模型三要素:数据结构、数据操作、数据的约束条件
相关概念
- 目或度:关系模式中属性的个数
- 候选吗(候选键)
- 主码(主键)
- 主属性与非主属性:组成候选吗的属性就是主属性,其它的就是非主属性
- 外码(外键)
- 全码(ALL-Key):关系模式的所有属性组是这个关系的候选码
完整性约束
- 实体完整性约束:规定基本关系的主属性不能取空值
- 参照完整性约束:关系与关系间的引用,其他关系的主键或空值
- 用户自定义完整性约束:应用环境决定
关系代数

规范化理论
价值与用途
非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常(修改操作一致性问题)、插入异常、删除异常

键

主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性
求候选键
- 将关系模式的函数依赖关系用“有向图”的方式表示
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有节点,则该属性集即为关系模式的候选键
- 若入度为0的属性不能遍历图中所有节点,则需要尝试性的将一些中间结点(即有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键
函数依赖

Armstrong公理

范式判断

第一范式
在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式
简单属性和复合属性、单值属性和多值属性NULL属性、派生属性
第二范式
当切仅当实体E时第一范式(1NF),且每一个非主属性完全依赖主键(不存在部分依赖)时,则称实体E是第二范式
第三范式
当切仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖于码时,则称实体E是第三范式
BC范式
设R是一个关系模式,F是它的依赖集,R属于BCDF当切仅当其F中每个依赖的决定因素必定包含R的某个候选码
模式分解
保持函数依赖分解
设数据库模式p={R1,R2,...,Rk}是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集是Fi。如果{F1,F2,...,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD
无损分解
有损:不能还原 无损:可以还原
无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式
并发控制
事务的ACID特性
事务
- 原子性:是指事物包含的所有操作要么全部成功,要么全部失败回滚。这些操作是一个整体,不能部分地完成
- 一致性:是指事物必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事物执行之前和执行之后都必须处于一致性状态
- 隔离性:是指一个事物的执行不能被其他事物干扰,即一个事物内部的操作及使用的数据对并发的其他事物是隔离的
- 持续性:是指一个事物一旦被提交了,那么数据库中的数据的改变就是永久性的,无论发送何种谷中,都不应对其有任何影响
并发产生的问题
- 丢失更新
- 不可重复读问题
- “脏”数据的读出
封锁协议

- 一级封锁协议:事物T在修改数据R之前必须先对其加X锁,直到事物结束才释放。可防止丢失修改
- 二级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读“脏”数据
- 三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可防止丢失修改、防读“脏”数据与防止数据(不可)重复读
- 两段锁协议。可串行化的,可能发生死锁
丢失更新加锁

读“脏”数数加锁

不可重读读加锁

数据库的安全性

数据库备份与恢复技术
- 冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来
- 热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来

数据备份
- 完全备份:备份所有数据
- 差量备份:仅备份上一次完全备份之后变化的数据
- 增量备份:备份上一份备份之后变化的数据
日志文件:事务日志是针对数据库改所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中
数据库故障与恢复

- 撤销事务:故障发生时未完成的事务,放入Undo撤销
- 重做事务:故障发生前已提交的事务,放入Redo重做