数据库原理
本文整理自《数据库原理》和期末复习提纲
1. DBMS
数据库管理系统(Database Management System),简称DBMS,是位于用户与操作系统之间的一层数据管理软件。
DBMS.png
数据库系统的特点
- 数据结构化
- 数据的高共享性
- 数据独立性
- DBMS对数据统一管理和控制
2. 数据库管理技术的发展过程
人工管理阶段 —— 20 世纪 40 年代中期 - 20 世纪 50 年代中期
文件系统阶段 —— 20 世纪 50 年代末期 - 20 世纪 60 年代中期
数据库系统阶段 —— 20 世纪 60 年代后期以来
3. 数据模型
通俗地讲数据模型就是现实世界的模拟,在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
数据模型分成两个不同的层次
概念模型(用户),也称信息模型,它是按用户的观点来对数据和信息建模。
数据模型(计算机),主要包括网状模型、层次模型、关系模型、面向对象模型等,它是按计算机系统的观点对数据建模。
4. 数据库系统的模式
模式.png4.1 三级模式结构
(1) 外模式(又名子模式、用户模式),是数据库用户可见可用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
(2) 模式(又名逻辑模式),是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
(3) 内模式(又名存储模式),是数据物理结构和存储方式的描述,是数据在数据库内部的存储方式
(4) 一个数据库只有一个模式和一个内模式,但是可以有多个外模式。
(5) 模式与外模式的关系:一对多
- 外模式通常是模式的子集
- 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
- 对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
- 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
(6) 外模式与应用的关系:一对多
- 同一外模式可以为某一用户的多个应用系统所使用
- 一个应用程序只能使用一个外模式
4.2 二级映像模式
(1) 外模式 - 模式映象(逻辑独立性)
- 定义外模式与模式之间的对应关系
- 每一个外模式都对应一个外模式/模式映象
- 外模式/模式映象的用途:保证数据的逻辑独立性
- 当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
- 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
(2) 模式 - 内模式映像(物理独立性)
- 模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在内部是如何表示的
- 数据库中模式/内模式映象是唯一的
- 模式/内模式映象的用途:保证数据的物理独立性
- 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
- 应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
5. 事务
(1) 事务是恢复和并发控制的基本单位
(2) 事务的特性(ACID)
-
原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
-
一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
一致性状态:数据库中只包含成功事务提交的结果
不一致状态:数据库中包含失败事务的结果 -
隔离性(Isolation)
对并发执行而言
- 一个事务的执行不能被其他事务干扰。
- 一个事务内部的操作及使用的数据对其他并发事务是隔离的。
- 并发执行的各个事务之间不能互相干扰
-
持续性(Durability)
持续性也称永久性(Permanence)
- 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
- 接下来的其他操作或故障不应该对其执行结果有任何影响。
-
破坏事务ACID特性的因素
- 多个事务并行运行时,不同事务的操作交叉执行
- 事务在运行过程中被强行停止
6. 故障的种类
6.1 事务故障
(1) 事务故障的恢复 (先UNDO再REDO)
- 撤消事务(UNDO)
- 强行回滚(ROLLBACK)该事务
清除该事务对数据库的所有修改,使得这个事务像根本没有启动过一样。
(2) 事务故障的常见原因
输入数据有误、运算溢出、违反了某些完整性限制、某些应用程序出错、并行事务发生死锁
6.2 系统故障
(1) 什么是系统故障
- 整个系统的正常运行突然被破坏
- 所有正在运行的事务都非正常终止
- 内存中数据库缓冲区的信息全部丢失
- 外部存储设备上的数据未受影响
(2) 系统故障的恢复 (先UNDO再REDO)
- 正向扫描日志文件(即从头扫描日志文件)
- 对Undo队列事务进行UNDO处理
- 对Redo队列事务进行REDO处理
(3) 系统故障的常见原因
操作系统或DBMS代码错误、操作员操作失误、特定类型的硬件错误(如CPU故障)、突然停电
6.3 介质故障
(1) 什么是介质故障
硬件故障使存储在外存中的数据部分丢失或全部丢失。
介质故障比前两类故障的可能性小得多,但破坏性大得多
(2) 介质故障的恢复
先找备份点再重新执行备份点之后的成功事务
-
装入数据库发生介质故障前某个时刻的数据副本
-
(REDO)重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库
恢复操作的基本原理:冗余
- 利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据
(3) 介质故障的常见原因
硬件故障:磁盘损坏、磁头碰撞、操作系统的某种潜在错误、瞬时强磁场干扰
7. 并发控制
数据库管理系统中并发控制的责任是保证事务的 ACID (原子性、一致性、隔离性、持久性;在此主要针对一致性和隔离性)特性。
(1) 不加控制的并发操作会导致数据的不一致性,包括:
-
丢失修改
两个事务 T1、T2 读入同一数据进行修改,T2 提交的结果破坏了 T1 提交的结果,导致 T1 的修改被丢失 -
不可重复读
事务 T1 读入数据后,事务 T2 对该数据执行了更新操作,使得事务 T1 再次读取数据时得到跟之前不一样的结果- 之前读到 100,之后读到 200
- 之前读到有/无,之后读到无/有
- 之前读到很少,之后读到很多
-
读脏数据
事务 T1 写入某一数据,事务 T2 读到这一数据,但后来 T1 被取消了,导致 T2 读到了不正确的数据
(2) 并发控制的主要技术有封锁、时间戳、乐观控制法和多版本并发控制等
- 封锁:排他锁(X)和共享锁(S)组成的封锁协议
- 时间戳:给每一个事务盖上一个时间戳标签,按照这个时间戳来解决事务的冲突操作
- 乐观控制法:让事务自由执行,在事务提交前再进行正确性检查
- 多版本并发控制:在数据库中通过维护数据对象的多个版本信息实现高效并发控制
(3) 基本封锁类型
-
排他锁、写锁、X:若事务 T 对数据对象 A 加 X 锁,则 T 可以读写 A,在 T 释放 A 上的锁之前其他任何事务都不能再对 A 加任何类型的锁
-
共享锁、读锁、S:若事务 T 对数据对象 A 加 S 锁,则 T 只可以读 A,在 T 释放 A 上的 S 锁之前其他任何事
务都只能对 A 加 S 锁,而不能加 X 锁
(4) 封锁协议
-
三级封锁协议
三级封锁协议.png -
两段锁协议
并发调度的可串行性的充分条件 - 多个事务的并发执行正确,当且仅当其结果与按某一次序串行
地执行这些事务时的结果相同
8. 范式
范式是一种分层结构的规范,分为六层:每一次层都比上一层更加严格:若要满足下一层范式,前提是满足上一层范式。
六层范式:1NF,2NF,3NF,BCNF,4NF,5NF,1NF要求最低;5NF要求最严格。