数据库恢复就是为了将数据库从错误状态恢复到某一已知的正确状态。
一、事务的基本概念
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句。在SQL中,定义事务的语句一般有三条:
begin transaction;
commit;
rollback;
数据库恢复就是为了将数据库从错误状态恢复到某一已知的正确状态。
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句。在SQL中,定义事务的语句一般有三条:
begin transaction;
commit;
rollback;
事务是并发控制的基本单位,事务读数据x一般记为R(x),写数据x一般记为W(x)。
并发控制用于保证事务的隔离性和一致性。
如果不对并发操作进行正确调度,可能导致数据的不一致性问题,包括丢失修改、不可重复读、读脏数据等,原因是并发操作破坏了事务的隔离性。
丢失修改(WW并发):两个事务读入同一数据并修改,其中一个事务的修改会丢失。
不可重复读(RW并发):事务T1读取数据后,T2执行更新操作,使T1无法再现前一次读取结果。
读脏数据(WR并发):"脏"数据指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,则T2读取到的数据就为"脏"数据,即不正确的数据。
数据
数据(Data):描述事物的符号记录,是数据库中存储的基本对象。
单一的数据结构 -> 关系:现实世界的实体以及实体间的各种联系均用关系来表示。
数据的逻辑结构 -> 二维表:从用户角度,关系模型中数据的逻辑结构是一张二维表。
关系模型建立在集合代数的基础上。
域
域(Domain):域是一组具有相同数据类型的值的集合,例如整数、自然数都是域。
笛卡尔积
笛卡尔积(Cartesian Product):笛卡尔积是域上面的一种集合运算。
基本表
基本表是本身独立存在的表,在sql中一个关系就对应一个表。一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
视图
视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,即数据库中只存放视图的定义。而不存放视图对应的数据。这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
数据库的完整性是指数据的正确性和相容性。数据库的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。
为了维护数据库的完整性,DBMS必须能够:
提供定义完整性约束条件的机制:完整性一般由 SQL 的 DDL 语句来实现,它们作为数据库模式的一部分存入数据字典中。
提供完整性检查的方法:检查数据是否满足完整性约束条件的机制。
违约处理:若用户违背了完整性约束条件,应该采取的动作。
关系模式:关系的描述称为关系模式,可以表示为 R (U, D, Dom. F),R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,Dom为属性向域的映射集合,F为属性间数据的依赖关系集合。
候选码(Candidate key):也称码键,表中的某一属性组的值能唯一标识一个元组,则称该属性组为候选码。
数据依赖是一个关系内部属性与属性之间的一种约束关系。有多种类型的数据依赖,其中最重要的是函数依赖和多值依赖。
数据库设计可以分为以下6个阶段: