数据库完整性概述

9.1 数据库完整性概述

数据库完整性–数据的正确性,有效性,西安共性

列级约束

对属性的数据类型,等的定义

元祖约束

元组中各个属性之间的约束关系

实现完整性约束的方法

  1. 提供定义机制
  2. 提供检查方法
  3. 违约处理

9.4用户定义的完整性

9.5触发器

一类用户定义在关系数据表上的一类由事件驱动的特殊过程,用编程的方法实现复杂的业务规则

是一种特殊类型的存储过程

可用触发器完成很多数据库完整性保护的过程

  1. 复杂的业务规则
  2. 比较数据修改前后状态

SQL:CREATE TRIGER命令

事务

原子性:不可分割

一致性:事务执行结果必须从一个状态转换到另一个状态时保持一致,即若中间出现错误,则将所有操作撤销

事务应当具有ACID性质,
A是原子性(atomic):事务中包含的各项操作必须全部成功执行或者全部不执行。任何一项操作失败,将导致整个事务失败,其他已经执行的任务所作的数据操作都将被撤销,只有所有的操作全部成功,整个事务才算是成功完成。
C是一致性(consistent):保证了当事务结束后,系统状态是一致的。那么什么是一致的系统状态?例如,如果银行始终遵循着”银行账号必须保持正态平衡”的原则,那么银行系统的状态就是一致的。上面的转账例子中,在取钱的过程中,账户会出现负态平衡,在事务结束之后,系统又回到一致的状态。这样,系统的状态对于客户来说,始终是一致的。
I是隔离性(isolated):使得并发执行的事务,彼此无法看到对方的中间状态。保证了并发执行的事务顺序执行,而不会导致系统状态不一致。
D是持久性(durable):保证了事务完成后所作的改动都会被持久化,即使是发生灾难性的失败。可恢复性资源保存了一份事务日志,如果资源发生故障,可以通过日志来将数据重建起来。

事务应处在下列状态之一

活动状态

失败状态:意味着要回滚

中止状态:数据库已经回滚完毕,恢复到提交前状态

提交状态:当数据更改完全写入磁盘时,进入提交状态

10.3.1事务故障的恢复

1.反向扫描日文件日志,查找该事务的更新操作

2.对该事务的更新操作执行你操作

3.继续反向扫描,直到读到此事务的开始操作

10.3.2系统故障恢复

1.正向扫描日志文件,列出Redo队列,Undo队列

日志

<u>登记两条原则 </u>

<u>1.登记次序严格按并行事物执行顺序 </u>

<u>2.先写日志文件,后写数据库 </u>

Author

YSH

Posted on

2021-12-06

Updated on

2022-10-12

Licensed under