文章目录
- 前言
- 基础篇:1-5章
- 第 1 章 绪论
- 1.1 数据库系统概述
- 1.2 数据模型
- 1.3 数据库系统的结构
- 1.4 数据库系统的组成
- 1.5 小结
- 第 2 章 关系数据库
- 1.关系模型
- 1.1 关系数据结构
- 1.2 关系完整性约束
- 实体完整性、参照完整性、用户定义完整性
- 2.关系代数
- 8种关系代数运算符
- 并 ∪
- 差 -
- 交 ∩
- 笛卡尔积 ×
- 选择 σ
- 投影 Π
- 连接 ⋈
- 除 ÷
- 3.关系演算
- 元组关系演算语言ALPHA、域关系演算语言QBE
- 第 3 章 关系数据库标准语言SQL
- 1.数据定义
- 2.数据查询
- SELECT
- WHRER
- 3.数据更新
- 插入数据 INSERT
- 修改/更新 UPDATE
- 删除数据 DELETE
- 第 4 章 数据库安全性
- 4.1 数据库安全性概述
- 4.2 数据库安全性控制
- 授权GRANT、收回权限 REVOKE
- 数据库角色 ROLE
- 存取控制
- 自主存取控制 DAC
- 强制存取控制 MAC
- 4.3 视图机制
- 4.4 审计
- AUDIT 审计
- NOAUDIT 取消审计
- 4.5 数据加密
- 第 5 章 数据库完整性
- 断言
- 触发器
- 高级篇:6-8章
- 第 6 章 关系数据理论
- 函数依赖
- 码
- 范式
- 第一范式:1NF
- 第二范式:2NF
- 第三范式:3NF
- BC范式
- 闭包 F^+^
- 第 7 章 数据库设计
- 小结
- 第8章 数据库编程
- 1.嵌入式SQL
- 游标
- 2.过程化SQL
- 3.ODBC
- 第9章 关系查询处理和查询优化
- 查询处理过程
- 查询优化
- 事务处理(transaction processing)技术 10-11章
- 第10章 数据库恢复技术
- 1.事务(transaction)
- 2.事务的ACID特性(ACID properties)
- 3.故障的种类
- 4.恢复的实现技术
- (1)数据转储 (backup)
- (2)登记日志文件 (logging)
- 5.恢复策略
- 6.具有检查点的恢复技术
- 7.数据库镜像 (mirror)
- 第11章 并发控制技术
- 1.并发控制概述
- 1.并发操作可能带来的3种数据不一致
- 2.并发控制的主要技术
- 2.封锁
- 3.封锁协议
- 4.活锁和死锁
- 5.并发调度的可串行性
- 6.两段锁协议
- 7.封锁的粒度
- 多粒度封锁
- 意向锁
- 新技术篇
- 第13章 数据库技术发展概述
- 第14章 大数据管理
- 第15章 内存数据库系统
前言
本笔记主要来源于王珊老师的课程:https://www.bilibili.com/video/BV13J411J7Vu/?p=1&vd_source=887851cb00540298d60639080f3a1241,
及一位学霸同学的笔记。
我个人的笔记就尽量精简,只记录最为重要的部分。详细可跳转查询学霸的笔记。知识,最好记在脑子里而不是外在的纸质或电子笔记上。
基础篇:1-5章
第 1 章 绪论
1.1 数据库系统概述
1.四个概念:数据、数据库、数据库管理系统、数据库系统
2.三大系统:操作系统、数据库系统、编译系统
1.2 数据模型
1.3 数据库系统的结构
1.4 数据库系统的组成
1.5 小结
第 2 章 关系数据库
关系数据库,就是关系构成的集合。
1.关系模型
1.1 关系数据结构
1.笛卡尔积
A={a,b},B={0,1,2},则笛卡尔积A×B={a,0} {a,1} {a,2} {b,0} {b,1} {b,2}
2.元组
3.码
4.关系模式:R(U,D,DOM,F)
1.2 关系完整性约束
实体完整性、参照完整性、用户定义完整性
关系的两个不变性:实体完整性、参照完整性
2.关系代数
8种关系代数运算符
并 ∪
差 -
交 ∩
笛卡尔积 ×
选择 σ
投影 Π
连接 ⋈
除 ÷
3.关系演算
元组关系演算语言ALPHA、域关系演算语言QBE
第 3 章 关系数据库标准语言SQL
1.数据定义
2.数据查询
SELECT 内容
FROM 表名
WHERE 条件
GROUP BY
HAVING
ORDER BY
SELECT
并操作:UNION
交操作:INTERSECT
差操作:EXCEPT
去重:DISTINCT
WHRER
2.确定范围:BETWEEN (下限) AND (上限) 、NOT BETWEEN (下限) AND (上限)
4.字符匹配:LIKE
(1)通配符
%
:任意长度
_
:一个字符
(2).转义字符:ESCAPE
举例:查询DB_Design课程的课程号和学分
SELECT Cno,Credit
FROM Course
WHERE Cname LIKE 'DB\_Design' ESCAPE'\';
3.数据更新
插入数据 INSERT
INSERT
INTO <表名>(属性)
VALUES (属性值)
修改/更新 UPDATE
UPDATE <表名>
SET 列名=值
WHERE 条件
删除数据 DELETE
DELETE
FROM <表名>
WHERE 条件
第 4 章 数据库安全性
4.1 数据库安全性概述
1.数据库的不安全因素
①非授权用户对数据库的恶意存取和破坏
②数据库中重要或敏感的数据被泄露
③安全环境的脆弱性
2.安全标准简介
①TCSEC标准
②CC标准
4.2 数据库安全性控制
授权GRANT、收回权限 REVOKE
1.GRANT
GRANT 权限
ON 对象类型 对象名
TO 用户名
2.REVOKE
REVOKE 权限
ON 对象类型 对象名
FROM 用户 [CASCADE|RESTRICT]
CASCADE:级联回收
RESTRICT:受限回收
数据库角色 ROLE
1.角色的创建
CREATE ROLE 角色名
2.给角色授权
GRANT 权限
ON 对象类型 对象名
TO 角色
3.将一个角色授予其他的角色或用户
GRANT 角色
TO
[WITH ADMIN OPTION]
4.角色权限的收回
REVOKE 权限
ON 对象类型 对象名
FROM 角色
5.角色权限的增加
GRANT 要增加的权限名
ON 对象类型 对象名
TO 角色名
6.角色权限的减少
REVOKE 要减少的权限名
ON 对象类型 对象名
FROM 角色名
存取控制
自主存取控制 DAC
强制存取控制 MAC
4.3 视图机制
4.4 审计
AUDIT 审计
AUDIT 权限
ON 对象名
NOAUDIT 取消审计
NOAUDIT 权限
ON 对象名
4.5 数据加密
明文(plain text)经加密算法变成密文(cipher text)
1.存储加密
①透明加密
②非透明加密
2.传输加密
①链路加密
②端到端加密
第 5 章 数据库完整性
1.数据的完整性是指数据的正确性和相容性
断言
触发器
高级篇:6-8章
第 6 章 关系数据理论
函数依赖
数据依赖:①函数依赖 ②多值依赖 ③连接依赖
函数依赖的确定:根据语义
1.函数依赖(确定)
2.非平凡的函数依赖
平凡的函数依赖
3.完全函数依赖
部分函数依赖
4.传递函数依赖
码
1.候选码:
2.超码:
3.主码:
4.主属性:包含在任何一个候选码中的属性
5.全码:
范式
第一范式:1NF
第二范式:2NF
第三范式:3NF
BC范式
闭包 F+
第 7 章 数据库设计
小结
第8章 数据库编程
突破SQL语言局限性的三种技术方案:
1.利用高级语言的表达能力:嵌入式SQL
2.扩展SQL语言对于过程控制的表达能力:过程化SQL
3.在一个更大的视野上,将数据库看做是一类数据源:ODBC编程
1.嵌入式SQL
利用高级语言的表达能力:嵌入式SQL
EXEC SQL <SQL语句>
游标
游标是数据库系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。
每个游标区都有一个名字,也可以理解为该数据区的指针可以用SQL语句逐一从游标中(指针所指示的位置)获取记录并赋给主变量,交由主语言进一步处理。
2.过程化SQL
3.ODBC
第9章 关系查询处理和查询优化
查询处理过程
1.查询分析
2.查询检查
3.查询优化
4.查询执行
查询优化
1.代数优化:启发式代数优化
2.物理优化:①基于规则的存取路径优化 ②基于代价的优化
事务处理(transaction processing)技术 10-11章
事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理技术主要包括数据库恢复技术和并发控制技术。
第10章 数据库恢复技术
1.事务(transaction)
1.定义:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
2.事务的ACID特性(ACID properties)
①原子性 (Atomicity)
②一致性 (Consistency)
③隔离性 (Isolation)
④持续性 (Durability) / 永久性(Permanence)
3.故障的种类
①事务内部故障
②系统故障
③介质故障
④计算机病毒
4.恢复的实现技术
(1)数据转储 (backup)
(2)登记日志文件 (logging)
①日志文件的格式和内容
②日志文件的作用
③登记日志文件
5.恢复策略
(1)事务故障的恢复:UNDO
(2)系统故障的恢复:UNDO+REDO
(3)介质故障的恢复:重装后援副本+REDO
6.具有检查点的恢复技术
T2从检查点开始REDO就行,不必全部重做。
7.数据库镜像 (mirror)
频繁复制数据导致系统效率低,一般只镜像关键数据和日志文件
第11章 并发控制技术
1.串行执行 (单处理机)
2.交叉并发执行 (单处理机),提高了系统资源的利用率。
3.同时并发执行 (多处理机)
1.并发控制概述
1.并发操作可能带来的3种数据不一致
(1)丢失修改 (lost update) (修改-修改 冲突)
(2)不可重复读 (non-repeatable read) (读-更新 冲突)
①读-修改
②读-插入
③读-删除 (②③称为 幻影现象)
(3)读“脏”数据 (dirty read) (修改-读 冲突)
记号:
R(x)
:读数据x
W(x)
:写数据x
2.并发控制的主要技术
(1)封锁 (locking)
(2)时间戳 (timestamp)
(3)乐观控制法 (optimistic scheduler)
(4)多版本并发控制 (multi-version concurrency control,MVCC)
2.封锁
1.封锁的定义:对数据对象进行加锁,在其释放锁之前,其他事务不能更新此数据对象。
2.锁的类型
(1)排他锁:X锁 (exclusive locks)、写锁
若事务T对数据对象A加X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。
(2)共享锁:S锁 (share locks)、读锁
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直至T释放A上的S锁为止。
3.封锁类型的相容矩阵
3.封锁协议
1.封锁协议的定义:何时申请锁、持锁时间、何时释放的约定规则。
2.封锁协议的类型
(1)一级封锁协议
①一级封锁协议的定义:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括 正常结束(COMMIT)、非正常结束(ROLLBACK)。
②功能:一级封锁协议可防止①丢失修改,并保证事务T是可恢复的。但不能防止 不可重复读和读脏数据。
(2)二级封锁协议
①二级封锁协议的定义:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,读完后立即释放S锁。(一级封锁协议 + 短读锁)
②功能:二级封锁协议可防止①丢失修改和②读脏数据,但由于加的读锁是短锁,不能防止不可重复读
(3)三级封锁协议
①定义:一级封锁协议加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。(一级封锁协议 + 长读锁)
②功能:可防止丢失修改、不可重复读、读脏数据
4.活锁和死锁
1.活锁
解决活锁的方法:先来先服务(FCFS)
2.死锁
(1)死锁预防
①一次封锁法
i.定义:要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。
ii.缺点:1)过早加锁,降低系统并发度,降低了系统的效率 2)难以确定所有要加锁的对象
②顺序封锁法
i.定义:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实施封锁。
ii.缺点:1)维护成本高 2)难以实现
(2)死锁的诊断和解除
①超时法
1)定义:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
2)优点:实现简单
缺点:i.可能误判死锁 ii.时限若设置得过长,死锁发生后不能及时发现
②等待图法
1)死锁诊断:等待图中出现了回路,则说明产生了死锁。
(b)图中,T1等待T2,T2等待T3,T3等待T2和T4,T4等待T1。A→B意思为A等待B释放锁。
- 死锁解除
撤销一个代价最小的事务,让破除等待环
5.并发调度的可串行性
1.串行调度:串行地调度
2.可串行性调度:执行效果和串行调度相同
3.冲突操作:读-写冲突、写-写冲突(对同一个数据对象进行操作,至少有一个写,才冲突)。读-读不冲突。
4.冲突可串行化的调度
(1)定义:一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,称调度Sc为冲突可串行化的调度。
(2)冲突可串行化调度
→
充分
\xrightarrow{充分}
充分可串行化调度
6.两段锁协议
1.两段锁:
(1)第一阶段,获得封锁 (扩展阶段,只获得锁)
(2)第二阶段,释放封锁 (收缩阶段,只释放锁)
2.遵守两段锁协议 → 充分 \xrightarrow{充分} 充分可串行化调度
3.遵守两段锁协议不能保证防止死锁,但一次封锁法遵守两段锁协议。
4.两段锁协议与三级封锁协议
两类不同目的的协议。
①两段锁协议:保证并发调度的正确性
②三级封锁协议:在不同程度上保证数据一致性
遵守三级封锁协议 → 必然遵守两段锁协议,→ 必然是可串行化调度。
7.封锁的粒度
1.定义:封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。
2.封锁力度与系统并发度和并发控制的开销密切相关:
①封锁的粒度越大,数据库所能够封锁的数据单元越少,并发度越小,系统开销越小。
②封锁的粒度越小,并发度越高,系统开销越大。
多粒度封锁
1.定义:在一个系统中支持对多种封锁粒度提供不同的事务选择
2.多粒度树:根结点是整个数据库,表示最大的数据粒度。叶结点表示最小的数据粒度。有n层就是n级粒度树。
3.显式封锁:直接加到数据对象上的锁
4.隐式封锁:因上级结点加了(显式)锁,而使得该数据对象加了(隐式)锁
意向锁
1.定义:若要对任一结点加锁,必须先对它的上层结点加意向锁。
2.分类
(1)IS锁
若要对某结点加S锁,则要先从其根结点至父结点依次加IS锁,最后才能对该结点加S锁。
(2)IX锁
若要对某结点加X锁,则要先从其根结点至父结点依次加IX锁,最后才能对该结点加X锁。
(3)SIX锁
想读一个数据对象,并更新它的后代结点,加SIX锁 (SIX = S + IX,所有后代都加隐式S锁,某些后代加X锁)。
(4)加入3种意向锁后的相容矩阵,沿对角线对称
(5)锁的强度
1.锁的强度:它对其他锁的排斥程度。依次为 ①X②SIX③S /IX ④IS
2.一个事务在申请封锁时以强锁代替弱锁是安全的,以弱锁代替强锁是不安全的。
(6)含有意向锁的多粒度树
①申请锁时应该自上而下
②释放锁时应该自下而上
新技术篇
第13章 数据库技术发展概述
1.第一代数据库系统:
第二代数据库系统:
第三代数据库系统:
One Size Does Not Fit All
按照应用需求与系统功能分,可以有各种不同类型的系统
第14章 大数据管理
第15章 内存数据库系统
1.定义:使用内存作为常规数据存储设备的数据库系统,简称为IMDB(In-MemoryDatabase)或MMDB(Main-Memory Database)