系统架构设计师 - 数据库系统(2)

数据库系统


大家好呀!我是小笙,本章我主要分享系统架构设计师 - 数据库系统(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、假设某证券公司的股票交易系统中有正在运行的事务,此时,若要转储该交易系统数据库中的全部数据,则应采用 动态全局转储 方式

  • 静态全局转储
  • 动态全局转储
  • 静态增量转储
  • 动态增量转储

数据库的性能优化 ★

相关推荐
Francek Chen3 小时前
【大数据存储与管理】分布式数据库HBase:03 HBase数据模型
大数据·数据库·hadoop·分布式·hdfs·hbase
小吴编程之路10 小时前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子10 小时前
MySQL集群技术
数据库·mysql
凤山老林10 小时前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发10 小时前
Linux与数据库进阶
数据库
与衫10 小时前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫11 小时前
Redis桌面客户端
数据库·redis·缓存
oradh11 小时前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
what丶k11 小时前
如何保证 Redis 与 MySQL 数据一致性?后端必备实践指南
数据库·redis·mysql
_半夏曲11 小时前
PostgreSQL 13、14、15 区别
数据库·postgresql