第八章数据库复习
数据库复习资料
第一章:概论数据库应用:联机事务处理、联机分析处理DBMS是一类重要的系统软件,由一组程序构成,其主要功能是完成对数据库的定义、数据操纵,提供给用户一个简明的应用接口,实现事务处理等。
DBMS基本功能:数据定义、数据操纵、数据库的运行管理、数据库的建立和维护功能。
DBMS组成模块:查询处理器、存储处理器。
DBMS层次结构:应用层、语言翻译处理层、数据存取层、操作系统、数据库。
数据库系统组成:数据库、数据库管理系统、应用程序和用户数据模型三要素:数据结构、数据操作、数据的完整性约束条件三种数据模型:概念模型(实体-联系模型)—逻辑模型(层次模型、网状模型、关系模型、对象关系模型)—物理模型DBS的三级模式:外模式(用户模式/子模式)、内模式、模式(逻辑模式)两个层次的映像:外模式/模式映像、模式/内模式映像数据库系统的特点:数据结构化、数据共享性高冗余度低、数据独立性高、数据由DBMS 统一管理和控制数据库系统的分类:集中式数据库系统、客户机/服务器数据库系统、并行数据库系统、分布式数据库系统第二章:关系模型表名-关系名、表头-关系模式、数据-关系实例关系模型的数据结构是一张扁平的二维表(关系)。
关系模型的数据操作:建表、填表、修改、删除、查询、销毁表关系模型的完整性约束:实体完整性、参照完整性、用户定义的完整性关系代数用到的运算符包括四类:传统的集合运算符(交并差笛卡尔积)、专门的关系运算符(选择投影连接除)、算术比较符和逻辑运算符。
第三章:SQL查询操作对象:表和视图是SQL的操作对象。
操作分类:数据定义语言、数据操纵语言、数据控制、嵌入式SQL和动态SQLSQL的特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用SQL功能:数据查询(SELECT)、数据定义(CREATE、DROP、ALTER)、数据操作(INSERT,UPDATE,DELETE )、数据控制(GRANT,REVOKE )第四章:查询处理及优化查询处理的步骤:查询分析、查询检查、查询优化、查询执行一个典型的外部排序算法分为内部排序阶段和归并阶段。
数据库第八章-数据库应用开发技术
(3) 设置“宏查询”按钮属性,在其单击按钮属性中选择 “查询学号” 。 (4) 运行“学生基本情况浏览”窗体,输入学号,点击 “宏查询”按钮。
教学进度
计算机科学与工程系
例:修改“学生基本情况浏览”窗体,将页脚中的功能 用自定义按钮替代。并保存为“学生基本情况浏览1”窗体。 (1) 打开“学生基本情况浏览”窗体,在页脚处加5个命 令按钮,标题如图。
教学进度
计算机科学与工程系
创建报表: 创建报表与创建窗体非常类似。报表和窗体都是使用 控件来组织和显示数据的,所以创建窗体的方法同样也适 用于创建报表。 1. 使用“自动创建报表”创建报表 用这种方式创建的报表格式是由系统规定的,但也可以通过 报表“设计视图”对其进行修改。 例1:选择“自动创建报表:表格式”,根据学生表创 建报表。
教学进度
计算机科学与工程系 (4) 双击“求和成绩”按钮,选择“平均值” (5) 下一步,指定图表标题“各门课程平均分”
教学进度
8.3 宏
计算机科学与工程系
宏的概念: 宏是一种特定的编码,是一个或多个操作命令的集合。 宏以动作为基本单位,一个宏命令能够完成一个操作动作。 每一个宏命令由动作名和操作参数组成。 宏可以是包含一个或多个宏命令的宏集合。若是由多个 宏命令组成的宏,其操作动作的执行是按宏命令的排列顺序 依次完成的。 宏也可以定义成宏组,将多个宏保存在一个宏组中。如 将在同一窗体中使用的宏,或功能相近的宏组织成宏组,这 样做的好处是便于宏的组织和管理。 简单讲,使用宏的目的就是为了实现自动操作。 在Access中实现自动处理的方法主要有两种:宏和VBA 模块。
教学进度
计算机科学与工程系
举例:新建宏,设置一个消息框(MsgBox)宏命令,再设 置一打开窗口(OpenForm)宏命令,命名宏为“欢迎”。 运行时先后执行这两个宏,执行结果如下:
第八章 数据库管理(部分)
三、SQL中的完整性约束
1. 域完整性规则:定义属性的取值范围―-属性值约束。 包括:域约束子句、非空值约束、基于属性的检查子句。
①用“CREATE DOMAIN”语句定义新的域,并可出现CHECK子句。
例:
定义一个新的域DEPT,可用下列语句实现:
DEPT CHAR(20) DEFAULT „计算机软件’
二、完整性规则的组成与分类
1、每个规则由三部分组成:
①什么时候使用规则进行检查(规则的“触发条件”);
②要检查什么样的错误( “ 约束条件”或“谓词”);
③若检查出错误,该怎样处理( “ELSE子句”,即违反时 要做的动作)。 2、在关系数据库中,完整性规则可分为三类: ①域完整性规则:定义属性的取值范围; ②基本表约束; ③断言。
CREATE DOMAIN
CONSTRAINT
VALID_DEPT
/*域约束名字*/
CHECK(VALUE IN („计算机科学与技术’,„计算机软件’)); 允许域约束上的CHECK子句中可以有任意复杂的条件表达式。
②非空值约束(NOT NULL) 例: SNO char(4) NOT NULL ③基于属性的检查子句(CHECK): 例:CHECK (GRADE IS NULL) OR (GRADE BRTWEEN 0 AND 100)
教学重点:
检查点技术
并发操作、封锁带来的若干问题,并发调度的可串行化。
SQL中完整性约束的实现:断言、触发器技术。 安全性中的授权语句。
§1
事务的概念
一、事务的定义 形成一个逻辑工作单元的数据库操作的汇集, 称为事务(transaction)。
例:在关系数据库中,一个事务可以是一条SQL语句、
数据库应用基础第八章触发器
AS
指定对标内某字段作增加
或修改操作时触发器材起
作用
IF UPDATE(column_name)
[{and|or} UPDATE(column_name)…]
sql_statesments
定义触发器被触
发后,将执行的 数据库操作
13
8.2.1 INSERT触发器
例:在pubs库的authors表上创建 my_trigger1触发器,该触发器被操 作INSERT所触发
35
36
2. 使用系统表 例:用系统表sysobjects查看数据 库pubs上的所有触发器的相关信息
USE pubs SELECT name from sysobjects WHERE type='TR' go
37
8.3使用触发器
8.3.1 使用触发器强制数据完整性 约束和触发器都可以用来实施数据 完整性,但两者各有优势
33
还可使用系统存储过程 sp_helptrigger来查看某特定 表上存在的触发器的某些信息
EXEC sp_helptrigger <tablename>
34
例:用系统存储过程sp_helptrigger 查看表authors上存在的所有触发器 的相关信息
USE pubs EXEC sp_helptrigger authors go
23
IF UPDATE(au_lname) BEGIN raiserror('Unauthorized!',10,1) rollback transaction END
不使用INSTEAD OF而 是通过rollback
transaction子句恢 复原来的数据的方法 来实现字段不被修改
数据库第8章习题参考答案
第8章习题参考答案2.求程序的运行结果(1)Public Sub 习题8_2_1()Dim i As IntegerDebug.Print Tab(10); "*"For i = 1 To 5Debug.Print Tab(10 - i); "*"; Spc(i - 1); "*"; Spc(i - 1); "*"Next iFor i = 4 To 1 Step -1Debug.Print Tab(10 - i); "*"; Spc(i - 1); "*"; Spc(i - 1); "*"Next iDebug.Print Tab(10); "*"End Subrun:***** * ** * ** * ** * ** * ** * ** * *****(2)Public Sub 习题4_2_2()Dim x, y, i As Doublex = 0: y = 0For i = 1 To 8If i Mod 2 <> 0 Thenx = x - iElsey = y + iEnd IfNextDebug.Print "i="; iDebug.Print "x="; xDebug.Print "y="; yEnd Subrun:x=-16y= 20(3)Public Sub习题4_2_3()Dim m, s, k As Doublem = 28s = 0k = 1Do While k <= Int(m / 2)If Int(m / k) = m / k ThenDebug.Print ks = s + kEnd Ifk = k + 1LoopDebug.Print "s="; sEnd Subrun:124714s= 28(4)Public Sub 习题8_2_4()Dim n, a1, a2, a3, i As Doublen = Val(InputBox("请输入n,要求n>=3"))If n <= 2 ThenExit SubEnd Ifa1 = 1a2 = 1Debug.Print a1; a2For i = 2 To n - 1a3 = a1 + a2a1 = a2a2 = a3Debug.Print a3NextEnd Sub1 12353.改错题(1)Public Sub 改错8_3_1()Dim i, n, s As Doublen = Val(InputBox("请输入n"))i = 2: s = 1Do While i <= ns = s + ii = i + 1LoopDebug.Print "S="; sEnd Sub(2)Public Sub 改错8_3_2_求分式多项和()Dim nm, n, k ,p As integerDim y As Doublenm = Val(InputBox("请输入计算公式1后面的项目数目个数")) n = 1: p = 1: y = 1Do While n <= nmk = 2 * n + 1p = p * (k - 1) * ky = y + ((-1) ^ n) / pn = n + 1LoopDebug.Print "y="; yEnd Sub4.编程题(1)用if……else语句编程Public Sub分段函数1()Dim x, y, z As Doublex = Val(InputBox("请输入x的值:"))y = Val(InputBox("请输入y的值:"))If x > y And y <> 0 Thenz = x / yElseIf x = y Thenz = x * y * Sgn(y)Elsez = x + yEnd IfDebug.Print "x="; xDebug.Print "y="; yDebug.Print "z="; zEnd Sub(1)用select case语句结构编程Public Sub分段函数2()Dim x, y, z, a As Doublex = Val(InputBox("请输入x"))y = Val(InputBox("请输入y"))a = y - xSelect Case aCase Is > 0z = x + yDebug.Print zCase 0z = x * y * Sgn(y)Debug.Print zCase ElseIf y <> 0 Thenz = x / yDebug.Print zElseDebug.Print "z没有值"End IfEnd SelectEnd Sub(2)Public Sub 求解一元二次方程()Dim a, b, c As IntegerDim d, x1, x2, x3, x4 As Doublea = Val(InputBox("请输入a的整型数:"))b = Val(InputBox("请输入b的整型数:"))c = Val(InputBox("请输入c的整型数:"))d = b * b - 4 * a * cIf d > 0 Thenx1 = (-b + Sqr(d)) / (2 * a)x2 = (-b - Sqr(d)) / (2 * a)Debug.Print "x1="; x1, "x2="; x2Else if d=0 thenx3 = -b / (2 * a)x4 = -b/ (2 * a)Debug.Print "x3=";x3Debug.Print "x4=";x4ElseDebug.Print "方程没有实数解"End IfEnd Sub(3--1)用无条件转向语句GOTO编程Public Sub 数字与星期的转换1()Dim num As Integer10 num = Val(InputBox("请输入整数值:")) If num = 0 ThenDebug.Print "这是星期日"ElseIf num = 1 ThenDebug.Print "这是星期一"ElseIf num = 2 ThenDebug.Print "这是星期二"ElseIf num = 3 ThenDebug.Print "这是星期三"ElseIf num = 4 ThenDebug.Print "这是星期四"ElseIf num = 5 ThenDebug.Print "这是星期五"ElseIf num = 6 ThenDebug.Print "这是星期六"ElseIf num = -1 ThenDebug.Print "程序运行结束"EndElseDebug.Print "输入数据错误!"GoTo 10End IfEnd Sub(3--2)Public Sub数字与星期的转换2 ()Dim x As IntegerDo While Truex = Val(InputBox("请输入数字"))If x = 0 ThenDebug.Print "这是星期日"Exit DoElseIf x >= 1 And x <= 6 ThenDebug.Print "这是星期" + Str(x)Exit DoElseIf x = -1 ThenExit DoElseMsgBox ("输入数据错误!")End IfLoopEnd Sub(4)Public Sub 行李重量计费()Dim an, cn, weight, s_w, distance, fee As Doublean = Val(InputBox("请输入成年人数量"))cn = Val(InputBox("请输入未成年人数量"))weight = Val(InputBox("请输入行李重量"))distance = Val(InputBox("请输入距离"))s_w = weight - 20 * an - 10 * cnIf s_w <= 0 Thenfee = 0ElseIf distance / 100 = Int(distance / 100) Thenfee = 0.2 * s_w * (distance / 100)Elsefee = 0.2 * s_w * (Int(distance / 100) + 1) End IfEnd IfDebug.Print feeEnd Sub(5)Public Sub 求自然数的多项式和()Dim n, s As Integers = 0For n = 1 To 10s = s + (s + n)NextDebug.Print "S=1+(1+2)+(1+2+3)+...+1+2+3+...+10)="; s End SubRun:S=1+(1+2)+(1+2+3)+...+1+2+3+...+10)= 2036Public Sub 求多项自然数阶乘的和()Dim s, t As SingleDim n As Integert = 1s = 0For n = 1 To 20t = t * ns = s + tNextDebug.Print "1!+2!+3!+...+20!="; sEnd SubRun:1!+2!+3!+...+20!= 2.561327E+18(6)Public Sub 既能被3整除又能被5整除正整数个数() Dim i, x As Integerx = 0For i =100 To 200If i / 3 = Int(i / 3) And i / 5 = Int(i / 5) ThenDebug.Print ix = x + 1End IfNextDebug.Print "x="; xEnd SubRun:120135150165180195x= 7(7)Public Sub 输出直角三角形图案1()Dim i, j As IntegerFor i = 1 To 9Debug.PrintNextFor i = 1 To 4Debug.Print Tab(20); "*";For j = 1 To (2 * i - 2)Debug.Print "*";NextDebug.PrintNextEnd SubRun:****************Public Sub 输出直角三角形图案2() Dim i, j As IntegerFor i = 1 To 9Debug.PrintNextDebug.Print Tab(20); "*";For i = 1 To 4Debug.Print Tab(19 - i); "*";For j = 1 To (i + 1)Debug.Print "*";NextDebug.PrintNextEnd SubRun:*******************Public Sub 输出平行四边形图案() Dim i, j As IntegerFor i = 1 To 9Debug.PrintNextFor i = 1 To 5Debug.Print Tab(21 - i);For j = 1 To 6Debug.Print "*";NextDebug.PrintNextEnd SubRun:******************************(8)Public Sub 求选手获得的平均分()Dim score(1 To 11), minno, maxno, sum, aver As Single Dim i As Integerminno = 1maxno = 1sum = 0For i = 1 To 10score(i) = Val(InputBox("请输入选手的成绩值:")) Debug.Print score(i)NextFor i = 2 To 10If score(i) < score(minno) Thenminno = iEnd IfIf score(i) > score(maxno) Thenmaxno = iEnd IfNext iFor i = 1 To 10sum = sum + score(i)Next isum = sum - score(minno) - score(maxno)aver = sum / 8Debug.Print "该选手的平均分是:"; averEnd Sub(9)关于素数的求解(9-1)求100之内的所有素数Public Sub 求所有素数之和()Dim s, w, n As Integers = 0For w = 2 To 99 Step 2For n = 2 To Sqr(w)If w Mod n = 0 ThenExit ForEnd IfNextIf n > Sqr(w) Thens = s + wEnd IfDebug.Print "S="; sNextEnd Sub(9-2)Public Sub 求200以内的所有素数()Dim w, n As IntegerDebug.Print "200 以内的所有素数是:" For w = 2 To 199For n = 2 To Sqr(w)If w Mod n = 0 ThenExit ForEnd IfNext nIf n > Sqr(w) ThenDebug.Print w;End IfNextDebug.PrintEnd Sub(10)Public Sub 求水仙花数1()Dim i, j, k, n As IntegerDebug.Print "水仙花数是:"For i = 1 To 9For j = 0 To 9For k = 0 To 9n = i * 100 + j * 10 + kIf n = i * i * i + j * j * j + k * k * k ThenDebug.Print n;End IfNext kNext jNext iDebug.PrintEnd SubPublic Sub 求水仙花数2()Dim i, j, k, n As IntegerDebug.Print "水仙花数是:"For n = 150 To 999i = Int(n / 100)j = Int(n / 10 - i * 10)k = n Mod 10If n = i * i * i + j * j * j + k * k * k ThenDebug.Print n;End IfNextDebug.PrintEnd Subrun:水仙花数是:153 370 371 407(11)Public Sub 求分数数列和()Dim i, t, n As IntegerDim a, b, s As Singlen = 20a = 2:b = 1: s = 0For i = 1 To ns = s + a / bt = aa = a + bb = tNextDebug.Print "sum="; s;End Sub(12)Public Sub N年达到的利息()Dim y As IntegerDim interest1,interest As DoubleP=10000y = 0interest = 0Do Until interest >= 1000Interest1 =2*p* 0.0225 *(1-0.2) ‘一期2年整存整取扣税后的利息p=p+interest1 ‘扣税后的利息加上本金成为新一期的本金Interest=p-10000 ‘存款以来实际所的利息y = y + 2Debug.Print interest, yLoopEnd SubRun:360 2732.959999999999 4 1119.34656 6。
《数据库》第八章 多表连接及子查询
例:查询出学生信息与院系信息相关连的查询结果集, 要求学院信息是全部的,学生信息作为补充。
SQL> SELECT t1.s_id, t1.s_name,c_id,t2.c_name FROM t_student t1 LEFT OUTER JOIN t_college t2 USING (c_id);
19
Inspur Education
外部连接-右外连接
右外连接(RIGHT [OUTER] JOIN):
这类连接实际应用场景较等值连接来说较为少见,例 :查询一下学生自修课程数大于院系平均自修课程数 的学生与院系的相关信息。
SQL> SELECT t1.s_id, t1.s_name, t2.c_name, t1.s_course FROM t_student t1, t_college t2 WHERE t1.s_course > t2.c_course_avg AND t1.c_id = t2.c_id;
right [outer] join子句+on子句连接
SQL> SELECT t1.s_id, t1.s_name,t2.c_id,t2.c_name FROM t_student t1 RIGHT OUTER JOIN t_college t2 ON t1.c_id = t2.c_id;
right [outer] join子句+using子句连接
公共列是两个或更多表中存在相同数据的列,比如, t_student表和t_college表都包含一个c_id的公共列 。这里的公共列的列名不必一致,主要是存放的数据 要有一定的相关性,甚至是业务上的同类数据。
《数据库系统原理》期末复习资料
《数据库系统原理》期末复习资料第一章绪论复习要点:数据库的4个基本概念(数据、数据库、数据库管理系统和数据库系统);数据库系统的特点;数据模型及数据模型的三要素;关系模型;数据库系统结构:三级模式和两级映像(模式、外模式和内模式;外模式/模式映像、模式/内模式映像);关系数据库系统的组成(数据库、数据管理系统和数据库系统的关系)。
数据库的4个基本概念:1. 数据(Data):是描述事物属性或特征的符号记录,可以是数字、文字、图像等形式。
2. 数据库(Database):是一种有组织的、可共享的数据集合,用于存储、管理和操作数据。
3. 数据库管理系统(Database Management System,简称DBMS):是用于管理数据库的软件系统,提供了对数据库的访问、操作和维护等功能。
4. 数据库系统(Database System):是由数据库、数据库管理系统和相关应用程序组成的系统,用于管理和处理大量数据。
数据库系统的特点:1. 数据共享:多个用户可以同时访问和共享数据库中的数据。
2. 数据独立性:数据库中的数据与数据的存储方式相互独立,改变存储方式不影响数据的使用。
3. 数据一致性:数据库系统能够保证数据的一致性和完整性,避免了数据的冗余4. 数据安全性:数据库系统可以对数据进行各种权限控制和安全防护,保证数据的安全性和机密性。
5. 数据并发性:多个用户可以同时对数据库进行读写操作,数据库系统能够处理并发操作的问题。
数据模型及数据模型的三要素:数据模型是一种用于描述数据库结构和数据之间关系的概念工具。
数据模型的三个要素包括:1. 数据结构(Data Structure):描述数据之间的关系和组织方式,如层次结构、网状结构和关系结构等。
2. 数据操作(Data Operation):描述在数据库中进行的各种操作,如查询、插入、更新和删除等。
3. 数据约束(Data Constraint):定义了对数据库中数据的限制和规范,如键、域和实体完整性等。
最新数据库复习课件第8章数据库设计
职工号
姓名
年龄
1 仓库 m 管
理
仓库号 面积
n 职工
货物〔货号,名称〕 仓库〔仓库号,面积〕 职工〔职工号,姓名,年龄〕
存放〔货号,仓库号,存量〕 管理〔仓库号,职工号〕
货物〔货号,名称,仓库号,存量〕 仓库〔仓库号,面积〕 职工〔职工号,姓名,年龄〕 管理〔仓库号,职工号〕
杭州电子工业学院据库系统概论
将上述每个E-R图转换成适当的表
杭州电子工业学院据库系统概论
Example: people have names and addresses 实体集是具有相同类型的实体的集合
An entity set is a set of entities of the same type that share the same properties
Example: set of all persons, companies, trees, holidays
杭州电子工业学院据库系统概论
8。2 需求分析
需求分析是了解用户需求、明确系统功 能和边界 、最后形成需要文字表达〔需 求分析说明书〕的一种过程。 结果:形成一份有效的需求分析说明书 。 过程:系统调研方法、需求分析所需要 的技术和方法、数据字典的形成
杭州电子工业学院据库系统概论
8.3 概念结构设计〔E-R图〕
杭州电子工业学院据库系统概论
流行的 数据建模工具 (软件工程开发工具)
CASE Tools 〔Computer Aided Software Engineering Tool 〕
是一种软件,它辅助和支持其它软件研制和维
的工具,为了提高软件生产效率和改进软件的 质量而设计。
支持需求分析、设计、编码、测试、维护等软 件生命周期各个阶段的开发工具和管理工具。
第八章键值数据库
第⼋章键值数据库
8.1 何谓键值数据库
键值数据库时最简单的NoSQL数据库。
值存储的是什么不重要,只是⼀个块,应⽤程序负责理解所存数据的含义。
Redis能存储list,set,hash等数据结构;⽽且⽀持获取摸个范围内的数值,求交、并、补集等。
8.2 键值数据库特性
讨论每⼀种NoSQL数据库特性的时候,都要了解⼀致性、事务、查询特性、数据结构以及可扩展性。
8.2.1 ⼀致性
只有针对单个键的操作才具备“⼀致性”。
8.2.2 事务
8.2.3 查询
只能按关键字查询,如果想根据列去查询,那么⽆法⽤数据库完成,应⽤程序要⾃⼰读出值,判断是否是要查询的值。
8.2.4 数据结构
不关⼼键值对中的值。
8.2.5 可扩展性
8.3 适⽤案例
8.3.1 存放会话信息
8.3.2 ⽤户配置信息
8.3.3 购物车数据
把购物车内容绑定到userID上。
8.4 不适⽤场合
8.4.1 数据间关系
8.4.2 含有多项操作的事务
8.4.3 查询数据
根据value中的某些值来搜寻关键字。
8.4.4 操作关键字集合。
南京信息工程大学数据库总复习
•
关系模式中存在异常的原因
数据依赖(定义、分类)、函数依赖
• •
关系模式的规范化
函数依赖(平凡、非平凡、完全、部分及传递函数依赖) 范式:1NF、2NF、3NF、BCNF
• • •
数据依赖的公理系统
Armstrong公理 函数依赖集的闭包 函数依赖集的等价及最小函数依赖集
多值依赖的概念
关系模式规范化的基本步骤
数据库安全性
•
含义、用户标识与鉴别、访问控制(授权管理语句)
数据库完整性
•
含义、数据库完整性机制(定义、检查、违约处理) 事务并发执行的三个问题 事务的ACID性质
含义、数据库备份 、数据库恢复
数据库并发控制
• •
数据库恢复
•
题型:
一、单项选择
二、填空
三、名词解释 四、简答与计算题 五、应用题
第1章 绪论
1. 基本概念:数据、数据处理、数据管理、数 据库、数据库系统、数据库管理系统、实体、 属性 2. 数据库系统的组成和特点
3. 数据库系统的三级模式结构和二级映像
4. 数据模型概念
5. E-R模型三要素,实体间的联系,E-R图
6. (逻辑)数据模型三要素,三类逻辑模型
第二章 关系数据模型
第四章 数据库设计
数据库的设计过程 需求分析:准确了解与分析用户需求(数据流图、数 据字典) 概念结构设计:通过对用户需求进行综合、归纳与抽 象,形成一个独立于具体DBMS的概念模型(E-R模 型) 逻辑结构设计:将概念模型转化为DBMS所支持的数 据模型,并对其进行优化(E-R模型关系模型) 物理设计:为逻辑数据模型选取一个最合适应用环境 的物理结构 实施和维护:在数据库运行过程中对其进行评价、调 整与修改
MySQL 数据库基础与应用 第8章 存储过程和存储函数
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
组成。这组语句编译后存储在数据库服务器端,用户通过指定存储过程 的名称并给出参数(如果该存储过程带有参数)来执行。将经常需要执行
的特定的操作写成存储过程,通过过程名,就可以多次调用,从而实现 程序的模块化设计,这种方式提高了程序的效率,节省了用户的时间。
存储过程具有以下特点:
● 存储过程编译后放在数据库服务器端、并在服务器端运行,执 行速度快。
入/输出参数3种,分别用IN、OUT和INOUT这3个关键字来标志。存储过
程中的参数被称为形式参数(简称形参),调用带参数的存储过程则应提
供相应的实际参数(简称实参)。
● IN:向存储过程传递参数,只能将实参的值传递给形参;在存储
过程内部只能读、不能写;对应IN关键字的实参可以是常量或变量。
● OUT:从存储过程输出参数,存储过程结束时形参的值会被赋给
● 存储过程可以用于处理较为复杂的应用问题。
● 存储过程可以提高系统性能 。
● 可存储过程增强了数据库的安全性。
● 可增强SQL语言的功能和灵活性。
● 存储过程允许模块化程序设计。
● 可以减少网络流量。
MySQL 数据库基础与应用
2
•
8.2 存储过程操作
8.2.1 创建存储过程
创建存储过程使用的语句是CREATE PROCEDURE。 语法格式:
数据库原理复习资料
数据库原理复习资料一、数据库系统概述数据库技术是信息管理和处理的核心技术之一,它的出现使得数据管理变得更加高效、可靠和便捷。
数据库是长期存储在计算机内、有组织、可共享的数据集合。
数据库管理系统(DBMS)则是用于管理数据库的软件系统,它提供了数据定义、数据操作、数据控制和数据维护等功能。
数据库系统的优点众多,比如减少数据冗余、提高数据一致性、实现数据共享、增强数据安全性以及便于数据管理和维护等。
二、数据模型数据模型是对现实世界数据特征的抽象,常见的数据模型有层次模型、网状模型和关系模型。
层次模型用树形结构来表示实体及实体间的联系,它的特点是结构清晰,容易理解,但限制较多,处理复杂关系时较困难。
网状模型用图结构来表示实体及实体间的联系,它能更灵活地表示复杂的关系,但结构复杂,实现难度大。
关系模型则以二维表格的形式来表示数据,具有简单、直观、易于理解和实现等优点,目前被广泛应用。
三、关系数据库关系数据库基于关系模型构建,其中的关系就是一张张二维表。
关系的完整性约束包括实体完整性、参照完整性和用户定义的完整性。
实体完整性保证表中的主键值不为空且唯一;参照完整性则保证了表之间的关联关系的正确性;用户定义的完整性则根据具体的业务需求来定义数据的约束条件。
关系代数是关系数据库操作的理论基础,包括选择、投影、连接、除等运算。
通过这些运算,可以对关系进行各种查询和操作。
SQL(Structured Query Language)是关系数据库的标准语言,用于数据定义、数据查询、数据更新和数据控制等操作。
四、数据库设计数据库设计是建立数据库系统的重要环节,它包括需求分析、概念设计、逻辑设计、物理设计和数据库实施等阶段。
需求分析阶段要明确系统的功能需求和数据需求,收集相关的业务信息。
概念设计阶段通过建立概念模型,如ER 图,来描述系统中的实体、属性和实体间的联系。
逻辑设计阶段将概念模型转换为关系模型,并进行优化。
物理设计阶段确定数据库的存储结构和存取方法。
第八章数据库复习
第八章并发控制1.在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。
(1)丢失修改()两个事务T1和T2读人同一数据并修改飞提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
(2)不可重复读(-)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
不可重复读包括三种情况:详见《概论》8的P66。
(3)读“脏”数据()读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。
最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
3.什么是封锁?答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
4.基本的封锁类型有几种?试述它们的含义。
答:基本的封锁类型有两种:排它锁(,简称X锁)和共享锁(,简称S锁)。
排它锁又称为写锁。
若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
数据库复习题
课后巩固练习一、单选题第一章数据库基础知识1.DBS是( A )的简写。
A. 数据库系统B. 数据库管理系统C. 数据库D. 操作系统2. ORDBS的中文意思是 ( C )A.面向对象的数据库系统B.数据库管理系统C.对象关系数据库系统D.关系数据库系统3.DB是( D )的简写A. 数据库系统B. 数据库管理系统C. 数据D. 数据库4.DBMS是( D )的简写A. 数据库系统B. 数据库C. 数据D. 数据库管理系统5.在数据库的三级模式结构中,描述数据库中全局逻辑结构和特征的是( B )A. 外模式B. 模式C. 内模式D. 存储模式6.在数据库的三级模式结构中,模式有( A )个A. 1B. 2C. 3D. 任意7.在数据库系统中,数据独立性是指( C )。
A)用户与计算机系统的独立性 B)数据库与计算机的独立性C)数据与应用程序的独立性 D)用户与数据库的独立性8.要保证数据库的物理独立性,需要修改的是( B )。
A.模式B.模式与内模式的映射C.模式与外模式的映射D.内模式9.( B)的映像技术提供了模式变化而应用程序不变的方法,从而保证了数据的逻辑独立性A. 模式/内模式B.外模式/模式C. 外模式/内模式D.数据库/操作系统10.( B )的映像技术提供了内模式变化而应用程序不变的方法,从而保证了数据的物理独立性A.外模式/模式B. 模式/内模式C. 外模式/内模式D.数据库/操作系统11.要保证数据库的逻辑独立性,需要修改的是( C )。
A.模式B.模式与内模式的映射C.模式与外模式的映射D.内模式12. 位于用户和数据库之间的一层数据管理软件是 ( C ) 。
A.DBSB.DBC.DBMSD.MIS13. 数据视图属于三级模式中的 ( A )A. 外模式B. 模式C. 内模式D. 存储模式14.基本表属于三级模式中的 ( B )A. 外模式B. 模式C. 内模式D. 存储模式15.在数据操纵语言(DML)的基本功能中,不包括的是( B )。
第8章 数据库保护复习题
答案:共享锁
5. 封锁具有3个环节:第一个环节是申请加锁;第二个环节是①;第三个环节是②。
答案:①获得锁②释放锁
6. 若事务T对数据对象A加了S锁,则其他事务只能对数据A再加①,不能再②,直到事务T释放A上的锁。
答案:①S锁②X锁
答案:数据转换服务(简称DTS)
19.数据库保护包含数据的。
答案:安全性、完整性、并发控制、恢复
20.保护数据安全性的一般方法是。
答案:设置用户标识和存取权限控制
21.数据的安全性是指。
答案:保护数据库,防止未经授权的,或不合法的使用造成的数据泄漏、更改或破坏
22.安全性控制的一般方法有①、②、③、④和视图的保护五级安全措施。
答案:①用户标识鉴定②存取控制③审计④数据加密
23.存取权限包括两方面的内容,一个是①,另一个是②。
答案:①要存取的数据对象②对此数据对象进行操作的类型
24.①和②一起组成了安全性系统。
答案:①授权编译系统②合法权检查机制
25.是DBMS的基本单位,它是用户定义的一组逻辑一致的操作序列。
答案:事务
26.DBMS的基本工作单位是事务,它是用户定义的一组逻辑一致的操作序列;并发控制的主要方法是机制。
D.并发控制的目的就是消除死锁
答案:ABCD
4. 封锁机制是并发控制的主要手段,()封锁协议不但能够防止丢失修改,还可进一步防止读“脏”数据。
A.一级 B.二级 C.三级 D.都可以
答案:BC
5. 若事务T对数据R已加X锁,则其他事务对数据R()。
A.可以加S锁 B.不能加S锁 C.可以加X锁 D.不能加任何锁
数据库习题 第八章
第8章并发控制
考试时间:
1.解决并发操作带来的数据不一致问题普遍采用()技术。
A.封锁
B.存取控制
C.恢复
D.协商
2.下列不属于并发操作带来的问题是()。
A.丢失修改
B.不可重复读
C.死锁
D.脏读
3.DBMS普遍采用()方法来保证调度的正确性。
A.索引
B.授权
C.封锁
D.日志
4.事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,这是()。
A.一级封锁协议
B.二级封锁协议
C.三级封锁协议
D.零级封锁协议
5.如果事务T获得了数据项Q上的排他锁,则T对Q()。
A.只能读不能写
B.只能写不能读
C.既可读又可写
D.不能读也不能写
6.设事务T1和T2,对数据库中的数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作()。
A.T1正在写A,T2要读A
B.T1正在写A,T2也要写A
C.T1正在读A,T2要写A
D.T1正在读A,T2也要读A
7.如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是()。
A.一个是DELETE,一个是SELECT
B.一个是SELECT,一个是DELETE
C.两个都是UPDATE
D.两个都是SELECT
第8章并发控制测试结果
题号正确答案:你的答案:
(1) A
(2) C
(3) C
(4) A
(5) C
(6) D
(7) D。
数据库复习重点
数据库复习重点第2章● 1. 数据库(简称DB):是在计算机系统中按照一定的数据模型组织、存储和应用的相互联系的数据集合。
● 2、数据库管理系统(简称DBMS),数据库属于DBMS。
● 3、数据库应用系统或称数据库系统(简称DBS),DBS包括DB、DBMS(核心)、应用系统、user等。
● 4、关系:一个二维表就是一个关系,每个关系有一个关系名。
在Access 2003中,一个关系就是一个数据库文件的表。
● 5、数据模型有3种,①层次模型:树型结构②网状模型有回路③关系模型:用二维表格表示实体与实体之间的模型(ACCESS数据库属于关系数据库)。
● 6、表中的行称为元组,表中的列称为属性。
● 7、数据库有7个对象:表、查询、窗体、报表、宏、数据访问页、模块。
● 8、①表(Table)是数据库中用来存储数据的对象,它是整个数据库系统的数据源,也是数据库其他对象的基础。
②查询(query)是以表为基础数据源的“虚表”。
它一是可以作为表加工处理后的结果,二是可以作为数据库其他对象数据来源。
③窗体(form)是屏幕的工作窗口。
在Access中,可以通过系统提供的,以及自己设计的各式各样美观大方的工作窗口,在友好的工作环境下,对数据库中数据进行处理。
④报表(report)是数据库中数据打印输出显示的一种形式。
⑤宏(macro)是一个或多个操作命令的集合,其中每个命令实现一个特定的操作。
⑥数据访问页(web)可以实现因特网与用户数据库中的数据的相互访问。
⑦模块(module)是由Visual Basic程序设计语言编写的程序集合,或一个函数过程。
第3章表● 1、字段的数据类型:①文本:用于文本或文本与数字的组合,或用于不需要计算的数字,最多可为255个字符。
②是/否:用于记录逻辑型数据。
③数字:用于将要进行数学计算的数值数据,但涉及货币的计算除外。
④日期/时间:用于日期/时间,数值的设定范围是100~9999年。
数据库原理与应用系列第八章习题(含答案)
第八章习题(答案)班级:学号: 姓名:1.填空题(1)SQL Server 有两种安全认证模式,即___WINDOWS_______________安全认证模式和______混合______安全认证模式。
(2)SQL SERVER安装好以后,只有2个已经创建的用户:___SA_______和BULTIN/administrators,它们都是超级用户,对数据库拥有一切权限。
(3)数据库的完整性是指数据的___正确性___和___相容性____。
(4)按数据库状态,数据转储分为动态转储和静态转储。
(5)按数据转储方式,数据转储分为海量转储和增量转储。
2.单选题(1)日志文件用于记录( D )。
A、程序运行过程B、数据操作C、程序运行结果D、对数据的更新操作(2)SQL的COMMIT语句的主要作用是( C )。
A、终止程序B、中断程序C、事务提交D、事务回退(3)SQL的ROLLBACK语句的主要作用是( D )。
A、终止程序B、中断程序C、事务提交D、事务回退(4)在数据库系统中,对存取权限的定义称为(B)。
A、命令B、授权C、定义D、审计(5)设有两个事务T1,T2,其并发操作如下表所示,下面评价正确的是(C )。
A、该操作不存在问题B、该操作丢失修改C、该操作不能重复读D、该操作读“脏”数据(6)设有两个事务T1,T2,其并发操作如下表所示,下面评价正确的是(B )。
A、该操作不存在问题B、该操作丢失修改C、该操作不能重复读D、该操作读“脏”数据(7)A、该操作不存在问题B、该操作丢失修改C、该操作不能重复读D、该操作读“脏”数据(8)若事务T对数据对象A加上S锁,则( C )A、事务T可以读A和修改A,其他事务只能再对A加S锁,而不能加X锁B、事务T可以读A但不能修改A,其他事务能对A加S锁和X锁C、事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁D、事务T可以读A和修改A,其他事务能对A加S锁和X锁(9)若事务T对数据对象A加上X锁,则( C )A、事务T可以读A和修改A,其他事务不能对A加X锁B、事务T可以修改A,其他事务不能对A加X锁C、事务T可以读A和修改A,其他事务都不能再对A加任何类型的锁D、事务T修改A,其他事务都不能再对A加任何类型的锁(10)数据库中的封锁机制是( C )的主要方法。
08应电数据库复习
选择50、填空15、判断10、简答10、应用15一、基本概念1.对于数字、文字、图形、声音等,都能用数据在计算机中表示。
2.数据库是长期存储在计算机存储设备上、有组织的、可被用户共享的数据集合。
缩写:DB、DBS、DBMS、DBA。
数据库管理系统处于数据库系统的核心位置数据库不能完全消除冗余3.数据库系统的体系结构是三层模式结构和两级映象。
三层模式为外模式、模式、内模式;两级映像为外模式/模式、和模式/内模式映像。
外模式/模式映像保证数据的逻辑独立性,模式/内模式映像保证了数据的物理独立性。
4.数据模型应该包含三个要素:数据结构、数据操作、完整性约束根据数据模型的不同,数据库系统是有关系数据库、层次数据库、网状数据库等,其中关系数据库是现阶段的主流数据库系统关系代数的五种基本运算:并、差、笛卡尔积、选择、投影5.E-R模型用于概念模型设计,包含三个元素:实体、联系、属性。
合并E-R图的过程中的冲突:属性冲突、命名冲突、结构冲突6.关系进行选择运算后的元组个数不变或减少7.sql server使用的语言称为Transact-SQL。
各种sql语句的关键字:建表语句:create table修改表结构:alter table删除表:drop table插入元组:insert into删除元组:delete修改数据:update指明主键:primary key指明外键:foreign key判断属性值为空:is null字符匹配符:%匹配任意字符、_匹配单个字符授权:grant 回收权限:revoke提交事务:commit 撤销事务:rollback8.Sql语句的结构:Select 表达式 from 基本表或视图 where 条件表达式Order by 属性 group by 属性 having 条件表达式注意每个字句后的内容9.视图是在基本表和视图的基础上定义,不是所有的视图都可更新数据。
10.限定某个属性的取值范围属于用户定义完整性11.数据库用户按层次分为四类,系统管理员用户、数据库管理员用户、数据库对象用户和一般用户。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章并发控制1.在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。
(1)丢失修改(Lost Update)两个事务T1和T2读人同一数据并修改飞提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
(2)不可重复读(Non-Repeatable Read)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
不可重复读包括三种情况:详见《概论》8.l的P66。
(3)读“脏”数据(Dirty Read)读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。
最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
3.什么是封锁?答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
4.基本的封锁类型有几种?试述它们的含义。
答:基本的封锁类型有两种:排它锁(Exclusive Locks,简称X锁)和共享锁(Share Locks,简称S锁)。
排它锁又称为写锁。
若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁又称为读锁。
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
这就保证了他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
在T释放A上的锁之前不能再读取和修改A。
5.如何用封锁机制保证数据的一致性?答:DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务T;在对A进行修改之前先对A执行Xlock(A),即对A加X锁。
这样,当T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后的值,再按此新的A值进行运算。
这样就不会丢失T1的更新。
T1T2①Xlock A②读A=16Xlock A③A←A-1 等待写回A=15 等待Commit 等待Unlock A 等待④获得Xlock A读A=15A←A-1写回A=14⑤CommitUnlock ADBMS按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读“脏”数据等数据不一致性。
6.什么是封锁协议?不同级别的封锁协议的主要区别是什么?答:在运用封锁技术对数据加锁时,要约定一些规则。
例如,在运用X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。
这些约定或者规则称为封锁协议(Locking Protocol)。
对封锁方式约定不同的规则,就形成了各种不同的封锁协议、不同级别的封锁协议,例如《概论》8.3中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。
一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对S锁,读完后即可释放S锁。
三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其S锁,直到事务结束才释放。
7.不同封锁协议与系统一致性级别的关系是什么?答:不同的封锁协议对应不同的一致性级别。
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。
在一级封锁协议中,对读数据是不加S锁的,所以它不能保证可重复读和不读“脏”数据。
二级封锁协议除防止了丢失修改,还可进一步防止读“脏”数据。
在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读。
在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束时才释放封锁。
所以三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。
下面的表格清楚地说明了封锁协议与系统一致性的关系。
8.什么是活锁?什么是死锁?答:T1 T2 T3 T4lock R····lock R ···等待Lock R ·Unlock 等待·Lock R·等待Lock R 等待·等待·等待·等待Unlock R 等待·等待·Lock R·等待··如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。
T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。
然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……T2有可能永远等待,这就是活锁的情形。
活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。
如果事务T1封锁了数据R1,T2封锁了R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。
接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁。
这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。
T1T2Lock R1··Lock R2··Lock R2 ·等待·等待Lock R1等待等待9.试述活锁的产生原因和解决方法。
答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。
当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
10.请给出预防死锁的若干方法。
答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
防止死锁的发生其实就是要破坏产生死锁的条件。
预防死锁通常有两种方法:(1)一次封锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行;(2)顺序封锁法,预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
不过,预防死锁的策略不大适合数据库系统的特点,具体原因可参见《概论》8.4。
11.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?答:数据库系统一般采用允许死锁发生,DBMS检测到死锁后加以解除的方法。
DBMS中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。
超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。
若时限设置得太长,又不能及时发现死锁发生。
DBMS并发控制子系统检测到死锁后,就要设法解除。
通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。
当然,对撤销的事务所执行的数据修改操作必须加以恢复。
12.什么样的并发调度是正确的调度?答:可串行化(Serializable)的调度是正确的调度。
可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
13.设T1,T2,T3是如下的3个事务:T1:A:= A+2;T2:A:=A * 2;T3:A:=A**2;(A←A2)设A的初值为0。
(1)若这3个事务允许并行执行,则有多少可能的正确结果,请—一列举出来。
答:A的最终结果可能有2、4、8、16。
因为串行执行次序有T1T2T3、T1T3T2、T2T1T3、T2T3T1、T3T1T2、T3T2T1。
对应的执行结果是16、8、4、2、4、2。
(2)请给出一个可串行化的调度,并给出执行结果答:T1T2T3Slock AY=A=0Unlock AXlock ASlock AA=Y+2 等待写回(=2)等待Unlock A 等待Y=A=2Uulock AXlock ASlock AA=Y*2 等待写回A=(4) 等待Unlock A 等待Y=A=4Unlock AXlock AA=Y**2写回A(=16)Unlock A最后结果A为16,是可串行化的调度。
(3)请给出一个非串行化的调度,并给出执行结果。
答:T1T2T3Slock AY=A=0Unlock ASlock AY=A=0Xlock A等待Unlock AA=Y+2写回A(=2)Slock AUnlock A 等待Y=A=2Unlock AXlock AXlock A等待Y=Y**2等待写回A(=4)等待Unlock AA=Y*2写回A(=0)Unlock A最后结果A为0,为非串行化的调度。
(4)若这3个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
T1 T2 T3Slock AY=A=0Xlock AA=Y+2 Slock A写回(A=2)等待Unlock A 等待Y=A=2Xlock AUulock A 等待Slock AA=Y*2 等待写回(A=4)等待Unlock A 等待Y=A=4Unlock AXlock AA=Y**2写回A(=16)Unlock AUnlock A(5)若这3个事务都遵守两段锁协议,请给出一个产生死锁的调度。
答:T1 T2 T3Slock AY=A=0Slock AY=A=0Xlock A等待Xlock A等待Slock AY=A=0Xlock A等待14.试述两段锁协议的概念。
答:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
·在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;·在释放一个封锁之后,事务不再申请和获得任何其他封锁。