第一章 系统概论
1.1 基本概念(概念)
数据库,数据库管理系统,数据库系统,数据库管理员
1.2 数据库系统的发展及趋势
1.3 数据库系统的特点(概念)
数据集成化,数据独立性,数据共享,数据冗余,数据的安全性,完整性和一致性,
并发控制和故障恢复
1.4 数据库内部结构体系(概念)
数据模式
数据库的三级结构:三级模式,二级映射
基本概念:
数据库:是数据的集合,具有统一的结构形式并存放与统一的存储介质,由多种应用数据集成,并可
被应用所共享
数据库管理系统(DBMS):管理数据库的系统软件
作用:是数据库的应用程序与数据库的接口
保证数据安全
可靠的同时,提高数据库应用时的简明性和方便性
功能:数据组织,数据操纵,数据维护,数据控制及保护,数据交换,数据服务,数据字典
数据子语言(SQL):数据定义语言 DDL,数据操纵语言 DML,数据控制语言 DCL
数据库系统(DBS):是一个以对海量的、具有复杂数据结构的、可以持久保存的、可供用户共享的
数据进行统一管理为目标的计算机系统
组成:数据库+数据库管理系统+数据库管理员+软件平台+硬件平台
数据库系统的发展历史:
数据库系统的基本特点:
集成性:集多种数据于一体
表现:采用统一的数据结构,建立一个全局统一的数据模式,根据每个应用的数据需要构造局部模式
独立性:数据库中的数据与使用这些数据的应用程序之间互不依赖。物理独立+逻辑独立
高共享性与低冗余性:
共享:可用于多个程序;可在已有数据库系统上开发新应用程序;可向外界提供信息服务功能
冗余:同一个数据在不同地方出现重复存储
统一管理与控制:
数据的完整性检查 数据的安全性检查 并发控制 数据库故障修复
数据库内部结构体系:
概念模式:整个数据库中数据的全局逻辑结构描述
外模式(子模式、用户模式):关于某个用户所需数据的逻辑结构的描述,是概念模式的一个子集
内模式(物理模式):关于数据库中数据的物理存储结构和物理存取方法的描述
二级映射:
概念模式到内模式:数据的全逻辑结构到数据的物理存储结构的对应关系,实现物理独立性
外模式到概念模式:一个概念模式可以定义几个外模式,外模式是概念模式的一个基本视图,实现逻
辑独立性
第二章 数据模型
2.1 数据模型的基本概念(概念)
数据模型及其组成成分
三种数据模型:概念数据模型,逻辑数据模型,物理数据模型
2.2 数据模型的四个世界(概念)
2.3 概念世界与概念模型
E-R 模型与 E-R 图:实体,属性,联系(应用)
扩充 E-R 模型与扩充 E-R 图:IS-A 联系(概念)
面向对象模型:对象,对象标识符,类,方法,超类和子类,聚合和分解,继承和
合成,方法,消息,封装(概念)
2.4 信息世界和逻辑模型
关系模型:关系,属性,值域,元组,关系数据库,关键字(概念)
2.5 计算机世界与物理模型(概念)
磁盘组织与文件系统
逻辑模型的物理存储:项,记录,文件,索引,集簇
提高文件访问效率的常用方法:索引,集簇,HASH
基本概念:
数据模型:描述数据的结构,定义在数据结构上的可以执行的操作以及数据之间必须满足的约束条件。
组成:
数据结构:描述数据的类型、内容、性质以及数据间的联系
数据操作:在相应数据结构上可以执行的操作类型与操作方式
数据约束:描述数据结构内数据间的相互关系
三种类型:
概念数据模型:E-R 模型,EE-R 模型,面向对象模型,谓词模型
逻辑数据模型:层次模型、网状模型,关系模型、棉线对象模型、谓词模型,对象关系模型
物理数据模型
概念世界与概念模型:
实体-联系模型(E-R 模型):
实体:客观存在有相互区别的事物,实体集之间对应关系:一对一,一对多(多对一),多对多
属性:实体的特征,可以是值,也可以是值域。一个实体会有多种属性
联系:实体集之间的对应关系,种类:二元关系,多元关系,单个实体集内部的联系
表示法:E-R 图
扩充的实体-联系模型(EE-R):
对 E-R 模型的扩充主要是“IS-A 联系“:继承关系
超集(父亲)→子集(子孙):子集继承父亲的所有属性,并扩充父亲的属性
弱实体:如果一个实体 A 的存在需要依赖与其他实体集中的某个实体的存在,则 A 即弱实体
面向对象模型(OO 模型):
子类-超类(IS-A):普化,子类到父类,自下而上;特化,父类到子类,自上而下
继承关系:单继承,每个子类只有一个父类;多继承,每个子类有多个直接超类
类的聚合与分解(IS-Part-OF):
聚合,自下而上,由简单到复杂;分解,自上而下,由复杂到简单
信息世界与逻辑模型:
关系模型:
表结构:关系模型统一使用二维表,简称表。关系模型的操作均在表上进行
组成:若干属性,每个属性有属性值,表的每一行数据称为元组。
性质:元组个数有限性,元组唯一性,无序性(元组+属性),元组分量原子性,属性名唯一性
关系:二维表的一种抽象
关系模式:一个关系名及其属性名构成关系模式,如:S(s1,s2,s3……)
键:能唯一最小标识元组的属性的集
主键
外键
候选键
计算机世界与物理模型:
第三章 关系数据库系统
3.1 关系数据库系统概述
3.2 关系数据库系统的衡量准则
完全关系型的十二条衡量准则
空值(NULL)
3.3 关系模型数学理论-关系代数
3.3.0 关系模型(概念)
关系数据结构
表结构:表框架,表的元数与基数
关系:二维表的性质
关键字:候选关键字,主关键字,外关键字
关系数据库:关系子模式-视图(view)
关系操纵
数据查询:两个关系的合并,单个关系内的元组选择,单个关系内的属性指
定
数据删除、插入、修改
空值的处理
关系中的数据约束
实体完整性约束,参照完整性约束,用户定义的完整性
3.3.1 关系的表示(概念)
关系的表示,迪卡尔乘积
3.3.2 关系操纵的表示(应用)
关系代数中的五种基本运算:选择,投影,笛卡儿积,并,差
基本运算的应用实例
3.3.3 关系模型与关系代数(概念)
3.3.4 关系代数中的扩充运算(应用)
交,除法,联接与自然联接,外联接
扩充运算与基本运算之间的关系
扩充运算的应用实例
3.3.5 关系代数实例(应用)
综合的关系代数应用实例
概述:
关系数据库系统的优点:
数据结构简单(二维表),使用方便(不涉及内部物理结构),功能强大(表达能力强,高级数据操作),
数据独立性高(逻辑结构不涉及物理结构),理论基础深,可移植性好(应用于多钟软硬件平台)
标准化程度高(SQL 语言),丰富的应用开发工具,分布式功能,开放性(提供多种网络环境下的数
据访问接口)
关系数据库系统的衡量准则:
信息准则
统一的数据子语言 视图更新准则
确保访问准则
空置处理准则
基于关系模型的动态联机数据字典
高级插入、修改及删除操作
物理数据独立性
逻辑数据独立性
数据完整性准则
分布独立准则
无损害准则
数据完整性约束:
实体完整性约束:主键中不能有空值,即 primary key 不能为空值
参照完整性约束:外键要么取空值,要么是被引用表中当前存在的某原组长的主键值
用户定义的完整性:用户自己定义的属性取值约束
关系代数:
关系的表示:关系是元组的集合,元组是元组分量的集合
一个 n(属性的个数)元关系就是一个 n 元有序组的集合
关系操纵的表示:
属性指定:二维表中的列,它主要用于检索或定位
元组选择:通过逻辑表达式给出关系中满足该表达式的元组
关系的合并:笛卡尔乘积 R*S,满足交换律和结合律 R*S=S*R,(R*S)*T=R*(S*T)
结果:若 R 有 p 个属性,S 有 q 个属性,则 R*S 后的属性有 p+q 个(若有相同
属性只留一个);R 有 m 个元组,S 有 n 个元组,R*S 后元组个数为 m*n
元组的插入:即并运算 R∪R1(同类关系之间的运算)
元组的删除:即差运算 R — R1(同类关系之间的运算)
查询:
投影运算:B1,B2,…, Bm ( R ),选择结果为二维表的列信息,即一个由 B1,B2,…, Bm 组成的 m 元
关系。注:投影运算不满足交换律:A_set ( B_set ( R ) ) ≠ B_set ( A_set ( R ) )
选择运算:F (R),选择结果为二维表的元祖。其中 F 为基本逻辑条件或者符合逻辑条件(与
或等关系) 注:选择运算满足交换律:F1 ( F2 ( R ) ) = F2 ( F1 ( R ) ) = F1∧F2 ( R ) )
结合运算:A ( F ( R ) )【运算顺序不能颠倒】A ( F ( R ) ) ≠ F ( A ( R ) )
关系模型与关系代数:
关系模型:关系模型的数据结构,关系模型上的数据操纵,关系模型上的数据约束
关系代数:(A, 投影,
选择, ×笛卡尔乘积, ∪并, -差 )
扩充运算:
交运算:R∩S=R-(R-S),同类关系之间的运算,结果为两者的交集,满足交换律和结合律
除运算:T=R÷S
T 的域由 R 中不出现在 S 中的域组成,Head(T) = Head(R) – Head(S);
T 的有序元组为关系 S 中的所有元组在关系 R 中所对应的同一个值
(简单方法:将用 R 除以 S 中每一个属性值得到的结果求交集)
性质:R=T*S 可以推出 T=R/S 或 S=R/T;若有 T=R/S 只能退出 T*S 属于 R
联结运算:
θ–联结运算:在 R 与 S 笛卡尔乘积的结果上加限制条件(iθj)
自然联结:θ–联结运算的特列,条件为通过公共域上相等的值进行连接
第五章 事务处理、并发控制与故障恢复
5.1 事务处理(概念)
事务的定义与 ACID 性质
事务活动及其状态转换图
事务控制及相关的参数设置语句:事务的提交与回滚,事务的读/写类型与隔离级
别
事务的语句组成成分
5.2 并发控制技术(概念)
事务
事务的并发性,并发控制
调度,串行调度,可串行化调度,冲突与冲突可串行化,冲突可串行化的判
定方法
三种数据不一致现象:丢失修改,脏读,不可重复读
封锁
共享锁,排它锁,所相容矩阵,合适事务
基于封锁技术的并发控制实现方法
封锁协议:三级封锁协议,两阶段封锁协议
合法调度:两阶段封锁协议与冲突可串行化的关系
多粒度封锁:封锁粒度与多粒度封锁,意向锁及其锁相容矩阵,多粒度封锁
协议
死锁及其解决方法,活锁及其解决方法
5.3 数据库恢复技术(概念)
数据库恢复的含义、方法和常用措施
数据库故障的分类
数据库故障恢复三大技术
数据转储:静态转储/动态转储,海量转储/增量转储,
日志:
– 日志的内容、组成、作用与记载原则
– 三种类型的日志:UNDO 日志,REDO 日志,UNDO/REDO 日志
– 在日志中设置检查点的作用
事务的撤销(UNDO)与重做(REDO)
恢复策略:小型/中型/大型故障的恢复策略
数据库镜像
事务:由用户所执行的一个不能被打断的对数据库的操作序列
事务的性质:ACID 特性
原子性 Atomicity:在事务中,所有对数据库访问的操作构成一个不可分割操作序列,要么全部
执行,要么都不执行
一致性 Consistency:事务处理完成后,数据库从一个一致的状态转换到另一个一致的状态
隔离性 Isolation:一个事务的执行与并发执行的其他事务之间相互独立,互不干扰。即并发执
行的结果相当于各事务串行执行的最终结果
持久性 Durability:事务一旦执行完成,数据库的所有更新将被永久保留
事务活动:
读/写操作只是暂时将数据读入或写入系统缓冲区
预提交阶段,如果系统发生故障,事务执行将失败,事务将被放弃 Abort
失败的原因: 程序或用户主动放弃当前事务(活动到失败)
因并发控制的原因而被放弃的事务(活动到失败)
发生系统故障(活动直接到失败+预提交到失败)
异常状态:系统 undo(撤销操作,也叫回退 rollback)该事务对数据库已做的修改,以保证事务的
原子性,进而进入异常中止状态
有关事务的语句:
事务的开始:begin transaction
事务的结束:正常(提交事务 commit transaction) +非正常(回退事务 rollback transaction)
事务的组成:数据对象+数据对象的地址空间+操作
操作: 事务控制操作:开始 start T0;提交 commit T0;回退 abort T0
数据访问操作:
input(A)将数据对象 A 读入内存缓冲区
Output(A)将内存缓冲区中的数据对象 A 写入磁盘
Read(A,t)将内存缓冲区中的数据对象 A 读入内存变量 t
Write(A,t)将内存变量 t 的值写入内存缓冲区中的数据对象 A
并发控制:
事务的并发执行:用于实现多个用户事务的并发执行
串行:以事务为单位,多个事务依次顺序执行
并行:按调度策略同步执行多个事务
并行执行的可串行化:如果一组事务并发执行的结果等价于它们之间的某种串行执行的结果,则称其
为可串行化调度
冲突:对连续操作(op1,op2),如果调换执行顺序,所涉及的事务中至少有一个的行为会改变,则发生
冲突
冲突判断:同一事务的任意两个操作交换是冲突的;不同事务的任意两个操作交换不冲突,除非操作
j),则:
对象是相同的,且至少有一个是写操作
假设 Ti 和 Tj 是两个不同的事务(即 i
ri(X);rj(Y) 不是冲突(即使 X=Y 也不会是冲突)
如果 X
如果 X
如果 X
同一事务的任意两个相邻的操作都是冲突,如:
(ri(X);wi(Y))、(wi(X);ri(Y))、(ri(X);ri(Y))等
Y,则 ri(X);wj(Y) 不会是冲突
Y,则 wi(X);rj(Y) 不会是冲突
Y,则 wi(X);wj(Y) 不会是冲突
不同事务对同一数据对象的‘写’冲突:wi(X);wj(X)
不同事务对同一数据对象的‘读-写’冲突:ri(X);wj(X)
wi(X);rj(X)
冲突等价:如果通过一系列相邻操作的非冲突交换能够将一个调度转换为另一个调度,则这两个调度
是冲突等价的
冲突可串行化:如果一个调度 S 冲突等价于一个串行调度,则称调度 S 冲突可串行化
三种数据不一致现象:
丢失修改:一个事务的修改结果破坏了另一个事务的修改结果,原因是多个事务并发修改同一
个数据对象的情况未加控制
脏读:读到了错误的数据(即于数据库中的情况不相符的数据),原因是一个事务读取了另一个
事务未提交的结果
不可重复读:前后两次读同一个数据对象所获得的之不一致,原因是两次读操作之间插入了另
一个事物的写操作
封锁:事务并发执行的一种调度和控制手段,可以保证并发执行的事务之间相互隔离、互不干扰,从而保
证并发事务的正确性,lock
排它锁:又称 X 锁或写锁,一个事务 T 对数据 A 加锁后,T 可以对 A 进行读写操作,其他事务不能
做任何操作。X 锁必须执行到事务 T 执行结束,即作用时间为整个事务过程,排除了其他事
务的干扰
共享锁:又称 S 锁或读锁,一个事务 T 对数据 A 加 S 锁以后,T 可以读 A 但不能写 A,而其他事务
可以对 A 加 S 锁,但不能加 X 锁。S 锁保证了多个事务都可以读 A,但不能在 T 释放 A 上
的 S 所之前写 A
封锁协议:
一级封锁协议:事务 T 在对数据 A 进行写操作之前,先申请获得 A 上的 X 锁,并维持到事务 T 执行
结束后再释放在 A 上的 X 锁。可防止丢失修改现象
二级封锁协议:在一级协议的基础上,事务 T 在对数据 A 进行读操作之前,先申请获得 A 上的 S 锁,
读操作完成后即可释放 A 上的 S 锁。可防止丢失修改、脏读现象
三级封锁协议:在一级协议的基础上,事务 T 对数据 A 进行读操作之前,必须先申请获得 A 上的 S
锁,并维持到整个事务 T 执行结束再释放 A 上的 S 锁。可防止修改丢失、脏读、不可重复读
现象
两阶段封锁协议:即将三级封锁协议中对锁的申请和释放分成两个阶段,2PL 协议
第一阶段:申请并获得封锁
第二阶段:释放所有申请获得的锁
定理:由 2PL 事物所构成的任意合法调度 S 都是冲突可串行化的
封锁粒度:一把锁可以封锁的数据对象的大小,封锁对象可以是数据库中的逻辑单元或者物理单元
关系数据库
分类:属性以及属性集 元组
封锁粒度大,并发度低,并发控制开销小;封锁粒度小,并发性大,并发控制的开销大
多粒度封锁:一个系统中同时支持多钟封锁粒度供事务选择使用,这种封锁方法称为多粒度封锁
多粒度封锁协议:可以对多粒度树中的每个节点单独加锁(显示封锁),对一个节点加锁意味着该节
物理页面
表
索引
点的所有后裔结点加以同样类型的锁(隐式封锁)
如果要对一个节点加锁,必须先对他的上层节点加意向锁