05-事务与并发控制
事务的概念
事务是数据库系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
事务的ACID特性
-
原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么都做,要么都不做。
-
一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态。
-
隔离性(Isolation):一个事务的执行不能被其他事务干扰。
-
持久性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
并发控制
并发操作带来的问题
-
丢失修改:两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果。
-
不可重复读:事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
-
读脏数据:事务T1修改某一数据后撤销,事务T2读取的是T1修改后的数据。
封锁机制
-
排他锁(X锁):又称写锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A。
-
共享锁(S锁):又称读锁,若事务T对数据对象A加上S锁,则其他事务只能再对A加S锁,不能加X锁。
封锁协议
-
一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。可以防止丢失修改。
-
二级封锁协议:在一级封锁协议基础上,事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。可以防止丢失修改和读脏数据。
-
三级封锁协议:在一级封锁协议基础上,事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。可以防止丢失修改、读脏数据和不可重复读。
死锁
死锁的预防
-
一次封锁法:每个事务必须一次将所有要使用的数据全部加锁。
-
顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
死锁的诊断与解除
-
超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
-
等待图法:用有向图表示事务等待情况,如果图中存在回路,则表示存在死锁。
数据库设计
数据库设计是指对于一个给定的应用环境,构造(设计)优化数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理需求和数据操作要求。
数据库设计的特点
-
三分技术,七分管理,十二分基础数据
-
结构(数据)设计和行为(处理)设计相结合
数据库设计的基本步骤:
需求分析阶段 概念结构设计阶段 逻辑结构设计阶段 物理结构设计阶段 数据库实施阶段 数据库运行和维护阶段
需求分析阶段
建立数据字典
数据字典通常包括数据项,数据结构,数据流,数据存储和处理过程几部分。
概念结构设计阶段
概念模型-E-R图
(1)实体与属性的划分原则
作为属性,不能在具有需要描述的性质
属性不能与其他实体具有练习
(2)E-R图的集成
各子系统的E-R图之间的冲突主要有三类:属性冲突,命名冲突和结构冲突。
逻辑结构设计阶段
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与所选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。
E-R模型到关系模型转换原则
-
实体转换原则
一个实体转换成一个关系模式,实体的码即关系模式的码
-
实体型间的联系有以下不同情况
(1) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 ① 转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的候选码:每个实体的码均是该关系的候选码
②与某一端实体对应的关系模式合并 合并后关系的属性:该关系模式的属性中加入另一个关系模式的码(作为外键)和联系本身的属性。 合并后关系的码:不变
(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。 ①转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:n端实体的码
②与n端对应的关系模式合并 合并后关系的属性:在n端关系中加入1端关系的码(作为外键)和联系本身的属性 合并后关系的码:不变 可以减少系统中的关系个数,一般情况下更倾向于采用这种方法
(3)一个m:n联系转换为一个关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:各实体码的组合
三个或三个以上实体间的一个多元联系转换为一个关系模式。 关系的属性:与该多元联系相连的各实体的码以及联系本身的属性 关系的码:各实体码的组合
-
练习题
-
什么是事务?简述事务的ACID特性。
-
并发操作可能带来哪些数据不一致性问题?
-
什么是封锁?基本的封锁类型有哪些?
-
简述三级封锁协议的内容及其解决的问题。
-
什么是死锁?如何预防和解除死锁?
E-R图转换练习
1.第七章ppt 17-18
2.某医院病房计算机管理中需要如下信息: 科室:科室名,科地址,科电话,医生姓名 病房:病房号,床位号,所属科室名 医生:姓名,职称,所属科室名,年龄,工作证号 病人:病历号,姓名,性别,诊断,主管医生,病房号 其中,一个科室有多个病房,多个医生,一个病房只能属于一个科室,一个医生只属于 个科室,但可负责多个病人的诊治, ,一个病人的主管医生只有一个。 完成如下设计: (1)涉及该计算机管理系统的 E-R 图 (2)将该E-R图转换为关系模型的结构 (3)指出转换结果中每个关系模式的候选码
课本241页 7,8,10