数据库原理的知识点总结

一 绪论

数据管理技术的3个阶段

人工管理、文件系统和数据库管理系统

数据模型的分类

概念模型:E-R模型、OO模型

逻辑模型:层次模型、网状模型、关系模型

物理模型:用来描述数据的物理存储结构和存储方式

数据模型的三要素

数据结构、数据操作、数据完整性约束

数据库的三级模式与两层映像

内模式:对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式。

模式:对应于逻辑层数据抽象,它是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

外模式:对应于视图层数据抽象,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。

两层映像

为了能够在系统内部实现3个抽象层次的数据之间的联系和转换,数据库管理系统提出了两层映像:外模式/模式映像,模式/内模式映像。正是这两层映像保证了数据库中的数据具有较高的逻辑独立性和物理独立性。

数据库系统的组成

数据库、数据库管理系统(DBMS)、应用程序、数据库管理员(DBA)、最终用户

二 关系模型与关系代数

基本的关系代数运算

并、差、笛卡尔积、选择、投影

关系模型的完整性约束

实体完整性约束、参照完整性约束、用户自定义完整性约束

三 SQL查询语言

四 数据库建模

五 数据关系理论与模式求精

一个 “ 好 ” 的关系模式应该是数据冗余应尽可能少,且不会发生插入异常、删除异常、更新异常等问题。而且,当为减少冗余进行模式分解时,应考虑分解后的模式是否满足无损连接和保持依赖等特性。

函数依赖包括完全函数依赖,部分函数依赖,传递依赖等。

范式

第一范式:每个属性对应的域值都是不可分的。

第二范式:在第一范式的基础上,消除了非主属性对候选码的部分依赖。

第三范式:在第二范式的基础上,消除了非主属性对候选码的传递依赖。

BCNF: 在第三范式的基础上,消除了主属性对候选码的部分依赖和传递依赖。

无损连接分解和保持依赖分解

闭包和逻辑蕴涵

六 数据库完整性和安全性

游标:若要对SELECT语句返回的结果值进行逐行处理,必须使用游标。

触发器:是用户定义在关系表上的一类由事件驱动的特殊过程,其不仅可以用于数据库完整性检查,也可以用来实现数据库的其他功能,包括数据库安全性,以及一些业务流程和控制流程。

触发器的事件可以是插入、删除、修改操作。因此,触发器有3种类型。

存储过程:为了完成特定功能汇聚而成的一组命名了的SQL语句集合,该集合编译后存放在数据库中,可根据实际需求重新编译。

存储过程的优点:1.将业务操作封装; 2. 便于事务管理; 3.实现一定程度的安全性保护; 4.特别适合统计和查询操作; 5.减少网络通信量。

实现数据库安全的技术:自主存取控制、视图和审计技术。

自主存取控制(Discretionary Access Control,DAC):SQL通过授权GRANT和回收权限REVOKE两条命令来实现安全性,授权分为数据库级、表级和列级权限的授予,也可以分为命令级和对象级权限的授予。

强制存取控制(Mandatory Access Control,MAC):每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。较为严格。

视图:从一个基本表或多个基本表导出的表。在数据库中仅存放视图的定义,不存放视图对应的数据;当基本表中的数据发生变化时,从视图中查询的数据也随之变化。视图实现了数据库管理系统三级模式的外模式。

审计:把用户对数据库的所有操作自动记录下来存入审计日记,数据库管理员可以利用审计跟踪信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

七 事务管理与恢复

并发控制

事务:是具有完整逻辑意义的数据库操作系列的集合,这些操作是一个不可分割的逻辑工作单元,要么全做,要么全不做。

事务的特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability),简称ACID。

1.原子性:事务是数据库的逻辑工作单位,事务中包括的操作要么都做,要么都不做

2.一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。事务执行过程中出现故障则称这时的数据库处于不一致性状态。

3.隔离性:一个事务的执行不能被其他事务干扰,并发执行的各个事务之间不能互相干扰

4.持续性(永久性):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

两阶段封锁协议

每个事务分两个阶段申请锁和释放锁。在增长阶段,事务可以获得锁,但不能释放锁;在缩减阶段,事务可以释放锁,但不能获得新锁。两阶段封锁协议可以保证冲突可串行化。

死锁的预防、检测和解除

死锁即两个事务互相申请对方锁住的资源导致两个事务永远不能结束。

预防策略:

(1) 一次性封锁法:一次性封锁发要求每个事务必须一次将所有要使用的数据全部加锁

       缺点:势必扩大封锁的范围,从而降低了系统的并发度;

(2) 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

       缺点;难以事先确定封锁顺序

死锁解除策略:

(1) 超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁;

       缺点:可能误判死锁,事务因为其他原因使等待时间超过时限;若时限设置得太长,死锁发生后不能及时发现

(2) 等待图法:并发控制子系统周期性地生成事务等待图,并进行检测,如果发现图中存在回路,则发生了死锁。

如果检测到死锁,一般采用的方法是选择一个处理死锁代价较小的事务,将其撤销,释放此事务持有的所有的锁,之后对撤销的事务所执行的数据修改操作必须加以恢复。

故障与恢复

故障的分类

1.事务故障;

2.系统故障:如操作系统故障,CPU故障,系统断电;

3.介质故障:如磁盘损坏、磁头碰撞、瞬时强磁场干扰等。

故障的恢复策略

事务故障的恢复:

(1)反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作

(2)对该事务的更新操作执行逆操作。(来得及或者未来得及写入数据库都没关系)

(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理

(4)如此继续,直到读到该事务的开始标记

系统故障的恢复:

(1)正向扫描日志文件,找出在故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录),将其事务标记记入REDO队列;同时找出故障发生时尚未完成的事务(这些事务只有BEGIN TRANSACTION记录,无相应的COMMIT记录),将其事务标记记入UNDO队列

(2)对撤销队列中的各个事务执行UNDO操作

(3)对重做队列中的各个事务执行REDO操作

为什么要REDO?考虑已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库(磁盘)。

介质故障的恢复:

(1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态

(2)装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务,即扫描日志文件找出需要重做和撤销的事务

日志:是DBMS记录数据库全部更新操作的序列文件。日志记录有两种类型:记录数据更新操作的日志和记录事务更新操作的日志。先写日志规则

检查点:周期性地向日志中写一条检查点记录并记录所有当前活跃的事务,为恢复管理器提供信息,以减少恢复日志的扫描开销和提交恢复效率。

参考资料:https://blog.csdn.net/qq_37205708/article/details/94194465

  • 9
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值