数据库系统
- 数据库系统
-
- [规范化理论 ★ ★ ★ ★ ★](#规范化理论 ★ ★ ★ ★ ★)
- [并发控制 ★](#并发控制 ★)
-
- [事务的 ACID 特性](#事务的 ACID 特性)
- 并发存在的问题
- [并发解决方案 - 封锁协议](#并发解决方案 - 封锁协议)
- [数据库的安全性 ★](#数据库的安全性 ★)
- [数据库备份与恢复技术 ★](#数据库备份与恢复技术 ★)
- [数据库的性能优化 ★](#数据库的性能优化 ★)
大家好呀!我是小笙,本章我主要分享系统架构设计师 - 数据库系统(2)知识,希望内容对你有所帮助!!
数据库系统
规范化理论 ★ ★ ★ ★ ★
非规范化的关系模式,可能存在的问题:数据冗余、更新异常(修改操作一致性问题)、插入异常、删除异常
函数依赖
假设 X 决定 Y,即 Y 依赖于 X,记为 X -> Y(可以理解为 在 XY 关系中,任何一个 X 都有与之对应并且唯一的 Y)
部分函数依赖以及传递函数依赖
求候选键
- 将关系模式的函数依赖关系用"有向图"的方式表示
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
- 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键
Armstrong公理
关系模式R<U,F>来说有以下的推理规则:
根据以上三条推理规则可以得到下面的推理规则:
- 合并规则:由 X -> Y,X -> Z 可得 X -> YZ
- 伪传递规则:由 X -> Y,WY -> Z 可得 XW -> Z
- 分解规则: 由 X -> Y 以及 Z 属于 Y 可得 X -> Z
注意记忆规则以及对应的推理公式
范式判断
第一范式 1NF
在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式
第二范式 2NF
当且仅当实体E是第一范式(1NF),且每一个非主属性完全依赖主键(不存在部分依赖)时,则称实体E是第二范式
第三范式 3NF
当且仅当实体E是第二范式(2NF),且实体E中没有非主属性传递依赖于码时,则称实体E是第三范式
BC 范式 BCNF
设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码
例题
1、给定关系模式R(U,F),其中:属性集U={A1,A2,A3,A4,A5,A6},函数依赖集F={A1→A2,A1-→A3,A3→A4,A1A5→A6}。关系模式R的候选码为 A1 A5 ,由于R存在非主属性对码的部分函数依赖,所以R属于 1NF
- A1A3 A1A4 A1 A5 A1A6
- 1NF 2NF 3NF BCNF
模式分解
考虑依据:是否保持函数依赖 & 是否无损
保持函数依赖分解
设数据库模式p={R1,R2,...,Rk}是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集是Fi。如果{F1,F2,...,Fk与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD
例题理解
保持函数依赖,通过 R1和R2 能得出 F = {A -> B,A -> C,B -> C} ,通过传递依赖得出 B -> C
没有保持函数依赖,通过 R1和R2 只能得出 F = {A -> B,A -> C} 无法得出 B -> C
无损分解
无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式
表格法
将一个具有函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→ 分数的关系模式:成绩(学号,姓名,课程号,课程名,分数),分解为:成绩(学号,课程号,分数);学生(学号,姓名);课程(课程号,课程名)
初始表如下:
根据学号 → 姓名,对上表进行处理,将 X 改成符号 √ ;然后考虑课程号→课程名,将 X 改为 √ ,得下表:
从上图中可以看出,第1行已全部为√,因此本次R分解是无损分解
公式法
只能用于分解成两个关系,两个关系直接交集能够推导出差集则为无损连接
例题
1、给出关系R(U,F),U={A,B,C,D,E},F={A -> BC,B -> D,D -> E}。以下关于F说法正确的是 F蕴涵A→D、A→E、B→E,故F存在传递依赖 。若将关系R分解为p = {RI(U1,F1),F2(U2,F2)},其中:U1= {A,B,C},U2= {B,D,E}则分解p 无损连接并保持函数依赖
2、某商场商品数据库的商品关系模式P(商品代码、商品名称,供应商,联系方式,库存量),函数依赖集F={商品代码 -> 商品名称,(商品代码,供应商) -> 库存量,供应商 -> 联系方式}。商品关系摸式P达到 1NF ;该关系模式分解成 P1(商品代码,商品名称),P2(商品代码,供应商,库存量),P3(供应商,联系方式) 后,具有无损连接的特性,并能够保持函数依赖。
并发控制 ★
事务的 ACID 特性
- 原子性:指事务包含的所有操作要么全部成功,要么全部失败回滚。这些操作是一个整体,不能部分地完成
- 一致性:指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
- 隔离性:指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的
- 持续性:指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,无论发送何种故障,都不应对其有任何影响
并发存在的问题
- 丢失更新
- 不可重复读
- 读"脏"数据
并发解决方案 - 封锁协议
- S 封锁(读):共享锁
- X 封锁(写):独占锁
- 一封锁协议(防止丢失更新问题):事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放
- 二封锁协议(防止丢失更新,还可防止读"脏"数据问题):一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,读完后即可释放 S 锁
- 三封锁协议(可防止上述的三个问题):一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,直到事务结束才释放
- 两段锁协议:可串行化的。可能发生死锁
数据库的安全性 ★
安全性的分类
措施 | 说明 |
---|---|
用户标识和鉴定 | 最外层的安全保护措施,可以使用用户帐户、口令及随机数检验等方式 |
存取控制 | 对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数据范围)的权限 |
密码存储和传输 | 对远程终端信息用密码传输 |
视图的保护 | 对视图进行授权 |
审计 | 使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来 |
例题
1、数据库的安全机制中,通过提供 存储过程 第三方开发人员调用进行数据更新,从而保证数据库的关系模式不被第三方所获取。
- 索引
- 视图
- 存储过程
- 触发器
数据库备份与恢复技术 ★
数据备份
- 冷备份也称为静态备份 :是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来
- 优点:非常快速的备份方法(只需复制文件);容易归档(简单复制即可);容易恢复到某个时间点上只需将文件再复制回去);能与归档方法相结合,做数据库"最佳状态"的恢复;低度维护,高度安全
- 缺点:单独使用时,只能提供到某一时间点上的恢复;在实施备份的全过程中,数据库必须要作备份而不能做其他工作;若磁盘空间有限只能复制到磁带等其他外部存储设备上,速度会很慢;不能按表或按用户恢复
- 热备份也称为动态备份 :是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来
- 优点:可在表空间或数据库文件级备份,备份的时间短;备份时数据库仍可使用;可达到秒级恢复(恢复到某一时间点上);可对几乎所有数据库实体做恢复;恢复是快速的
- 缺点:不能出错,否则后果严重;若热备份不成功所得结果不可用于时间点的恢复;因难于维护,所以要特别小心,不允许"以失败告终"
根据备份量划分
- 完全备份:备份所有数据
- 差量备份:仅备份上一次完全备份之后变化的数据
- 增量备份:备份上一次备份之后变化的数据
数据库故障与恢复
故障关系 | 故障原因 | 解决方法 |
---|---|---|
事务本身的可预期故障 | 本身逻辑 | 在程序中预先设置 Rollback 语句 |
事务本身的不可预期故障 | 算术溢出、违反存储保护 | 由DBMS的恢复子系统通过日志,撤销事务对数据库的修改,回退到事务初始状态 |
系统故障 | 系统停止运转 | 通常使用检查点法(系统重启时自动完成) |
介质故障 | 外存被破坏 | 一般使用日志重做业务 |
补充
- 撤销事务:故障发生时未完成的事务,放入 Undo 撤销
- 重做事务:故障发生前已提交的事务,放入 Redo 重做
例题
1、假设某证券公司的股票交易系统中有正在运行的事务,此时,若要转储该交易系统数据库中的全部数据,则应采用 动态全局转储 方式
- 静态全局转储
- 动态全局转储
- 静态增量转储
- 动态增量转储