绪论
概念
-
数据库(DB): 长期存储在计算机内的有组织的、可共享的相关数据的集合。 -
数据库管理系统(DBMS): 介于用户于操作系统之间的一层数据管理软件。为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS是基于某种数据模型。 -
数据库系统: 指带有数据库的计算机应用系统。包括数据库、相应的硬件、软件和各类人员。 关系: DBS包括DB和DBMS -
数据模型: 在机器世界中,直接面向数据库的逻辑结构;涉及到计算机系统和数据库管理系统,描述现实世界的事物及事物间的联系,并对数据建模的模型。 -
数据模型三要素:
-
常见的数据模型:
关系系统的查询优化
- 查询优化策略
- 等价变换->查询的等价表达式
- 估算各表达式的执行代价(磁盘访问数)
- 找出代价最低的表达式作为查询执行计划
- 实际系统的查询优化步骤
- 将查询转换为某种内部标表示,通常是语法树
- 根据一定的等价变换规则把语法树转换为标准(优化)形式
- 选择的低层的操作算法
- 生成查询计划(查询执行方案)
关系数据理论
- 非平凡函数依赖
(
S
n
o
,
C
n
o
)
?
>
G
r
a
d
e
(Sno, Cno) -> Grade
(Sno,Cno)?>Grade
- 平凡函数依赖
(
S
n
o
,
C
n
o
)
?
>
C
n
o
(Sno, Cno)->Cno
(Sno,Cno)?>Cno
- 函数依赖
范式
- 第一范式 1NF
如果一个关系满足:每个属性都是不能再分的元素,那么该关系是一个规范化的关系 - 第二范式 2NF
一个关系属于1NF且没有部分依赖 第一范式消除非主属性对关键字的部分依赖 - 第三范式 3NF
3NF&不传递依赖于关键字 消除主属性对关键字的部分依赖&传递依赖 - BCNF
每个元素都包含码
数据库恢复技术
事务的特性
-
原子性 -
一致性 -
隔离性 -
持续性
三种故障及恢复
-
事务故障 事务没有达到预期的终点,处于不正确的状态。 恢复:强行回滚,撤销该事务已经作出的任何对数据库的修改 事务撤销 -
系统故障 数据库缓存区的内容都丢失,所有运行事务都被丢失 恢复:强行撤销所有未完成事务,重做所有已提交的事务 -
介质故障 破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务 恢复:装入发生故障前某个时刻的数据副本,并重做自此时所有成功的事务
建立冗余
- 数据转储
DBA定期将整个数据库复制到磁盘or磁带,数据库遭到破坏后载入,并重新运行自转储以后的所有更新事务。 - 登记日志文件
- 日志文件 — 用于记录事务对数据库的更新操作的文件
- 日志文件的类型 — 记录or块
- 日志文件的内容 — 事务标识&操作类型&操作对象&更新前数据的旧值&更新后数据的新值
数据库安全性
- 自主存取控制 (DAC)
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户还可以将其拥有的存取权限转授给其他用户
- 强制存取控制 (MAC)
- 每一个数据库对象被标以一定的密级
- 每个用户被授予某一个级别的许可证
- 对于一个人一对象,只有具备合法许可证的用户才可以存取。
强制存取控制中,对于主体和客体,DBMS为它们指派了一个敏感度标记(Label),分为若干级别;
主体的敏感度标记称为许可证级别,客体的敏感度标记为密级
强制存取控制规则:
- 仅当主体的许可证级别大于或者等于客体的密级时,该主体才能读取相应的客体。
- 仅当主体的许可证级别小于客体的密级时,主体才能写相应的客体。
数据完整性
- 数据库的完整性是指数据的正确性和相容性
- DBMS必须提供一种功能来保证数据库中数据的完整性->完整性检查。即系统用一定的机制来检查数据库中的数据是否满足规定的条件 (完整性约束条件)。
并发控制
封锁
- 排它锁(eXclusive lock)
- 共享锁(Share lock)
封锁协议
-
一级锁协议 事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放 防止丢失修改 -
二级锁协议 一级锁协议+事务T在读取数据R之前必须先对其加S锁,读完释放 防止丢失修改和读“脏”数据 -
三级锁协议 一级锁协议+事务T读取数据R之前必须先加S锁,知道事务结束才释放 防止丢失修改、读“脏数据”和不可重复读
活锁&死锁
并发调度的可串行化
可串行性是并行事务正确性的唯一准则;几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。
两段锁协议
- 在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁
- 在释放一个封锁之后,事务不再获得任何其他封锁。
|