admin 管理员组文章数量: 1087135
2024年8月8日发(作者:xml文档用什么才能打开)
内容说明
王珊《数据库系统概论》(第5版)是我国高校采用较多的权威教材之一,无论指定参考书是否为该教材,对该
教材的课后习题加以练习和掌握,非常有助于考生的复习和备考。本册以王珊《数据库系统概论》(第5版)为依据,
对课后习题进行了详细的分析与解答,并对相关重要知识点进行了延伸和归纳。
明立考试(公众号)
1
声明
本文档的内容参考了部分网络资料及图书资料,是出于传递更多信息之目的,并不代表故意侵犯原作者或出版人
的版权和利益,如果原作者或出版人对本文档有任何异议,请与作者联系,会在第一时间处理!
2
目录
内容说明 .................................................................................................................................................................................................. 1
声明 .......................................................................................................................................................................................................... 2
目录 .......................................................................................................................................................................................................... 3
第1章 绪 论 ...................................................................................................................................................................................... 5
课后习题 .............................................................................................................................................................................................. 5
参考答案 .............................................................................................................................................................................................. 6
第2章 关系数据库 ............................................................................................................................................................................ 12
课后习题 ............................................................................................................................................................................................ 12
参考答案 ............................................................................................................................................................................................ 14
第3章 关系数据库标准语言 18
课后习题 ............................................................................................................................................................................................ 18
参考答案 ............................................................................................................................................................................................ 19
第4章 数据库安全性 ........................................................................................................................................................................ 22
课后习题 ............................................................................................................................................................................................ 22
参考答案 ............................................................................................................................................................................................ 23
第5章 数据库完整性 ........................................................................................................................................................................ 26
课后习题 ............................................................................................................................................................................................ 26
参考答案 ............................................................................................................................................................................................ 27
第6章 关系数据理论 ........................................................................................................................................................................ 29
课后习题 ............................................................................................................................................................................................ 29
参考答案 ............................................................................................................................................................................................ 31
第7章 数据库设计 ............................................................................................................................................................................ 34
课后习题 ............................................................................................................................................................................................ 34
参考答案 ............................................................................................................................................................................................ 35
第8章 数据库编程 ............................................................................................................................................................................ 39
课后习题 ............................................................................................................................................................................................ 39
参考答案 ............................................................................................................................................................................................ 40
第9章 关系查询处理和查询优化 .................................................................................................................................................... 42
课后习题 ............................................................................................................................................................................................ 42
参考答案 ............................................................................................................................................................................................ 43
第10章 数据库恢复技术 .................................................................................................................................................................. 46
课后习题 ............................................................................................................................................................................................ 46
参考答案 ............................................................................................................................................................................................ 48
第11章 并发控制 ............................................................................................................................................................................... 51
课后习题 ............................................................................................................................................................................................ 51
参考答案 ............................................................................................................................................................................................ 53
第12章 数据库管理系统 .................................................................................................................................................................. 59
课后习题 ............................................................................................................................................................................................ 59
参考答案 ............................................................................................................................................................................................ 60
3
第13章 数据库技术发展概述 .......................................................................................................................................................... 63
课后习题 ............................................................................................................................................................................................ 63
参考答案 ............................................................................................................................................................................................ 64
第14章 大数据管理 .......................................................................................................................................................................... 65
课后习题 ............................................................................................................................................................................................ 65
参考答案 ............................................................................................................................................................................................ 66
第15章 内存数据库系统 .................................................................................................................................................................. 68
课后习题 ............................................................................................................................................................................................ 68
参考答案 ............................................................................................................................................................................................ 69
第16章 数据仓库与联机分析处理技术 ........................................................................................................................................... 71
课后习题 ............................................................................................................................................................................................ 71
参考答案 ............................................................................................................................................................................................ 72
4
第1章 绪 论
课后习题
1.试述数据、数据库、数据库管理系统、数据库系统的概念。
2.使用数据库系统有什么好处?
3.试述文件系统与数据库系统的区别和联系。
4.举出适合用文件系统而不是数据库系统的应用例子,以及适合用数据库系统的应用例子。
5.试述数据库系统的特点。
6.数据库管理系统的主要功能有哪些?
7.什么是概念模型?试述概念模型的作用。
8.定义并解释概念模型中以下术语:实体,实体型,实体集,实体之间的联系。
9.试述数据模型的概念、数据模型的作用和数据模型的三个要素。
10.试述层次模型的概念,举出三个层次模型的实例。
11.试述网状模型的概念,举出三个网状模型的实例。
12.试述网状、层次数据库的优缺点。
13.试述关系模型的概念,定义并解释以下术语:关系,属性,域,元组,码,分量,关系模式。
14.试述关系数据库的特点。
15.试述数据库系统的三级模式结构,并说明这种结构的优点是什么。
16.定义并解释以下术语:模式,外模式,内模式,数据定义语言,数据操纵语言。
17.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独
立性?
18.试述数据库系统的组成。
19.试述数据库管理员、系统分析员、数据库设计人员、应用程序员的职责。
5
参考答案
1
数据、数据库、数据库管理系统、数据库系统的概念:
(1)数据:描述事物的符号记录;
(2)数据库:长期储存在计算机内、有组织的、可共享的大量数据的集合;
(3)数据库管理系统:位于用户与操作系统间的一层数据管理软件;
(4)数据库系统:由数据库、DBMS(及其开发工具)、应用系统、数据库管理员(DBA)组成的存储、管理、
处理和维护数据的系统。
2
使用数据库系统的好处:
(1)便于数据的集中管理,控制数据冗余,提高数据利用率和一致性;
(2)提高应用开发效率,在数据库系统中,DBMS完成数据的定义、存储和数据存取的具体路径工作,应用程序
不必考虑。开发人员专注于应用逻辑的设计,不必为数据管理的复杂细节操心,提高应用开发效率;
(3)提供数据与程序间独立性,当应用逻辑改变且数据的逻辑结构需要改变时,DBA负责修改数据的逻辑结构,
开发人员不必修改应用程序或只需修改很少的应用程序,简化应用程序编制,减少应用程序修改和维护,方便用户使
用;
(4)减轻数据库系统管理人员维护系统负担,在数据库建立、运用和维护时,DBMS统一管理和控制数据库数据
的完整性、安全性、多用户并发控制、故障恢复等。
3
(1)文件系统与数据库系统的区别:
①文件系统的管理者是文件系统,数据面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,
整体无结构,数据控制由应用程序完成。
②数据库系统的管理者是DBMS,数据面向现实世界,共享性高,冗余度小,易扩充,具有较高的物理独立性和
一定的逻辑独立性,整体结构化,数据控制由DBMS完成。
(2)文件系统与数据库系统的联系:
文件系统与数据库系统都是计算机系统中管理数据的软件,都与操作系统有关,数据都可以长期保存,其中,文
件系统是操作系统的重要组成部分;DBMS独立于操作系统,但在操作系统的基础上实现,即数据库中数据的组织和
存储通过操作系统中的文件系统实现。
4
(1)适合用文件系统而不是数据库系统的应用例子:
①数据备份;
②软件或应用程序使用过程中临时数据存储。
(2)适合用数据库系统的应用例子:
①医院的医生管理系统;
②企业的员工管理系统;
③学校的学生管理系统。
5
数据库系统的特点:
(1)数据结构化:整体数据的结构化是数据库的主要特征之一;
(2)数据的共享性高、冗余度低且易扩充:数据库数据是有结构的数据,面向整个系统,多个用户、多个应用可
以多种不同语言共享使用数据库数据。由于数据库数据共享性,数据库系统易扩充,易增加新应用;
(3)数据独立性高:DBMS的三级模式结构和二级映像功能保证数据库数据具有高度的逻辑独立性和一定的物理
独立性;
(4)数据由DBMS统一管理和控制:数据库的共享是并发的,DBMS必须提供统一的数据的安全性保护、数据
的完整性检查、并发控制和数据库恢复等数据控制功能。
6
6
数据库管理系统的主要功能:
(1)数据库定义功能:用户使用DBMS提供的DDL定义数据库的数据对象;
(2)数据组织、存储和管理功能:DBMS组织和存储数据,提高存储空间利用率,并提供多种存取方法提高数据
存取效率;
(3)数据操纵功能:用户使用DBMS提供的DML,实现对数据库的查询、插入、删除和修改等基本操作;
(4)数据库的事务管理和运行管理:DBMS统一管理、统一控制数据库建立、运用和维护,保证数据的安全性、
完整性、多用户对数据的并发使用及发生故障后的系统恢复;
(5)数据库的建立和维护功能:一些实用程序或管理工具完成数据库初始数据的输入、转换功能,数据库的转储、
恢复功能,数据库的重组织功能和性能监视、分析功能等;
(6)其他功能:DBMS与网络中其他软件系统的通信功能,一个DBMS与另一个DBMS或文件系统的数据转换
功能,异构数据库间的互访和互操作功能等。
7
(1)概念模型的定义:
概念模型也称信息模型,按用户的观点来对数据和信息建模,主要用于数据库设计。
(2)概念模型的作用:
①现实世界到信息世界的第一层抽象,用于信息世界的建模;
②数据库设计人员数据库设计的有力工具;
③数据库设计人员和用户交流的语言。
8
术语的定义和解释:
(1)实体:客观存在并可以相互区分的事物;
(2)实体型:用实体名及其属性名集合来抽象和刻画同类实体;
(3)实体集:同一类型实体的集合;
(4)实体之间的联系:不同实体集之间的联系。
9
(1)数据模型的概念:
数据模型是对现实世界数据特征的抽象的模型,描述数据、组织数据和操作数据。
(2)数据模型的作用:
①抽象、表示和处理现实世界中具体的人、物、活动、概念,转化成计算机能够处理的数据,实现数字化,从而
模拟现实世界;
②数据库系统的核心和基础,各种机器上实现的DBMS软件均基于或者支持某种数据模型。
(3)数据模型的三个要素:
①数据结构:所研究的对象类型的集合,是对系统静态特性的描述;
②数据操作:对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则,是
对系统动态特性的描述;
③数据的完整性约束条件:一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约
和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。
10
(1)层次模型的概念:
层次模型是满足有且只有一个结点(根结点)没有双亲结点、根以外的其他结点有且只有一个双亲结点这两个条
件的基本层次联系的集合。
(2)三个层次模型的实例:
①系-学生-教员层次模型如图1-2所示。
7
图1-2 系-学生-教员层次模型
②系-班级-班长层次模型如图1-3所示。
图1-3 系-班级-班长层次模型
③我国的行政区域层次模型如图1-4所示。
图1-4 我国的行政区域层次模型
11
(1)网状模型的概念:
网状模型是满足允许一个以上的结点无双亲、一个结点可以有多于一个的双亲这两个条件的基本层次联系集合。
(2)三个网状模型的实例:
①学生-系-课程网状模型如图1-5所示。
图1-5 学生-系-课程网状模型
②商品购买销售网状模型如图1-6所示。
图1-6 商品购买销售网状模型
③学生-书籍网状模型如图1-7所示。
8
图1-7 学生-书籍网状模型
12
(1)网状数据库的优缺点:
①优点:
a.更直接描述现实世界;
b.性能良好,存取效率较高。
②缺点:
a.结构较复杂,随着应用环境扩大,结构更复杂,不利于最终用户掌握;
b.DDL、DML语言复杂,用户不容易掌握,不容易使用;
c.应用程序访问数据时必须选择适当的存取路径,用户必须了解系统结构细节,加重编写应用程序负担。
(2)层次数据库的优缺点:
①优点:
a.数据结构模型简单清晰;
b.查询效率高;
c.提供良好的完整性支持。
②缺点:
a.不适合表示结点间的n:n联系;
b.对插入和删除操作限制较多,应用程序编写较复杂;
c.必须通过双亲结点查询子女结点;
d.由于结构严密,层次命令趋于程序化。
13
(1)关系模型的概念:
关系模式是关系的描述,在用户观点中,关系模型中数据的逻辑结构是一张二维表,由行和列组成。
(2)术语的定义和解释:
①关系:一个关系对应通常所说的一张表;
②属性:表中的一列即为一个属性;
③域:一组具有相同数据类型的值的集合;
④元组:表中的一行即为一个元组;
⑤码:也称码键,表中某个属性组,可唯一确定一个元组;
⑥分量:元组中的一个属性值;
⑦关系模式:对关系的描述,一般表示为关系名(属性1,属性2,„,属性n)。
14
关系数据库的特点:
(1)支持的关系模型建立在严格的数学概念基础上;
(2)支持的关系模型概念单一,数据结构简单清晰,用户易懂易用;
(3)支持的关系模型存取路径对用户透明,具有更高的数据独立性、更好的安全保密性,简化程序员的工作和数
据库开发建立的工作;
(4)查询效率低,DBMS的开发难度大。
15
(1)数据库系统的三级模式结构组成:
9
①外模式:也称子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据
库用户的数据视图,是与某一应用有关的数据的逻辑表示;
②模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图;
③内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库系统内部的表示;
④二级映像:包括外模式/模式映像和模式/内模式映像。
(2)数据库系统的三级模式结构的优点:
①数据库系统的三级模式是对数据的三个抽象级别,把数据的具体组织留给DBMS管理,使用户能逻辑抽象地处
理数据,不必关心数据在计算机中的表示和存储;
②数据库系统在三级模式间提供的二级映像在内部实现三个抽象层次的联系和转换,并保证数据库系统中的数据
具有较高的逻辑独立性和一定的物理独立性。
16
术语的定义和解释:
(1)外模式:也称子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数
据库用户的数据视图,是与某一应用有关的数据的逻辑表示;
(2)模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图;
(3)内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库系统内部的表示;
(4)数据定义语言:对数据库中的数据对象的组成与结构进行定义的语句;
(5)数据操纵语言:对数据库中的数据进行查询、插入、删除和修改操作的语句。
17
(1)数据与程序的物理独立性的定义:
当数据库的存储结构改变,由DBA对模式/内模式映像作相应改变,可使模式保持不变,从而应用程序也不必改
变,保证数据与程序的物理独立性,简称数据的物理独立性。
(2)数据与程序的逻辑独立性的定义:
当模式改变时,由DBA对各个外模式/模式的映像作相应改变,可使外模式保持不变,从而应用程序(依据数据
的外模式编写)不必修改,保证数据与程序的逻辑独立性,简称数据的逻辑独立性。
(3)数据库系统具有数据与程序的独立性的原因:
DBMS在三级模式间提供的模式/内模式映像和模式/内模式映像保证数据库系统数据具有较高的逻辑独立性和一
定的物理独立性,使模式和存储结构改变时数据与程序不必改变。
18
数据库系统的组成:
(1)硬件平台及数据库;
(2)软件,主要包括DBMS、支持DBMS运行的操作系统、具有与数据库接口的高级语言及其编译系统、以DBMS
为核心的应用开发工具和为特定应用环境开发的数据库应用系统;
(3)人员,主要包括DBA、系统分析员和数据库设计人员、应用程序员和最终用户。
19
(1)数据库管理员的职责:
①决定数据库的信息内容和结构;
②决定数据库的存储结构和存取策略;
③定义数据的安全性要求和完整性约束条件;
④监督和控制数据库的使用和运行;
⑤数据库的改进和重组、重构。
(2)系统分析员的职责:
①负责应用系统的需求分析和规范说明;
②结合用户和DBA,确定系统的硬件软件配置;
③数据库系统概要设计。
(3)数据库设计人员的职责:
10
①确定数据库数据和设计数据库各级模式;
②参加用户需求调查和系统分析,然后设计数据库。
(4)应用程序员的职责:
①设计和编写应用系统的程序模块;
②调试和安装相应程序模块。
11
第2章 关系数据库
课后习题
1.试述关系模型的3个组成部分。
2.简述关系数据语言的特点和分类。
3.定义并理解下列术语,说明它们之间的联系与区别:
(1)域,笛卡儿积,关系,元组,属性;
(2)主码,候选码,外码;
(3)关系模式,关系,关系数据库。
4.举例说明关系模式和关系的区别。
5.试述关系模式的完整性规则。在参照完整性中,什么情况下外码属性的值可以为空值?
6.设有一个SPJ数据库,包括S、P、J及SPJ 4个关系模式:
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY)。
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)
组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。供应情况表
SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应
某种零件给某工程项目的数量为QTY。
今有若干数据如下:
S表
SNO SNAME STATUS
S1
S2
S3
S4
S5
精益
盛锡
东方红
丰泰盛
为民
20
10
30
20
30
P表
PNO PNAME COLOR WEIOHT
PI
P2
P3
P4
P5
P6
螺母
螺栓
螺丝刀
螺丝刀
凸轮
齿轮
红
绿
蓝
红
蓝
红
J表
JNO JNAME CITY
Jl
J2
J3
三建
一汽
北京
长春
12
17
14
14
40
30
CITY
天津
北京
北京
天津
上海
弹簧厂 天津
12
J4
J5
J6
J7
造船厂 天津
机车厂 唐山
无线电厂 常州
半导体厂 南京
SPJ表
SNO PNO JNO QTY
S1
S1
S1
S1
S2
S2
S2
S2
S2
S2
S3
S3
S4
S4
S4
S5
S5
S5
S5
P1
P1
P1
P2
P3
P3
P3
P3
P5
P5
Pl
P3
P5
P6
P6
P2
P3
P6
P6
J1
J3
J4
J2
J1
J2
J4
J5
J1
J2
J1
J1
J1
J3
J4
J4
J1
J2
J4
200
100
700
100
400
200
500
400
400
100
200
200
100
300
200
100
200
200
500
试用关系代数、ALPHA语言、QBE语言完成如下查询:
(1)求供应工程J1零件的供应商号码SNO;
(2)求供应工程J1零件Pl的供应商号码SNO;
(3)求供应T程Jl零件为红色的供应商号码SNO;
(4)求没有使用天津供应商生产的红色零件的工程项目代码JNO;
(5)求至少用了供应商Sl所供应的全部零件的工程项目代码JNO。
7.试述等值连接与自然连接的区别和联系。
8.关系代数的基本运算有哪些?如何用这些基本运算来表示其他运算?
13
参考答案
1
关系模型的3个部分组成:
(1)关系数据结构:从用户观点看,关系模型是由一组关系组成,每个关系的数据结构是一张规范的二维表;
(2)关系数据操作:关系模型的数据操作主要包括查询、插入、删除和修改操作;
(3)关系完整性约束条件:关系模型的完整性约束条件包括实体完整性约束、参照完整性约束和用户定义的完整
性约束。
2
(1)关系数据语言的特点:
①非过程化的集合操作语言;
②具有完备的表达能力,功能强;
③能够嵌入高级语言中使用。
(2)关系数据语言分类:
①关系代数语言:用对关系的运算表达查询要求;
②关系演算语言:用谓词表达查询要求;
③具有关系代数和关系演算双重特点的语言:其中SQL语言融合查询、DDL、DML和DCL于一体,具有丰富的
查询、数据定义和数据控制功能。
3
(1)域,笛卡儿积,关系,元组,属性
①定义与理解:
a.域:一组具有相同数据类型的值的集合;
b.笛卡儿积:给定一组域D
1
,D
2
,…,D
n
,允许其中某些域相同,D
1
,D
2
,…,D
n
的笛卡儿积为
D
1
D
2
D
n
(d
1
,d
2
,,d
n
)|d
i
D
i
,i1,2,,n
c.关系:在域D
1
,D
2
,„,D
n
上笛卡儿积D
1
×D
2
ׄ×D
n
的子集,表示为R(D
1
,D
2
,„,D
n
),且关系是一
张二维表;
d.元组:笛卡儿积中的每个元素,二维表中的一行;
e.属性:二维表中的一列。
②联系与区别:
a.联系:笛卡儿积是域上的一种集合运算,关系是笛卡儿积的子集,元组是笛卡儿积中的每个元素,对应关系中
的每行,属性是关系中的每列,属性的取值范围来自某个域;
b.区别:域是值的集合,笛卡儿积、关系是二维表,元组、属性是二维表中的行、列。
(2)主码,候选码,外部码
①定义与理解:
a.候选码:关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码;
b.主码:若一个关系有多个候选码,则选定其中一个为主码;
c.外部码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码K
s
相对应,
则称F是基本关系R的外部码,简称外码。
②联系与区别:
a.联系:候选码、主码和外部码都是描述属性的。若关系中有多个候选码,主码是候选码中的一个,若关系中只
有一个候选码,主码就是候选码,外部码是相对主码而言的;
b.区别:候选码和主码都是相对一个关系而言的,外部码相对一个关系(R和S为同一个关系)或多个关系而言
的。
(3)关系模式,关系,关系数据库
①定义与理解:
a.关系模式:关系的描述,可以表示为R(U,D,DOM,F)、R(U)或R(A
1
,A
2
,„,A
n
),其中R为关
系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映射集合,F为属性间数
14
据的依赖关系集合,A
1
,A
2
,„,A
n
为属性名;
b.关系:在域D
1
,D
2
,„,D
n
上笛卡儿积D
1
×D
2
ׄ×D
n
的子集称为关系,表示为R(D
1
,D
2
,„,D
n
),且
关系是一张二维表;
c.关系数据库:在一个给定的应用领域中,所有关系的集合构成一个关系数据库。关系数据库的值是关系模式在
某一时刻对应的关系的集合,通常称为关系数据库。
②联系与区别:
a.联系:关系是关系模式在某一时刻的状态或内容,关系模式是关系的描述,关系数据库是关系的集合;
b.区别:关系模式描述型,关系描述值,关系模式是静态的、稳定的,关系和关系数据库是动态的、随时间不断
变化的。
4
关系模式和关系的区别举例说明:
学校的学生信息采集表,关系模式通常指的是学生信息采集表的表头,即需要采集的信息类别,表头通常是静态
的、稳定的;关系通常指的是学生信息采集表的具体内容,当进行插入、删除、修改等操作时,内容通常是动态的、
随时间不断变化的。
5
(1)关系模型的完整性规则:对关系的某种约束条件,关系模型中完整性约束分类:
①实体完整性:若一个或一组属性A是基本关系R的主属性,则属性A不能取空值;
②参照完整性:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K
s
相对应(基本关系R和S
可相同),则R中每个元组在F上的值必须取空值(F的每个属性值均为空值)或取S中某元组的主码值;
③用户定义的完整性:针对某一具体关系数据库的约束条件反映某一具体应用涉及的数据必须满足的语义要求。
(2)在参照完整性中,外码属性的值可以为空值的情况:外码属性不是其所在关系(参照关系)的主属性。
6
(1)关系代数、ALPHA语言、QBE语言完成如下:
①关系代数:
②ALPHA语言:GET W():='J1'
③QBE语言:
(2)关系代数、ALPHA语言、QBE语言完成如下:
①关系代数:
②ALPHA语言:GET W():='J1'
='P1'
③QBE语言:
(3)关系代数、ALPHA语言、QBE语言完成如下:
①关系代数:
②ALPHA语言:RANGE P PX
③QBE语言:
(4)关系代数、ALPHA语言、QBE语言完成如下:
①关系代数:
15
②ALPHA语言:
③QBE语言:不考虑未使用任何零件的工程。
(5)关系代数、ALPHA语言、QBE语言完成如下:
①关系代数:
②ALPHA语言:
③QBE语言:
7
(1)等值连接与自然连接的区别:
①等值连接从两个关系的广义笛卡儿积中选取两个属性组中属性值相等的元组;自然连接要求两个关系中比较的
分量的属性组必须相同,并且在结果中去掉重复的属性列。
②等值连接的运算角度是行;自然连接的运算角度是行和列。
(2)等值连接与自然连接的联系:等值连接和自然连接都是连接运算中最为重要也最为常用的连接,自然连接是
一种特殊的等值连接。
8
(1)关系代数的基本运算有:并、差、笛卡儿积、投影和选择。
(2)用基本运算来表示其他运算:
16
①交运算:R∩S=R-(R-S)或R∩S=S-(S-R);
②连接运算:
③除运算:
;
。
17
第3章 关系数据库标准语言SQL
课后习题
1.试述SQL的特点。
2.说明在DROP TABLE时,RESTRICT和CASCADE的区别。
3.有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式:
4.用SQL语句建立第2章习题6中的4个表;针对建立的4个表用SQL完成第2章习题6中的查询。
5.针对习题4中的4个表试用SQL完成以下各项操作:
(1)找出所有供应商的姓名和所在城市;
(2)找出所有零件的名称、颜色、重量;
(3)找出使用供应商Sl所供应零件的工程号码;
(4)找出工程项目J2使用的各种零件的名称及其数量;
(5)找出上海厂商供应的所有零件号码;
(6)找出使用上海产的零件的工程名称;
(7)找出没有使用天津产的零件的工程号码;
(8)把全部红色零件的颜色改成蓝色;
(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改;
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录;
(11)请将(S2,J6,P4,200)插入供应情况关系。
6.什么是基本表?什么是视图?两者的区别和联系是什么?
7.试述视图的优点。
8.哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。
9.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
针对该视图完成下列查询:
(1)找出三建工程项目使用的各种零件代码及其数量;
(2)找出供应商Sl的供应情况。
18
参考答案
1
SQL的特点:
(l)综合统一:SQL语言集DDL、DML、DCL的功能于一体,语言风格统一,可独立完成数据库生命周期中全
部活动。在关系模型中都用单一的数据结构(关系)表示实体和实体间的联系,查找、插入、删除、更新等每一种操
作都只需一种统一的数据操作符;
(2)高度非过程化:SQL语言进行数据操作,只需提出“做什么”,无需指明“怎么做”和了解存取路径(系统
自动完成),减轻用户负担,提高数据独立性;
(3)面向集合的操作方式:SQL语言的操作对象、查找结果和插入、删除、更新操作的对象都可以是元组的集合;
(4)以同一种语法结构提供多种使用方式:SQL语言语法结构统一,能够独立用于联机交互的使用方式和嵌入到
高级语言程序中供程序员设计程序,具有极大灵活性与方便性;
(5)语言简洁、易学易用:SQL功能极强,设计巧妙,使用9个动词完成核心功能;完成核心功能的动词接近英
语口语,易于学习和使用。
2
在DROP TABLE时,RESTRICT和CASCADE的区别:
(1)RESTRICT表示该表删除有限制条件,只有当没有依赖基本表的对象(如索引、引用基本表的表、视图、触
发器、存储过程、函数等)时才能执行删除基本表语句;
(2)CASCADE表示该表删除没有限制条件,删除基本表和相关的依赖对象。
3
(1)SELECT * FROM S WHERE A='10';
(2)SELECT A,B FROM S;
(3)SELECT S.*,E,F FROM S,T WHERE S.C=T.C AND S.D=T.D;
(4)SELECT * FROM S,T WHERE S.C=T.C;
(5)SELECT * FROM S,T ON A (6)SELECT S.C,S.D,T.* FROM S,T; 4 本答案建表没有设置主码 (1)建表: ①建立S表: CREATE TABLE S(SNO char(2) UNIQUE,SNAME char(6),STATUS char(2),CITY char(4)); ②建立P表: CREATE TABLE P(PNO char(2) UNIQUE,PNAME char(6),COLOR char(2),WEIGHT INT); ③建立J表: CREATE TABLE J(JNO char(2) UNIQUE,JNAME char(8),CITY char(4)); ④建立SPJ表: CREATE TABLE SPJ(SNO char(2),PNO char(2),JNO char(2),QTY INT)); (2)查询: ①供应工程J1零件的供应商号码SNO对应的SQL语句: SELECT DISTINCT SNO FROM SPJ WHERE JNO='J1'; ②供应工程J1零件P1的供应商号码SNO对应的SQL语句: SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'; ③供应工程J1零件为红色的供应商号码SNO对应的SQL语句: SELECT SNO FROM SPJ,P WHERE JNO='J1' AND =P .PNO AND COLOR='红'; ④没有使用天津供应商生产的红色零件的工程号JNO对应的SQL语句: SELECT DISTINCT JNO FROM SPJ WHERE JNO NOT IN (SELETE JNO FROM SPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =); 19 ⑤至少用了供应商S1所供应的全部零件的工程号JNO对应的SQL语句: SELECT DISTINCT JNO FROM SPJ SPJX WHERE NOT EXISTS(SELECT * FROM SPJ SPJY WHERE ='S1' AND NOT EXISTS(SELECT * FROM SPJ SPJZ WHERE = AND =)); 5 (1)找出所有供应商的姓名和所在城市语句: SELECT SNAME,CITY FROM S; (2)找出所有零件的名称、颜色、重量语句: SELECT PNAME,COLOR,WEIGHT FROM P; (3)找出使用供应商Sl所供应零件的工程号码语句: SELECT DISTINCT JNO FROM SPJ WHERE SNO='S1'; (4)找出工程项目J2使用的各种零件的名称及其数量语句: SELECT PNAME,QTY FROM SPJ,P WHERE = AND ='J2'; (5)找出上海厂商供应的所有零件号码语句: SELECT PNO FROM SPJ,S WHERE = AND CITY='上海'; (6)找出使用上海产的零件的工程名称语句: SELECT JNAME FROM SPJ,S,J WHERE = AND ='上海' AND =; (7)找出没有使用天津产的零件的工程号码语句: SELECT DISTINCT JNO FROM SPJ WHERE JNO NOT IN (SELECT DISTINCT JNO FROM SPJ,S WHERE = AND ='天津'); (8)把全部红色零件的颜色改成蓝色语句: UPDATE P SET COLOR='蓝' WHERE COLOR='红'; (9)由S5供给J4的零件P6改为由S3供应语句: UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6'; (10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录语句: 由于建表时没有设置主码和外码,此处的两个DELETE语句顺序可互换,若设置,在SQL Server2008中,要先删 除SPJ表,再删除S表,否则违背参照完整性,报错。 DELETE FROM S WHERE SNO='S2'; DELETE FROM SPJ WHERE SNO='S2'; (11)请将(S2,J6,P4,200)插入供应情况关系语句: 建表时设置主码和外码,要先确定S,P,J表中是否有插入的属性,否则违背参照完整性,报错。 INSERT INTO SPJ VALUES ('S2','P4','J6',200); 6 (1)基本表的定义: 基本表是本身独立存在的表,在DBMS中一个关系对应一个基本表。一个或多个基本表对应一个存储文件,一个 表可以带若干索引,索引存放在存储文件中。 (2)视图的定义: 视图是从一个或几个基本表(视图)或基本表与视图导出的表。 (3)基本表与视图的区别和联系: ①区别:视图是一个虚表,本身不独立存储在数据库中,数据库中只存放视图的定义而不存放视图的数据。基本 表本身独立存在,独立存储在数据库中。 ②联系:视图可从基本表中导出,从视图中查询出的数据随基本表中的数据变化而变化;在概念上,视图与基本 表等同,视图和基本表的使用操作相同,用户可在视图上再定义视图或进行视图查询和更新操作。 7 视图的优点: (1)简化用户操作:视图机制使用户将注意力集中在关心的数据上,若数据不直接来自基本表,则通过定义视图, 使数据库看起来结构简单、清晰,简化数据查询操作; 20 (2)使用户能以多种角度看待同一数据:视图机制使不同用户共享同一数据库时可以不同方式看待同一数据,具 有灵活性; (3)对重构数据库提供一定程度的逻辑独立性:用户的应用程序不受数据库重构影响; (4)对机密数据提供安全保护:在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据只出现在 相应用户视图上; (5)更清晰表达查询:查询操作简单。 8 (1)可以更新的视图类型和举例说明: 基本表的行列子集视图是可以更新的,举例说明: 针对大学生,向数学系学生视图Student_MA中插入一个新学生记录(学号为201215124,姓名为王磊,性别为男, 年龄为18岁)。 INSERT INTO Student_MA VALUES('201215124','王磊','男',18); 视图消解(Student表中属性包括学号,姓名、性别、年龄和所在系): INSERT INTO Student VALUES('201215124','王磊','男',18,'MA'); (2)不可更新的视图类型和举例说明: 属性来自两个以上基本表、聚集函数、表达式、常数、嵌套查询(子查询的FROM子句涉及的表也是视图的基本 表),定义中含有GROUP BY子句或DISTINCT短语的视图是不可更新的,举例说明(属性来自聚集函数): 针对高中生,建立学号和每个学生总成绩组成的学生总成绩视图Student_total: CREATE VIEW Student_total(Sno,total) AS SELECT Sno,SUM(Grade) FROM SC GROUP BY Sno; 把视图Student_total中学号为201215122的学生的总成绩改为180分: UPDATE Student_total SET total=180 WHERE Sno='201215122'; 由于系统无法修改各科成绩使总成绩是180分,学生总成绩视图Student_total无法视图消解转换成对基本表SC的 更新。 9 创建视图: CREATE VIEW SJP AS SELECT SNO,PNO,QTY FROM SPJ WHERE JNO=(SELECT JNO FROM J WHERE JNAME='三建'); 视图查询: (1)查询三建工程项目使用的各种零件代码及其数量的SQL语句为: SELECT DISTINCT PNO,QTY FROM SJP; (2)查询供应商S1的供应情况的SQL语句为: SELECT DISTINCT PNO,QTY FROM SJP WHERE SNO='S1'; 21 第4章 数据库安全性 课后习题 1.什么是数据库的安全性? 2.举例说明对数据库安全性产生威胁的因素。 3.试述信息安全标准的发展历史,试述CC评估保证级划分的基本内容。 4.试述实现数据库安全性控制的常用方法和技术。 5.什么是数据库中的自主存取控制方法和强制存取控制方法? 6.对下列两个关系模式:学生(学号.姓名,年龄,性别,家庭住址,班级号)班级(班级号,班级名,班主任, 班长)使用GRANT语句完成下列授权功能: (1)授予用户U1对两个表的所有权限,并可给其他用户授权。 (2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。 (3)将对班级表查看权限授予所有用户。 (4)将对学生表的查询、更新权限授予角色R1。 (5)将角色R1授予用户U1,并且U1可继续授权给其他角色。 7.今有以下两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号)部门(部门员,名称,经理名,地址,电话号) 请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能: (1)用户王明对两个表有SELECT权限。 (2)用户李勇对两个表有INSERT和DELETE权限。 (3)每个职工只对自己的记录有SELECT权限。 (4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。 (5)用户张新具有修改这两个表的结构的权限。 (6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户,授权的权限。 (7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。 8.针对习题7中(1)~(7)的每种情况,撤销各用户所授予的权限。 9.解释强制存取控制机制中主体、客体、敏感度标记的含义。 10.举例说明强制存取控制机制是如何确定主体能否存取客体的。 11.什么是数据库的审计功能,为什么要提供审计功能? 22 参考答案 1 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 2 对数据库安全性产生威胁的因素的举例说明: (1)非授权用户对数据库恶意存取和破坏:恶意互联网企业的软件开发人员利用数据库平台软件有漏洞的函数将 普通用户权限提升为管理员权限,存取和删改相应数据; (2)数据库中重要或敏感数据被泄露:恶意金融企业的软件开发人员使用不合法的手段盗取其他企业数据库中的 企业运行的重要数据; (3)安全环境脆弱性:恶意入侵医院DBMS者使用MS-Excel等其他客户端与医院病人信息DBMS相连,破坏环 境安全性,查看医院病人的病历,侵害相应病人的权益。 3 (1)信息安全标准的发展历史如表4-5所示。 时间 1985年 1991年 1991年 1993年 1993年 1996年 1998年 1999年 1999年 2000年 ISO采用的国际标准 我国采用的安全标准 通用准则 安全标准 美国国防部可信计算机系统评估准则 欧洲信息技术安全评估准则 TCSEC的DBMS拓展 加拿大可信计算机产品评估准则 美国信息技术安全联邦标准草案 符号表示 TCSEC ITSEC TCSEC/TDI CTCPEC FC CC V1.0 CC V2.0 CC V2.1 CC V2.1 CC V2.1 (2)CC评估保证级划分的基本内容如表4-6所示。 表4-6 CC评估保证级划分的基本内容 评估保证级 EAL1 EAL2 EAL3 EAL4 EAL5 EAL6 EAL7 4 实现数据库安全性控制的常用方法和技术: (1)用户身份鉴别:DBMS提供的最外层安全保护措施。每个用户在系统中有一个用户标识,每次用户要求进入 系统时,系统核对和通过鉴定后提供给用户使用DBMS的权限; (2)存取控制(DAC和MAC):保证只授权给有资格用户访问数据库的权限以及使所有未被授权的人员无法接 近数据; (3)视图机制:对无权存取的用户隐藏保密数据,自动对数据提供一定程度的安全保护,间接实现支持存取谓词 的用户权限定义; (4)审计:把用户对数据库的所有操作自动记录下来放入审计日志中,审计员利用审计日志监控数据库中各种行 为,重现导致数据库现有状况的一系列事件,找出非法存取数据或蓄意盗窃破坏数据的人、时间和内容等;对审计日 志分析,提前采取措施防范潜在威胁; 23 定义 功能测试 结构测试 系统地测试和检查 系统地设计、测试和复查 半形式化设计和测试 半形式化验证的设计和测试 形式化验证的设计和测试 TCSEC安全级别(近似相当) C1 C2 B1 B2 B3 A1 (5)数据加密:防止数据库数据在存储和传输中失密的有效手段。 5 (1)数据库中的自主存取控制方法: 用户对不同数据库对象以及不同用户对同一对象存取权限不同,且用户可将其拥有的存取权限转授给其他用户, 非常灵活。 (2)数据库中的强制存取控制方法: 每个数据对象用某个密级标记,每个用户用某个级别的许可证标记,仅具有合法许可证的用户可存取任意对象, 相对比较严格。 6 (1)授予用户U1对两个表的所有权限,并可给其他用户授权的语句: GRANT ALL PRIVILIGES ON TABLE 学生,班级 TO U1 WITH GRANT OPTION; (2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限的语句: GRANT SELECT,UPDATE(家庭地址) ON TABLE 学生 TO U2; (3)将对班级表查看权限授予所有用户的语句: GRANT SELECT ON 班级 TO PUBLIC; (4)将对学生表的查询、更新权限授予角色R1的语句: GRANT SELECT,UPDATE ON TABLE 学生 TO R1; (5)将角色R1授予用户U1,并且U1可继续授权给其他角色的语句: GRANT R1 TO U1 WITH GRANT OPTION; 7 (1)用户王明对两个表有SELECT权限的语句: GRANT SELECT ON 职工,部门 TO 王明; (2)用户李勇对两个表有INSERT和DELETE权限的语句: GRANT INSERT,DELETE ON 职工,部门 TO 李勇; (3)每个职工只对自己的记录有SELECT权限的语句: GRANT SELECT ON 职工 WHEN USER() = NAME TO ALL; (4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限的语句: GRANT SELECT,UPDATE(工资) ON 职工 TO 刘星; (5)用户张新具有修改这两个表的结构的权限的语句: GRANT ALTER TABLE ON 职工,部门 TO 张新; (6)用户周平具有对两个表所有权限(读,插,改,删数据),并具有给其他用户授权的权限的语句: GRANT ALL PRIVILIGES ON 职工,部门 TO 周平 WITH GRANT OPTION; (7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资 的语句: CREATE VIEW 部门工资 AS SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资) FROM 职工,部门 WHERE 职工.部门号=部门.部门号 GROUP BY 职工.部门号; GRANT SELECT ON 部门工资 TO 杨兰; 8 (1)撤销用户王明对两个表有SELECT权限的语句: REVOKE SELECT ON 职工,部门 FROM 王明; (2)撤销用户李勇对两个表有INSERT和DELETE权限的语句: REVOKE INSERT,DELETE ON 职工,部门 FROM 李勇; (3)撤销每个职工只对自己的记录有SELECT权限的语句: REOVKE SELECT ON 职工 WHEN USER () = NAME FROM ALL; (4)撤销用户刘星对职工表有SELECT权限,对工资字段具有更新权限的语句: REVOKE SELECT,UPDATE ON 职工 FROM 刘星; 24 (5)撤销用户张新具有修改这两个表的结构的权限的语句: REVOKE ALTER TABLE ON 职工,部门 FROM 张新; (6)撤销用户周平具有对两个表所有权限(读,插,改,删数据),并具有给其他用户授权的权限的语句: REVOKE ALL PRIVILIGES ON 职工,部门 FROM 周平; (7)撤销用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的 工资的语句: REVOKE SELECT ON 部门工资 FROM 杨兰; DROP VIEW 部门工资; 9 强制存取控制机制中主体、客体、敏感度标记的含义: (1)主体:系统中的活动实体,包括DBMS管理的实际用户和代表用户的各进程; (2)客体:系统中的被动实体,受主体操纵,包括文件、基本表、索引、视图等; (3)敏感度标记:DBMS为主体和客体的每个实例(值)指派一个敏感度标记,敏感性标记的密级次序TS(绝 密)>S(机密)>C(可信)>P(公开)。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。 10 强制存取控制机制确定主体能否存取客体的举例说明: 假设对关系Teacher进行MAC,对控制存取的数据单元(元组)用密级标记,Teacher元组密级如表4-6所示(4= 绝密,3=机密,2=可信,1=公开)。 表4-6 Teacher元组密级 TNO T1 T2 T3 T4 TNAME Lucy Brown Jean Bob GENDER Female Male Female Male AGE 30 25 32 34 密级 1 2 4 3 若用户U1和U2的许可证级别分别为4和1,则根据存取规则,U1能读取元组T1、T2、T3、T4,只能写T4;U2 只能读取和写元组T1。 11 (1)数据库中的审计功能的定义: 审计功能是把用户对数据库的所有操作自动记录下来放入审计目志中,包括用户级审计和系统级审计。 (2)提供审计功能的原因: ①任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。审计员利用审计日志监控数 据库中各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据或蓄意盗窃破坏数据的人、时间和内容 等,保护系统安全; ②对审计日志分析,提前采取措施防范潜在威胁,保护系统安全。 25 第5章 数据库完整性 课后习题 1.什么是数据库的完整性? 2.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 3.什么是数据库的完整性约束条件? 4.关系数据库管理系统的完整性控制机制应具有哪三方面的功能? 5.关系数据库管理系统在实现参照完整性时需要考虑哪些方面? 6.假设有下面两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码。 用SQL语言定义这两个关系模式,要求在模式中完成以F完整性约束条件的定义: (1)定义每个模式的主码; (2)定义参照完整性; (3)定义职工年龄不得超过60岁。 7.在关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处 理的? 8.某单位想举行一个小型的联谊会,关系Male记录注册的男宾信息,关系Female记录注册的女宾信息。建立一 个断言,将来宾的人数限制在50人以内。(提示,先创建关系Female和关系Male。) 26 参考答案 1 数据库的完整性是指数据的正确性和相容性,目的是防止数据库中存在不符合语义和不正确的数据。 2 (1)数据库的完整性概念和数据库的安全性概念的区别如表5-3所示。 表5-3 数据库的完整性概念和数据库的安全性概念的区别 实质 防范对象 目的 数据库完整性 数据的正确性和相容性 不合语义的、不正确的数据 防止数据库有不符合语义和不正确数据 数据库安全性 数据存取的合法性 非法用户和非法操作 防止数据库被恶意破坏和非法存取 (2)数据库的完整性概念和数据库的安全性概念的联系: 两者都是对数据库进行规范和限制的,最终目的是保护数据库。 3 数据库的完整性约束条件的定义: 数据库的完整性约束条件是指数据库中的数据应该满足的语义约束条件,表达给定的数据模型中数据及其联系所 具有的制约和依存规则,限定符合数据模型的数据库状态以及状态的变化,保证数据的正确、有效和相容。 4 关系数据库管理系统的完整性控制机制具有的三方面功能: (1)提供定义完整性约束条件的机制:完整性约束条件是数据库中数据必须满足的语义约束条件,SQL使用数据 定义语句实现关系模型的实体完整性、参照完整性和用户定义的完整性; (2)提供完整性检查方法:DBMS检查数据是否满足完整性约束条件,一般在INSERT、UPDATE、DELETE语 句执行后或事务提交时检查操作执行后数据库中数据是否满足完整性约束条件; (3)违约处理:若DBMS发现用户操作不满足完整性约束条件,则采取拒绝执行或级联(CASCADE)执行等违约 处理。 5 关系数据库管理系统在实现参照完整性时需要考虑的方面: (1)修改关系的主码值,只能先删除元组,再把有新主码值的元组插入到关系中。若允许修改主码,先保证主码 唯一性和非空,再区分参照关系和被参照关系; (2)外码是否可以为空值; (3)在参照关系中插入元组时,系统可能采取受限插入和递归插入的方式; (4)删除被参照关系元组时,系统可能采取级联删除、受限删除和置空值删除的方式。 6 SQL语言定义以上关系模式: (1)SQL语言定义部门关系模式: CREATE TABLE D (DNO NUMERIC(3), DNAME CHAR(12), MANAGER CHAR(12), PHONE CHAR(12), CONSTRAINT PK_D PRIMARY KEY(DNO)); (2)SQL语言定义职工关系模式: CREATE TABLE E (ENO NUMERIC(6), ENAME CHAR(12), 27 AGE SMALLINT, JOB CHAR(20), SALARY NUMERIC(10,2), DNO CHAR(10), CONSTRAINT PK_E PRIMARY KEY(ENO), CONSTRAINT C1 CHECK(AGE<=60), CONSTRAINT FK_E FOREIGN KEY(DNO) REFERENCES D(DNO)); 7 在关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般分别处理的方式: (1)当操作违反实体完整性约束条件时,一般采用的方式是拒绝插入或修改; (2)当操作违反参照完整性约束条件时,一般采用的方式是拒绝执行、级联操作、设置为空值; (3)当操作违反用户定义的完整性约束条件时,一般采用的方式是拒绝执行。 8 建立断言语句: CREATE ASSERTION TOTAL_MF CHECK (NOT EXISTS(SELECT COUNT(*) FROM(SELECT MNAME FROM MALE UNION SELECT FNAME FROM FEMALE))>50); 28 第6章 关系数据理论 课后习题 1.理解并给出F列术语的定义: 函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、超码、主码、外码、全码(all—key)、1NF、2NF、 3NF、BCNF、多值依赖、4NF。 2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。 描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区; 描述班级的属性有:班号、专业名、系名、人数、入校年份; 描述系的属性有:系名、系号、系办公室地点、人数: 描述学会的属性有:学会名、成立年份、地点、人数。 有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍 区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。 请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属 性的情况,讨论函数依赖是完全函数依赖还是部分函数依赖。指出各关系的候选码、外部码,并说明是否全码存在。 3.试由Armostrong公理系统推导出下面三条推理规则。 (1)合并规则:若X→Z,X→Y则有X→YZ。 (2)伪传递规则:由X→Y,WY→Z,有XW→Z。 (3)分解规则:X→Y,Z⊆Y,有X→Z。 4.关于多值依赖的另一种定义是: 给定一个关系模式R(X,Y,Z),其中X、Y、Z可以是属性或属性组合。 设x∈x,y∈Y,z∈Z,xz在R中的像集为 YXZ={r.Y|r.X=x∧r.Z=z∧r∈R} 定义R(X,Y,Z)当且仅当Y xz =Y xz' ,对于每组(x,z,z')都成立,则Y对X多值依赖,记作X→→Y。这里, 允许Z为空集,在Z为宅集时,称为平凡的多值依赖。请证明这里的定义和6.27节中定义6.9是等价的。 5.试举出三个多值依赖的实例。 6.有关系模式R(A,B,C,D,E),回答下面各个问题: (1)若A是R的候选码,具有函数依赖BC→DE,那么在什么条件R是BCNF? (2)如果存在函数依赖A→B,BC→D,DE→A,列出R的所有码。 (3)如果存在函数依赖A→B,BC→D,DE→A,R属于3NF还是BCNF。 7.F面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明之。 (1)任何一个二目关系是属于3NF的。 (2)任何一个二目关系是属于BCNF的。 (3)任何一个二目关系是属于4NF的。 (4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。 (5)若RA→RB,RB→RC,则RA→RC。 (6)若RA→RB,RA→RC,则R.A→R.(B,C)。 (7)若RB→RA,RC→RA,则R.(B,C)→R.A。 (8)若R.(B,C)→R.A,则RB→RA,RC→RA。 8.证明: (1)如果R是BCNF关系模式,则R是3NF关系模式,反之则不然。 (2)如果R是3NF关系模式,则R一定是2NF关系模式。 29 30 参考答案 1 (1)函数依赖:设R(U)是属性集U上的关系模式。X,Y是属性集U的子集。若R(U)任意关系r中任意不同 的元组在X和Y上的属性值分别对应互不相等,则称X函数确定Y或Y函数依赖于X,记作X→Y; P (2)部分函数依赖:若X→Y,Y不完全函数依赖于X,则称Y对X部分函数依赖,记作 XY ; F (3)完全函数依赖:在R(U)中,若X→Y,X的真子集X’→Y,则称Y对X完全函数依赖,记作 XY ; 传递 (4)传递依赖:在R(U)中,若 XY,(YX),YX,YZ,ZY ,则称Z对X传递函数依赖,记作 X Z ; F (5)候选码:设K为R中的属性或属性组合,若 KU ,则K为R的候选码; P (6)超码:设K为R KU ,则K为R的超码; (7)主码:若候选码多于一个,则选定其中的一个为主码; (8)外码:关系模式R中属性或属性组X是另一个关系模式的码,不是R的码,则称X是R的外部码,也称外 码; (9)全码:整个属性组是码,称为全码; (10)1NF:满足每一个分量是不可再分的数据项的关系模式; (11)2NF:关系模式R∈1NF且所有非主属性完全函数依赖于码; (12)3NF:关系模式R中若不存在码X、属性组Y及非主属性Z(Z⊉Y), YX ,使X→Y,Y→Z成立, 即所有非主属性不部分依赖和传递依赖于码; (13)BCNF:关系模式R中每一个决定 因素都包含码; (14)多值依赖:设R(U)是属性集U上的一个关系模式,X,Y,Z是U的子集,且Z=U-X-Y。当且仅当对R (U)的任一关系r,有一组r的值仅决定于给定的一对(x,z)值中的x值,关系模式R(U)中多值依赖X→→Y成 立; (15)4NF:关系模式R 模式的属性之间不允许有非平凡且非函数依赖的多值依赖。 2 (1)关系模式: 学生:S(SNO,SNAME,SBIRTH,DNAME,CNO,RNO) 班级:C(CNO,PNAME,DNAME,CNUM,CYEAR) 系:D(DNAME,DNO,OFFICE,DNUM) 学会:M(MNAME,MYEAR,MADDR,MNUM) 学生-学会:MS(SNO,MNAME,MSYEAR) (2)每个关系模式的最小函数依赖集: ①学生S(SNO,SNAME,SBIRTH,DNAME,CNO,RNO)的最小函数依赖集: SNO→SNAME,SNO→SBIRTH,SNO→CNO,CNO→DNAME,DNAME→RNO。 传递依赖: a.由于SNO→DNAME,DNAME SNO,DNAME→RNO, SNO与RNO间存在传递函数依赖; b.由于CNO→DNAME,DNAME CNO,DNAME→RNO,CNO与RNO间存在传递函数依赖; c.由于SNO→CNO,CNO SNO,CNO→DNAME, SNO与DNAME间存在传递函数依赖。 ②班级C(CNO,PNAME,DNAME,CNUM,CYEAR)的最小函数依赖集: CNO→PNAME,CNO→CNUM,CNO→CYEAR,PNAME→DNAME,(PNAME,CYEAR)→CNO。 由于CNO→PNAME,PNAME CNO,PNAME→DNAME,CNO与DNAME间存在传递函数依赖。 ③系D(DNAME,DNO,OFFICE,DNUM)的最小函数依赖集: DNAME→DNO,DNO→DNAME,DNO→OFFICE,DNO→DNUM。 该关系模式不存在传递依赖。 ④学会M(MNAME,MYEAR,MADDR,MNUM)的最小函数依赖集: 31 MNAME→MYEAR,MNAME→MADDR,MNAME→MNUM。 该关系模式不存在传递依赖。 ⑤学生-学会MS(SNO,MNAME,MSYEAR)的最小函数依赖集: (SNO,MNAME)→MSYEAR 该关系模式不存在传递依赖。 (3)函数依赖左部是多属性的情况: (SNO,MNAME)→MSYEAR,(PNAME,CYEAR)→CNO 以上两个函数依赖都是完全函数依赖,没有部分函数依赖。 (4)各关系模式的候选码、外部码,全码: ①学生S候选码:SNO;外部码:DNAME、CNO;无全码。 ②班级C候选码:CNO或(PNAME,CYEAR);外部码:DNAME;无全码。 ③系D候选码:DNAME或DNO;无外部码;无全码。 ④学会M候选码:MNAME;无外部码;无全码。 ⑤学生-学会MS候选码:(SNO,MNAME);外部码:SNO,MNAME;无全码。 3 (1)合并规则Armostrong公理系统推导: 已知X→Z,根据增广律可得XY→YZ,又因为X→Y,得XX→XY→YZ,根据传递律可得X→YZ。 (2)伪传递规则Armostrong公理系统推导: 已知X→Y,根据增广律可得XW→WY,又因为WY→Z,得XW→WY→Z,根据传递律可得XW→Z。 (3)分解规则Armostrong公理系统推导: 已知Z Y,根据自反律可得Y→Z,又因为X→Y,根据传递律可得X→Z。 4 设 Y xz Y xz' 对于每一组(x,z,z')都成立,证其能推出6.27节中定义6.9中定义的条件: 设R1,R2是关系R中的两个元组,R1[X]=R2[X],根据另一种定义的条件可得, " z值都对应相同的一组y值, 因此对相同的x值,交换y值后得到的元组仍然属于关系R,即6.27节中定义6.9中定义中多值依赖的条件成立; 若6.27节中定义6.9定义的条件成立,则对相同的x值,交换y值后得到的元组仍属于关系R,根据对称性可得, 任意z值对应相同的一组y值,因此 Y xz Y xz' 对每一组(x,z,z')都成立。 综上,以上两个定义是等价的。 5 多值依赖的实例: (1)关系模式选课(专业,学生,专业主干课),每个专业有多个学生,有多门专业主干课。因为每个专业都对 应一个学生集合,所以专业→→学生。因为同专业内所有学生专业主干课相同且要求全修满以及专业与学生的完全对 称性,所以专业→→专业主干课; (2)关系模式学生科研(科研团队,成员,科研活动项目),每个科研团队有多个学生,有多个科研活动项目。 若每个成员必须参加相应科研团队的所有科研活动项目,每个科研活动项目要求科研团队所有成员参加,则科研团队 →→成员,科研团队→→科研团队的科研活动项目; (3)关系模式志愿服务(志愿组织,志愿者,志愿活动),每个志愿组织有多名志愿者,组织多项志愿活动。若 每个志愿者都参加相应志愿组织的所有志愿活动,每个志愿活动需要志愿组织所有志愿者参加,所以志愿组织→→志 愿者,志愿组织→→志愿活动。 6 (1)R是BCNF的条件:BC也是候选码(A→BC,BC→A,满足BCNF); (2)R的所有码:ACE,BCE,CDE; (3)R属于3NF(函数依赖中不存在传递函数依赖,属于3NF;每个函数依赖的决定因素不包含码,不属于BCNF)。 32 7 (1)正确; (2)正确; (3)正确; (4)错误;反例:S(SNO,NAME,AGE),学生有同名的情况,SNO→NAME,SNO→AGE,等于其投影S 1 (SNO,NAME)和S 2 (SNO,AGE)的连接。 (5)正确; (6)正确; (7)正确; (8)错误;反例:SPJ(SNO,PNO,JNO,QTY),(SNO,PNO,JNO)→QTY,但 SNO QTY , PNO QTY , JNO QTY 。 8.证明: (1)如果R是BCNF关系模式,则R是3NF关系模式,反之则不然。 (2)如果R是3NF关系模式,则R一定是2NF关系模式。 证明:(1)如果R是BCNF关系模式,则R是3NF关系模式,反之则不然: 设R是BCNF,但不是3NF,则必存在非主属性N、候选码X和属性集Y,使X→Y,Y→N,其中N→X,N→Y, Y→X不在函数依赖中,即Y不可能包含R的码,但Y→N成立。根据BCNF定义可得,R不是BCNF,与已知矛盾, 所以BCNF范式一定是3NF。 (2)如果R是3NF关系模式,则R一定是2NF关系模式: 假设R中非主属性N部分依赖于码PK,则存在PK'是PK的子集,使得PK'→N,因PK'是PK的子集有PK→PK', 但 PK'PK ,于是有PK→PK', PK'PK ,PK'→N,且N不属于PK,所以N传递以来于PK,即R不属于3NF, 与已知矛盾,所以3NF一定是2NF。 33 第7章 数据库设计 课后习题 1.试述数据库设计过程。 2.试述数据库设计过程中形成的数据库模式。 3.需求分析阶段的设计目标是什么?调查的内容是什么? 4.数据字典的内容和作用是什么? 5.什么是数据库的概念结构?试述其特点和设计策略。 6.定义并解释概念模型中以下术语:实体,实体型,实体集,属性,码,实体联系图(E-R图) 7.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干 研究生,每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。请用E-R图画出此学校的概念模型。 8.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料 制成,不同零件所用的材料可以相同。这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。 请用E-R图画出此工厂产品、零件、材料、仓库的概念模型。 9.什么是数据库的逻辑结构设计?试述其设计步骤。 10.试把习题7和习题8中的E-R图转换为关系模型。 11.试用规范化理论中有关范式的概念分析习题7设计的关系模型中各个关系模式的候选码,它们属于第几范式? 会产生什么更新异常? 12.规范化理论对数据库设计有什么指导意义? 13.试述数据库物理设计的内容和步骤。 14.数据输入在实施阶段的重要性是什么?如何保证输入数据的正确性? 15.什么是数据库的再组织和重构造?为什么要进行数据库的再组织和重构造? 34 参考答案 1 数据库设计过程: (1)需求分析阶段:准确了解与分析用户需求(包括数据与处理),数据库设计的基础,最困难、最耗时。 (2)概念结构设计阶段:将需求分析得到的用户需求抽象为信息结构(即概念模型),数据库设计的关键,对用 户需求综合、归纳与抽象,形成独立于具体DBMS的概念模型。 (3)逻辑结构设计阶段:将概念结构转换为某个DBMS支持的数据模型并优化。 (4)物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。 (5)数据库实施阶段:设计人员运用DBMS提供的数据库语言及其宿主语言,根据逻辑设计和物理设计的结果 建立数据库,编写与调试应用程序,组织数据入库和试运行。 (6)数据库运行和维护阶段:数据库应用系统试运行后可投入正式运行,并在数据库系统运行过程中不断评价、 调整与修改。 2 数据库结构设计的不同阶段形成数据库的数据库模式: (1)在概念设计阶段形成独立于机器特点和各个DBMS产品的概念模式(E-R图); (2)在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,形成数据库逻辑模式(模式),并根据 用户处理的要求和安全性的考虑,在基本表的基础上建立必要的视图,形成数据的外模式; (3)在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。 3 (1)需求分析阶段的设计目标: 通过详细调查现实世界的处理对象,充分了解原系统工作概况,明确用户的各种需求,确定新系统的功能,并考 虑新系统的扩充性和变化性。 (2)调查的内容:“数据”和“处理”,获得用户对数据库的信息要求、处理要求以及安全性与完整性要求。 4 (1)数据字典的内容: ①数据项:不可再分的数据单位; ②数据结构:反映数据之间的组合关系,可以由若干个数据项或数据结构或数据项和数据结构混合组成; ③数据流:数据结构在系统内传输的路径; ④数据存储:数据结构停留或保存的地方,是数据流的来源和去向之一; ⑤处理过程:具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息。 (2)数据字典的作用: 数据字典是关于数据库中数据的描述,即元数据,不是数据本身,是进行详细的数据收集和数据分析所获得的主 要成果,在需求分析阶段建立,是概念设计的基础,在数据库设计过程中不断更新。 5 (1)数据库的概念结构的含义: 数据库的概念结构是将用户需求综合、归纳与抽象得到的信息结构(即独立于具体DBMS的概念模型)。 (2)数据库的概念模型的特点: ①真实、充分地反映现实世界,现实世界的一个真实模型,包括事物和事物间的联系,满足用户对数据的处理要 求; ②可用它和不熟悉计算机的用户交换意见; ③当应用环境和应用要求改变时容易对概念模型修改和扩充; ④可向其他数据模型转换(关系、网状、层次等模型)。 (3)数据库的概念结构的设计策略: ①自顶向下,首先定义全局概念结构的框架,然后逐步细化; ②自底向上,首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构; 35 ③逐步扩张,首先定义最重要的核心概念结构,然后向外扩充,以滚雪球方式逐步生成其他概念结构,直至总体 概念结构; ④混合策略,将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由 自底向上策略中设计的各局部概念结构。 6 概念模型中各术语的定义和解释: (1)实体:客观存在并可以相互区分的事物; (2)实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体; (3)实体集:同型实体的集合; (4)属性:表中的一列即为一个属性; (5)码:码是能唯一标识实体的属性,是整个实体集的性质,而不是单个实体的性质; (6)实体联系图:提供表示实体型、属性和联系的方法,用来描述现实世界的概念模型。 7 此学校的概念模型的E-R图如图7-1所示。 图7-1 学校的概念模型的E-R图 8 此工厂产品、零件、材料、仓库的概念模型的E-R图如图7-2所示。 36 图7-2 工厂产品、零件、材料、仓库的概念模型的E-R图 9 (1)数据库的逻辑结构设计的含义: 数据库的逻辑结构设计是把基本E-R图转换为符合选用DBMS产品支持的数据模型的逻辑结构。 (2)数据库的逻辑结构设计步骤: ①将概念结构(E-R图)转换为关系、网状、层次模型; ②将转换来的关系、网状、层次模型转换为特定DBMS支持的数据模型; ③对数据模型优化; ④设计用户子模式。 10 (1)习题7中的E-R图转换为关系模型: 系(系编号,系名,学校名); 班级(班级号,班级名,系编号); 教研室(教研室编号,教研室名,系编号); 学生(学号,姓名,学历,班级号,导师职工号); 课程(课程号,课程名); 教员(职工号,姓名,职称,教研室编号); 选课(学号,课程号,成绩)。 (2)习题8中的E-R图转换为关系模型: 产品(产品号,产品名,仓库号); 零件(零件号,零件名); 材料(材料号,材料名,类别,仓库号,存放量); 仓库(仓库号,仓库名); 产品组成(产品名,零件号,使用零件量); 零件储存(零件号,仓库号,存储量); 零件制造(零件号,材料号,使用材料量)。 11 习题7设计的关系模型中各个关系模式的候选码属于BCNF,不会产生更新异常现象。因为关系模式都只有一个 码且都是唯一决定的因素。 12 规范化理论对数据库设计的指导意义: 规范化理论为数据库设计人员判断关系模式的优劣提供理论标准,用于消除相应的数据冗余或联系冗余,指导优 37 化关系数据模型,预测模式可能出现的问题,为设计人员提供自动产生各种模式的算法工具,使数据库设计工作有严 格的理论基础。 13 (1)数据库物理设计的内容: 为一个给定的逻辑数据模型选取一个最适合应用环境和要求的物理结构,并选择存取方法、存储结构和评价物理 结构。 (2)数据库物理设计的步骤: ①确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构; ②评价对物理结构,评价的重点是时间效率和空间效率。 若评价结果满足原设计要求,则进入到物理实施阶段,否则,需要重新设计或修改物理结构,有时要返回逻辑设 计阶段修改数据模型。 14 (1)数据输入在实施阶段的重要性: ①数据的载入是数据库实施阶段重要的工作之一,且数据库是用来对数据进行存储、管理与应用的,因此在实施 阶段必须将原有系统中历史数据输入到数据库; ②一般数据库的数据量很大,且数据来源于部门中的不同单位,数据的组织方式、结构和格式与新设计的数据库 系统存在差距,组织数据录入就要将各类源数据从各局部应用中抽取出来,分类转换,最后综合成符合新设计的数据 库结构的形式,输入数据库。因此数据转换、组织入库的工作是相当费力费时的,具有较高的重要性。 (2)保证输入数据正确性的方法: 针对具体的应用环境设计一个数据录入子系统,由计算机完成数据入库任务。在源数据入库前要采用多种方法对 其检验,防止不正确的数据入库。 15 (1)数据库的再组织和重构造的含义: ①数据库的再组织是指按原设计要求重新安排存储位置、回收垃圾、减少指针链等,提高系统性能; ②数据库的重构造是指部分修改数据库的模式和内模式。 (2)进行数据库的再组织和重构造的原因: ①数据库运行一段时间后,记录不断增、删、改,会使数据库物理存储情况变坏,降低数据的存取效率,数据库 性能下降,需要DBA对数据库重组织; ②DBMS一般都提供用于数据重组织的实用程序,数据库应用环境常常发生变化,如增加新应用或新实体,取消 某些应用,有的实体与实体间的联系也发生变化等,使原有数据库设计不能满足新需求,需要调整数据库的模式和内 模式,需要数据库重构造。 38 第8章 数据库编程 课后习题 1.使用嵌入式SQL对学生-课程数据库中的表完成下述功能: (1)查询某一门课程的信息。要查询的课程由用户在程序运行过程中指定,放在主变量中。 (2)查询选修某一门课程的选课信息,要查询的课程号由用户在程序运行过程中指定,放在主变量中,然后根据 用户的要求修改其中某些记录的成绩字段。 2.对学生-课程数据库编写存储过程,完成下述功能: (1)统计离散数学的成绩分布情况,即按照各分数段统计人数。 (2)统计任意一门课的平均成绩。 (3)将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。 3.使用ODBC编写应用程序来对异构数据库进行各种数据操作。 配置两个不同的数据源,编写程序连接两个不同关系数据库管理系统的数据源,对异构数据库进行操作。例如, 将KingbaseES数据库的某个表中的数据转移到SQL Server数据库的表中。 39 参考答案 1 请自行根据教材相应ESQL语句完成本题。 2 (1)统计离散数学的成绩分布情况,即按照各分数段统计人数: CREATE PROCEDURE GradeStatistics(OUTA INT,OUTB INT,OUTC ONT,OUTD INT,OUTE INT) BEGIN SELECT COUNT(*) INTO OUTA FROM SC,Course WHERE = AND Cname='离散数学' AND Grade>=90 AND Grade<=100; SELECT COUNT(*) INTO OUTB FROM SC,Course WHERE = AND Cname='离散数学' AND Grade>=80 AND Grade<90; SELECT COUNT(*) INTO OUTC FROM SC,Course WHERE = AND Cname='离散数学' AND Grade>=70 AND Grade<80; SELECT COUNT(*) INTO OUTD FROM SC,Course WHERE = AND Cname='离散数学' AND Grade>=60 AND Grade<70; SELECT COUNT(*) INTO OUTE FROM SC,Course WHERE = AND Cname='离散数学' AND Grade<60; END; (2)统计任意一门课的平均成绩。 CREATE PROCEDURE AvgGrade(INCno CHAR(4),OUTAvgGrade FLOAT) BEGIN SELECT AVG(Grade) INTO OUTAvgGrade FROM SC WHERE Cno=INCno; END; (3)将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。 CREATE PROCEDURE ChangeGrade() BEGIN UPDATE SC SET Grade='A' WHERE Grade>=90 AND Grade<=100; UPDATE SC SET Grade='B' WHERE Grade>=80 AND Grade<90; UPDATE SC SET Grade='C' WHERE Grade>=70 AND Grade<80; UPDATE SC SET Grade='D' WHERE Grade>=60 AND Grade<70; 40 UPDATE SC SET Grade='E' WHERE Grade<60; END; 3 请自行根据教材相应ODBC编写应用程序完成本题。 41 第9章 关系查询处理和查询优化 课后习题 1.试述查询优化在关系数据库系统中的重要性和可能性。 2.假设关系R(A,B)和S(B,C,D)情况如下:R有20000个元组,S有1200个元组,一个块能装40个R 的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。 (1)R上没有索引,select*from R; (2)R中A为主码,A有3层B+树索引,select*from R where A=10; (3)嵌套循环连接R⋊S; (4)排序合并连接R⋊S,区分R与S在B属性上已经有序和无序两种情况。 3.对学生课程数据库,查询信息系学生选修了的所有课程名称。 SELECT Cname FROM Student,Course,SC WHERE = AND = AND ='IS'; 试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标 准语法树。 4.对于下面的数据库模式 Teacher(Tno,Tname,Tage,Tsex);Department(Dno,Dname,Tno);Work(Tno,Dno,Year,Salary) 假设Teacher的Tno属性、Department的Dno属性以及Work的Year属性上有B+树索引,说明下列查询语句的一 种较优的处理方法。 (1)select * from teacher where Tsex='女'; (2)select * from department where Dno<301; (3)select * from work where Year<>2000; (4)select * from work where Year>2000 and salary<5000; (5)select * from work where Year<2000 or salary<5000; 5.对于题4中的数据库模式,有如下的查询: select Tname from teacher,department,work where = and = and ='计算机系' and salary>5000; 画出语法树以及用关系代数表示的语法树,并对关系代数语法树进行优化,画出优化后的语法树。 6.试述关系数据库管理系统查询优化的一般准则。 7.试述关系数据库管理系统查询优化的一般步骤。 42 参考答案 1 (1)查询优化在关系数据库系统中的重要性: 关系系统的查询优化是RDBMS实现的关键技术和关系系统的优点,减轻用户选择存取路径的负担,提高查询效 率,且系统可以比用户程序的“优化”做得更好。 (2)查询优化在关系数据库系统中的可能性: ①优化器可以从数据字典中获取许多统计信息,进而做出正确的估算,选择有效的执行计划,而用户程序则难以 获得这些信息; ②若数据库的物理统计信息改变,则系统可以自动对查询进行重新优化以选择相适应的执行计划。在非关系系统 中必须重写程序,而重写程序在实际应用中往往是不太可能的; ③优化器可考虑数百种不同的执行计划,程序员一般只能考虑有限的几种可能性; ④优化器中包括的很多复杂的优化技术往往只有最好的程序员才能掌握,系统的自动优化相当于使所有人都拥有 这些优化技术。 2 (1)R上没有索引,select*from R: 需读写磁盘块500次。 (2)R中A为主码,A有3层B+树索引,select*from R where A=10: 需读写磁盘块3+1=4次。 (3)嵌套循环连接R⋊S: 无解,因为不知内存缓存区的块数和存放连接结果的块因子。 (4)排序合并连接R⋊S,区分R与S在B属性上已经有序和无序两种情况: 设存放连接结果的块因子是20: ①R与S在B属性上已经有序,则需读写磁盘块20000/40+1200/30+20000/20=1540次; ②R与S在B属性上无序,需加上排序代价,则需读写磁盘块2×540+(2×540×log 2 540)=10882次。 3 (1)学生课程数据库用关系代数表示的语法树如图9-1所示。 图9-1 关系代数语法树 (2)优化后的标准语法树如图9-2所示。 图9-2 优化后的语法树 43 4 (1)全表扫描; (2)全表扫描; (3)全表扫描; (4)索引扫描; (5)全表扫描。 5 (1)语法树如图9-3所示。 图9-3 语法树 (2)初始的关系代数语法树如图9-4所示。 图9-4 初始的关系代数语法树 (3)优化后的关系代数语法树,如图9-7所示。 44 图9-5 优化后的关系代数语法树 6 关系数据库管理系统查询优化的一般准则: (1)选择运算应尽可能先做; (2)投影运算和选择运算同时进行; (3)投影同其前或其后的双目运算结合; (4)某些选择同在它前面要执行的笛卡儿积结合成为一个连接运算; (5)找出公共子表达式。 7 关系数据库管理系统查询优化的一般步骤: (l)把查询转换成某种内部表示(通常使用语法树); (2)把语法树转换成标准(优化)形式,即利用优化算法,把原始的语法树转换成优化的形式; (3)选择低层的存取路径; (4)生成查询计划,并选择代价最小的查询计划。 45 第10章 数据库恢复技术 课后习题 1.试述事务的概念及事务的4个特性。恢复技术能保证事务的哪些特性? 2.为什么事务非正常结束时会影响数据库数据的正确性?请举例说明之。 3.登记日志文件时为什么必须先写日志文件,后写数据库? 4.考虑表10-1所示的日志记录: 表10-1 序号 1 2 3 4 5 6 7 8 9 10 1l 12 13 14 日志 T1:开始 T1:写A=10 T2:开始 T2:写B,B=9 T1:写C,C=11 T1:提交 T2:写C,C=13 T3;开始 T3:写A,A=8 T2:回滚 T3:写B,B=7 T4:开始 T3:提交 T4:写C,C=12 (1)如果系统故障发生在14之后,说明哪些事务需要重做,哪些事务需要回滚; (2)如果系统故障发生在10之后,说明哪些事务需要重做,哪些事务需要回滚; (3)如果系统故障发生在9之后,说明哪些事务需要重做,哪些事务需要回滚; (4)如果系统故障发生在7之后,说明哪些事务需要重做,哪些事务需要回滚。 5.考虑题4所示的日志记录,假设开始时A、B、C的值都是0: (1)如果系统故障发生在14之后,写出系统恢复后A、B、C的值; (2)如果系统故障发生在12之后,写出系统恢复后A、B、C的值; (3)如果系统故障发生在10之后,写出系统恢复后A、B、C的值; (4)如果系统故障发生在9之后,写出系统恢复后A、B、C的值; (5)如果系统故障发生在7之后,写出系统恢复后A、B、C的值; (6)如果系统故障发生在5之后,写出系统恢复后A、B、C的值。 6.针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复,如何进行系统故障的恢复,以及 如何进行介质故障的恢复。) 7.什么是检查点记录?检查点记录包括哪些内容? 8.具有检查点的恢复技术有什么优点?试举一个具体例子加以说明。 9.试述使用检查点方法进行恢复的步骤。 46 10.什么是数据库镜像?它有什么用途? 47 参考答案 1 (1)事务的概念及事务的4个特性: ①事务的概念: 事务是用户定义的一个数据库操作序列,是一个不可分割的工作单位。 ②事务的4个特性: a.原子性:事务是数据库的逻辑工作单位,事务中的操作要么都做或都不做; b.一致性:一致性状态是指数据库中只包含成功事务提交的结果,事务执行的结果必须是使数据库在各一致性状 态变间转变; c.隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对其他并发事务隔离,并 发执行的各个事务间不能互相干扰; d.持续性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对 其执行结果有任何影响。 (2)恢复技术能保证事务的原子性、一致性和持续性。 2 (1)事务非正常结束时会影响数据库数据的正确性的含义: 事务执行的结果必须是使数据库在各一致性状态变间转变。若数据库系统运行中发生故障,有些事务尚未完成就 被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,使数据库处于一种不正确的状态、不一 致的状态。 (2)举例说明: 某学校的学生管理系统中,由于某种原因,要把S位同学从1班调到2班,则定义事务T,T的操作:S1=S1-S, S2=S2+S。若T非正常终止时只做了第一个操作,则数据库处于不一致性状态,学校学生人数会减少S位。 3 登记日志文件时必须先写日志文件,后写数据库的原因: (1)把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这 两个操作间发生故障,即这两个写操作只完成一个; (2)若先写数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改;若先写日志,但没有 修改数据库,在恢复时只是多执行一次UNDO操作,并不会影响数据库的正确性。 4 考虑上图所示的日志记录: (1)如果系统故障发生在14之后,T 1 、T 2 、T 3 事务需要重做,T 4 事务需要回滚; (2)如果系统故障发生在10之后,T 1 、T 2 事务需要重做,T 3 事务需要回滚; (3)如果系统故障发生在9之后,T 1 事务需要重做,T 2 、T 3 事务需要回滚; (4)如果系统故障发生在7之后,T 1 事务需要重做,T 2 事务需要回滚。 5 考虑题4所示的日志记录,假设开始时A、B、C的值都是0: (1)如果系统故障发生在14之后,系统恢复后A、B、C的值是A=8,B=7,C=11; (2)如果系统故障发生在12之后,系统恢复后A、B、C的值是A=8,B=9,C=11; 若系统故障发生在12之后,需要重做的事务有:T 1 、T 2 ,需要回滚的事务有T 3 和T 4 。系统恢复后A=8,B=9, C=11。 (3)如果系统故障发生在10之后,系统恢复后A、B、C的值是A=10,B=9,C=11; (4)如果系统故障发生在9之后,系统恢复后A、B、C的值是A=10,B=9,C=13; (5)如果系统故障发生在7之后,写出系统恢复后A、B、C的值是A=10,B=9,C=11; (6)如果系统故障发生在5之后,写出系统恢复后A、B、C的值是A=10,B=9,C=0。 若系统故障发生在5之后,T 1 、T 2 、T 3 、T 4 均需要回滚。系统恢复后A=10,B=9,C=0。 48 6 针对不同的故障,给出的恢复的策略和方法: (1)事务故障的恢复是由系统自动完成,对用户透明。事务故障是指事务在运行至正常终止点前被终止,恢复子 系统应利用日志文件撤销此事务已对数据库进行的修改。恢复步骤: ①反向扫描文件日志,查找该事务的更新操作; ②对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库; ③继续反向扫描日志文件,做同样处理; ④如此处理下去,直至读到此事务的开始标记,完成该事务故障恢复。 (2)系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。系统故障的恢复操作是指撤销故障发 生时未完成的事务,重做已完成的事务。恢复步骤: ①正向扫描日志文件,找出在故障发生前已经提交的事务和故障发生时尚未完成的事务,分别将其事务标识记入 重做队列和撤销队列; ②对撤销队列中的各个事务进行撤销处理; ③对重做队列中的各个事务进行重做处理。 (3)介质故障的恢复方法是重装数据库,然后重做已完成的事务。恢复步骤: ①装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态; ②装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。 a.DBA需要介入介质故障的恢复,即重装最近转储的数据库副本和有关的各日志文件副本以及执行系统提供的 恢复命令; b.DBMS完成具体的恢复操作。 7 (1)检查点记录的含义: 检查点记录是在日志文件中增加的一类新的日志记录。 (2)检查点记录包括的内容: ①建立检查点时刻所有正在执行的事务清单; ②这些事务的最近一个日志记录的地址。 8 (1)具有检查点的恢复技术的优点: 在采用检查点技术前,利用日志技术进行数据库的恢复时需要从头扫描日志文件,而利用检查点技术只需从检查 点所处时间点起开始扫描日志,缩短扫描日志时间,改善恢复效率。 (2)具体例子说明: 当事务T1在一个检查点前提交,T1对数据库所做的修改已经写入数据库,则进行恢复处理时,没有必要对事务 T1执行REDO操作。 9 使用检查点方法进行恢复的步骤: (1)从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查 点记录; (2)由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST; 建立的事务队列包括UNDO-LIST(需要执行UNDO操作的事务集合)和REDO-LIST(需要执行REDO操作的事 务集合),把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂时为空。 (3)从检查点开始正向扫描日志文件; ①若有新开始的事务,则将其暂时放入UNDO-LIST队列; ②若有已提交的事务,则将其从UNDO-LIST队列移至REDO-LIST队列,直到日志文件结束。 (4)对UNDO-LIST中的每个事务执行UNDO操作,对REDO-LIST中的每个事务执行REDO操作。 10 49 (1)数据库镜像的含义: 数据库镜像是指根据DBA的要求,自动把整个数据库或者其中部分关键数据复制到另一个磁盘上。每当主数据库 更新时,DBMS自动把更新后的数据复制过去,自动保证镜像数据与主数据的一致性。 (2)数据库镜像的用途: ①用于数据库恢复:当出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数 据库的恢复,不需要关闭系统和重装数据库副本; ②提高数据库的可用性:当没有出现故障时,一个用户对某个数据加排他锁进行修改,其他用户可以读镜像数据 库上的数据,不必等待该用户释放锁。 50 第11章 并发控制 课后习题 1.在数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性? 2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 3.什么是封锁?基本的封锁类型有几种?试述它们的含义。 4.如何用封锁机制保证数据的一致性? 5.什么是活锁?试述活锁的产生原因和解决方法。 6.什么是死锁?请给出预防死锁的若干方法。 7.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁? 8.什么样的并发调度是正确的调度? 9.设T1、T2、T3是如下的三个事务,设A的初值为0。 T1:A:=A+2: T2:A:=A*2; T3:A:=A**2;(即A←A2) (1)若这三个事务允许并发执行,则有多少种可能的正确结果?请一一列举出来。 (2)请给出个可串行化的调度,并给出执行结果。 (3)请给出一个非串行化的调度,并给出执行结果。 (4)若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。 (5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。 10.今有三个事务的一个调度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),该调度是冲突可串行化的调度吗?为 什么? 11.试证明若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。 12.举例说明对并发事务的某个调度是可串行化的,而这些并发事务不一定遵守两段锁协议。 13.考虑如下的调度,说明这些调度集合之间的包含关系。 (1)正确的调度。 (2)可串行化的调度。 (3)遵循两阶段封锁(2PL)的调度。 (4)串行调度。 14.考虑T1和T2两个事务。 T1:R(A);R(B);B=A+B;W(B) T2:R(B);R(A);A=A+B;W(A) (1)改写T1和T2,增加加锁操作和解锁操作,并要求遵循两阶段封锁协议。 (2)说明T1和T2的执行是否会引起死锁,给出T1和T2的一个调度并说明之。 15.为什么要引进意向锁?意向锁的含义是什么? 51 16.试述常用的意向锁:IS锁、IX锁、SIX锁,给出这些锁的相容矩阵。 52 参考答案 1 (1)在数据库中要并发控制的原因: 数据库是共享资源,可供多个用户使用,通常多个事务同时运行,多个事务并发存取数据库会产生同时读取或修 改同一数据的情况,若对并发操作不加以控制可能会存取和存储不正确的数据,破坏数据库一致性,所以DBMS必须 提供并发控制机制。 (2)并发控制技术能保证事务的一致性和隔离性。 2 (1)并发操作可能会产生的数据不一致性类型: ①丢失修改:两个事务T 1 和T 2 读入同一数据并修改,T 2 提交的结果破坏T 1 提交的结果,导致T 1 的修改被丢失; ②不可重复读:事务T 1 读取数据后,事务T 2 执行更新操作,使T 1 无法再现前一次读取结果; ③读“脏”数据:事务T 1 修改某一数据,并将其写回磁盘,事务T 2 读取同一数据后,T 1 由于某种原因被撤销, 这时T 1 已修改过的数据恢复原值,T 2 读到的数据与数据库中数据不一致,则T 2 读到的数据是“脏”数据(不正确的 数据)。 (2)能避免各种不一致的情况的方法: 并发控制,用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,使事务的隔离性不被破坏, 避免造成数据不一致性。 3 (1)封锁的定义: 封锁是指事务T在对某个数据对象进行操作之前,先向系统发出请求,对其加锁。加锁后,事务T就对该数据对 象有控制权,在事务T释放锁之前,其他事务不能更新此数据对象。 (2)基本的封锁类型: 基本的封锁类型有两种。它们的含义: ①排他锁(X锁,写锁):若事务T对数据对象A加上X锁,则只允许T来读取和修改A,其他任何事务都不能 再对A加任何类型的锁,直到T释放A上的锁。保证其他事务在T释放A上的锁之前不能再读取和修改A; ②共享锁(S锁,读锁):若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再 对A加S锁,而不能加X锁,直到事务T释放A上的S锁。保证其他事务可以读A,但在事务T释放A上的S锁之 前不能对A做任何修改。 4 用封锁机制保证数据的一致性的操作: DBMS在对数据进行读、写操作前首先对该数据执行封锁操作,事务T 1 在对A进行修改之前先对A加X锁,当 T 2 请求对A加X锁时就被拒绝,T 2 只能等待T 1 释放A上的锁后才能获得对A的X锁,这时它读到的A是T 1 更新后 的值,再按此新的A值进行运算,进而不会丢失T 1 的更新。DBMS按照一定的封锁协议,控制并发操作,使多个并发 操作有序执行,避免丢失修改、不可重复读和读“脏”数据等数据不一致性,保证数据一致性。 5 (1)活锁的含义: 如果事务T 1 封锁了数据R,事务T 2 又请求封锁R,于是T 2 等待。T 3 也请求封锁R,当T 1 释放了R上的封锁之后 系统首先批准了T 3 的请求,T 2 仍然等待。然后T 4 请求封锁R,当T 3 释放了R上的封锁之后系统批准了T 4 的请求„„, T 2 有可能永远等待,这就是活锁。 (2)活锁的产生原因和解决方法: ①活锁的产生原因:当一系列封锁不能按照其先后顺序执行时,可能导致一些事务无限期地等待某个封锁,导致 活锁; ②活锁的解决方法:采用先来先服务的策略,当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先 后次序对事务排队,数据对象上的锁一旦释放,就批准申请队列中第一个事务获得锁。 53 6 (1)死锁的含义: 如果事务T 1 封锁了数据R 1 ,T 2 封锁了数据R 2 ,T 1 又请求封锁R 2 ,因T 2 已封锁了R 2 ,于是T 1 等待T 2 释放R 2 上 的锁。T 2 又申请封锁R 1 ,因T 1 已封锁了R 1 ,T 2 也只能等待T 1 释放R 1 上的锁。这样就出现了T 1 在等待T 2 ,而T 2 又在 等待T 1 的局面,T 1 和T 2 两个事务永远不能结束,形成死锁。 (2)预防死锁的若干方法: ①一次封锁法:要求每个事务必须一次将所用的所有数据全部加锁,否则就不能执行; ②顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按照这个顺序实行封锁。 7 (1)检测死锁发生的方法(选择其一即可): ①超时法:若一个事务的等待时间超过规定的时限,则认为发生死锁。 ②事务等待图:一个有向图G=(T,U),T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表 示事务等待的情况。若T 1 等待T 2 ,则T 1 ,T 2 间划一条有向边,从T 1 指向T 2 。事务等待图动态反映所有事务的等待情 况。若发现图中存在回路,则表示系统中出现死锁。并发控制子系统周期性生成事务等待图,并进行检测。 (2)发生死锁后解除死锁: 选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行。对撤销的 事务所执行的数据修改操作必须加以恢复。 8 是正确的调度的并发调度: 可串行化的调度是正确的调度。可串行化的调度是指多个事务的并发执行是正确的,当且仅当其结果与按某一次 序串行执行它们时的结果相同的调度策略。 9 (1)若这三个事务允许并发执行,则可能的正确结果的种数: A的可能的正确结果有4种,分别是2、4、8、16,因为串行执行次序有T 1 T 2 T 3 、T 1 T 3 T 2 、T 2 T 1 T 3 、T 2 T 3 T 1 、T 3 T 1 T 2 、 T 3 T 2 T 1 ,对应的执行结果分别是16、8、4、2、4、2。 (2)可串行化的调度如图11-1所示。 图11-1 可串行化的调度 执行结果:A为16。 (3)非串行化的调度如图11-2所示。 54 图11-2 非串行化的调度 执行结果:A为0。 (4)若这3个事务都遵守两段锁协议,不产生死锁的可串行化调度如图11-3所示。 T1 T2 T3 Slock A Y=A=0 Xlock A A=Y+2 Slock A 写回A(=2) 等待 Unlock A 等待 Y=A=2 Xlock A Unlock A 等待 Slock A A=Y*2 等待 写回A(=4) 等待 Unlock A 等待 Y=A=4 Unlock A Xlock A A=Y**2 写回A(=16) Unlock A Unlock A 图11-3 不产生死锁的可串行化调度 (5)若这3个事务都遵守两段锁协议,产生死锁的调度如图11-4所示。 T1 T2 T3 Slock A Y=A=0 Xlock A 等待 Slock A Y=A=0 Xlock A 等待 55 Slock A Y=A=0 Xlock A 等待 图11-4 产生死锁的调度 10 该调度是冲突可串行化的调度。 原因: Sc1=r 3 (B)r 1 (A)w 3 (B)r 2 (B)r 2 (A)w 2 (B)r 1 (B)w 1 (A) 交换r 1 (A)和w 3 (B)得到r 3 (B)w 3 (B)r 1 (A)r 2 (B)r 2 (A)w 2 (B)r 1 (B)w 1 (A); 再交换r 1 (A)和r 2 (B)r 2 (A)w 2 (B)得到Sc2=r 3 (B)w 3 (B)r 2 (B)r 2 (A)w 2 (B)r 1 (A)r 1 (B)w 1 (A)。 因为Sc2是一个串行调度,所以r 3 (B)r 1 (A)w 3 (B)r 2 (B)r 2 (A)w 2 (B)r 1 (B)w 1 (A)是冲突可串行化调度。 11 若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的: 首先以两个并发事务T1和T2为例,存在多个并发事务的情形可以类推。 根据可串行化定义可知,事务不可串行化只可能发生的情况: 事务T1写某数据对象A,T2读或写A; 事务T1读或写某数据对象A,T2写A。 设T1和T2访问A的公共对象是{A 1 ,A 2 ,„,A n },考虑一般性,假设公共对象中X={A 1 ,A 2 ,„,A i }符合①情况;Y ={A i+1 ,„,A n }符合②情况。 对 x∈X,T1需要Xlock x;① T2需要Slock x或Xlock x。② (1)若操作①先执行,则事务T1获得锁,T2等待; 由于遵守2PL协议,事务T1在成功获得X和Y中全部对象及非潜在冲突对象的锁后,才会释放锁。这时若存在 w∈X或Y,T2已获得w的锁,则会出现死锁;否则,T1对X、Y中对象全部处理完毕后,T 2 才能执行。即按T 1 、 T 2 顺序串行执行。根据可串行化定义可知,T 1 和T 2 的调度可串行化。 (2)操作②先执行的情况与(1)对称。 若并发事务遵守2PL协议,则不发生死锁情况下,对这些事务并发调度一定可串行化。 12 对并发事务的某个调度是可串行化的,而这些并发事务不一定遵守两段锁协议的举例说明如图11-5所示。 T1 T2 Slock A 读A=1 X=A Unlock A Xlock B B=X+3 写回B=4 Unlock B 56 Slock B 等待 等待 等待 等待 Slock B 读B=4 Y=B Unlock B Xlock A A=Y+2 写回A=6 Unlock A 图11-5 举例说明 13 以上调度集合之间的包含关系: 遵循两阶段封锁(2PL)的调度⊂可串行化得调度⊂串行调度⊂正确的调度。 14 (1)遵循两阶段封锁协议,增加加锁操作和解锁操作,改写T1和T2: T1:Slock A;R(A);R(B);B=A+B;W(B);Unlock A;Unlock B T2:Slock B;Xlock A;R(B);R(A);A=A+B;W(A);Unlock B;Unlock A (2)增加加锁和解锁操作后的T1和T2事务可串行执行,不会引起死锁。T1和T2的一个调度如图11-6所示。 T1 T2 Slock A Xlock B R(A) Slock B R(B) 等待 B=A+B 等待 W(B) 等待 Unlock A 等待 Unlock B Xlock A R(B) R(A) A=A+B Unlock B Unlock A 图11-6 T1和T2的一个调度 15 (1)引进意向锁的原因: 在多粒度封锁方法中一个数据对象可能以显式封锁和隐式封锁方式加锁,系统在对某数据对象加锁时要检查该数 据对象上有无显式封锁与之冲突,要检查其所有上级结点,检查本事务的显式封锁是否与该数据对象上的隐式封锁冲 突,要检查其所有下级结点,检查上面的显式封锁是否与本事务的隐式封锁冲突,此检查方法效率很低,所以引进意 向锁提高封锁子系统效率。 (2)意向锁的含义: 若对一个结点加意向锁,则说明其下层结点正在被加锁;对任一结点加锁时,必须先对其上层结点加意向锁。 16 (1)常用的意向锁: ①IS锁:如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁; ②IX锁:如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁; ③SIX锁:如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX。 (2)锁的相容矩阵(列出以上三种意向锁和其他锁相容关系)如表11-4所示。 表11-4 锁的相容矩阵 57 Y表示相容,N表示不相容。 58 第12章 数据库管理系统 课后习题 1.试述数据库管理系统的基本功能。 2.关系数据库管理系统的工作过程是什么?给出数据库管理系统插入一个记录的活动过程,画出活动过程示意图。 3.关系数据库管理系统的语言处理层是如何处理一个数据定义语言语句的? 4.试述关系数据库管理系统的语言处理层处理一个数据操纵语言语句的大致过程。 5.什么是处理数据操纵语言语句的解释方法和预编译方法?试述二者的区别、联系,比较各自的优缺点。 6.试述数据存取层主要的子系统及其功能。 7.在操作系统中也有并发控制问题,为什么数据库管理系统还要并发控制机制? 8.试比较数据库管理系统与操作系统的封锁技术。 9.数据库管理系统中为什么要设置系统缓冲区? 10.数据库中要存储和管理的数据内容包括哪些方面? *11.请给出缓冲区管理中的一个淘汰算法,并上机实现(提示:首先需要设计缓冲区的数据结构,然后写出算法)。 *12.请写出对一个文件按某个属性的排序算法(设该文件的记录是定长的),并上机实现。若要按多个属性排序, 能否写出改进的算法? *13.请给出B+树文件的创建和维护(增、删、改)算法并上机实现(提示:设B+树的叶结点上仅存放索引项(码 值,TID),首先要设计索引项,B+树叶页和非叶页的数据结构,然后写出算法)。 59 参考答案 1 数据库管理系统的基本功能: (1)数据库定义和创建:用数据定义语言定义和创建数据库模式、外模式、内模式等数据库对象,进行安全保密 定义(如用户口令、级别、角色、存取权限)、数据库的完整性定义和存取路径的定义(如索引); (2)数据组织、存储和管理:分类组织、存储和管理数据字典、用户数据、存取路径等数据,确定在存储器上组 织数据的文件结构和存取方式,实现数据间联系; (3)数据存取:提供用户对数据库数据的检索、更新(插入、修改和删除)操作功能; (4)数据库事务管理和运行管理:提供多用户环境下事务的管理和自动恢复、并发控制和死锁检测(或死锁防止)、 安全性检查和存取控制、完整性检查和执行和组织管理运行日志功能; (5)数据库的建立和维护:提供数据库初始建立、数据转换、数据库转储和恢复、数据库重组织和重构造以及性 能监测分析功能; (6)其他功能:DBMS与网络中其他软件系统的通信功能、一个DBMS与另一个DBMS或文件系统的数据转换 功能、异构数据库间的互访和互操作功能。 2 (1)关系数据库管理系统的工作过程: RDBMS是复杂而有序的整体,各层模块互相配合、互相依赖共同完成对数据库操纵。 (2)给出数据库管理系统插入一个记录的活动过程和活动过程示意图如图12-1所示。 ①用户通过应用程序向RDBMS发出调用数据库数据的INSERT命令,并在命令中给出一个关系名和插入的元组 值; ②RDBMS先对命令进行语法检查、语义检查和用户存取权限检查,即RDBMS读取数据字典,检查是否存在该关 系及相应的字段、值的数据类型是否正确、该用户是否具有该关系上执行INSERT操作的权限。若通过检查则执行 INSERT命令,否则拒绝执行,返回错误提示信息; ③RDBMS查看存储模式,找到新记录所应插入的位置和相应的页面P; ④RDBMS在系统缓冲区中找到一个空页; ⑤RDBMS根据步骤③的执行结果,向操作系统发出读取物理页面P的命令; ⑥操作系统执行读操作,将数据页P读入系统缓冲区中的空白页处; ⑦RDBMS根据插入命令和数据字典的内容将数据转化成内部记录的格式; ⑧RDBMS将数据记录写入系统缓冲区的页面P中; ⑨RDBMS将执行事务的提交,把状态信息、例外状态信息等返回给应用程序。(未考虑多用户并发控制的问题) 图12-1 活动过程示意图 3 关系数据库管理系统的语言处理层处理一个数据定义语言语句的操作步骤: (1)语言处理层进行语法分析; (2)把数据定义语句翻译成内部表示,并将其存储在系统的数据字典中。 60 4 关系数据库管理系统的语言处理层处理一个数据操纵语言语句的大致过程: (1)词法分析和语法分析数据操纵语句,把外部关系名、属性名转换为内部名; (2)根据数据字典内容进行查询检查,即审核用户的存取权限和完整性检查; (3)查询优化。 5 (1)处理数据操纵语言语句的解释方法和预编译方法的含义 ①解释方法:直到执行前,数据库数据操纵语句都以原始字符串的形式保存;当执行到数据操纵语句时,利用解 释程序去完成全部过程,同时予以执行。此方法通过尽量推迟束缚过程来赢得数据独立性。 ②预编译方法:用户提交数据操纵语句后,运行前对它进行翻译处理,保存产生的可执行代码。运行时,取出保 存的可执行代码加以执行。 (2)两者的区别、联系和优缺点: ①两者的区别 a.预编译方法适用范围较广,而解释方法主要应用于交互式SQL; b.解释方法数据独立性较高,预处理方法数据独立性和编译效率较高。 ②两者的联系 a.两者是处理数据操纵语言语句(束缚过程)的基本翻译方法; b.数据库技术的发展使解释方法正逐步被预编译方法取代。 ③解释方法优缺点 a.优点:灵活、应变性强,甚至能适应在解释过程中发生的数据结构、存储结构等的变化,数据独立性较高。 b.缺点:每次执行一个数据操纵语句要执行所有步骤,开销很大,效率比较低;主要用于交互式SQL。 ④预编译方法优缺点 a.优点:自动重编译技术使预编译方法拥有编译时进行束缚带来的高效率和具备执行时束缚带来的数据独立性。 b.缺点:预编译方法的问题是应用规划失效(束缚过程中优化依据的条件在运行时不存在、数据库结构被修改、 存取路径改变),解决方法是重编译。 6 数据库存取层主要的子系统及其功能: (1)记录存取、事务管理子系统:记录存取子系统提供在某逻辑存取路径按某属性值直接取和顺序取元组操作; 事务管理子系统提供事务开始、提交和回滚操作; (2)日志登记子系统:把事务和数据库的每个操作存入日志文件,事务或系统发生故障时,RDBMS利用日志文 件恢复事务和数据库; (3)控制信息管理模块:负责在数据区(内存)登记记录类型、存取路径的说明信息(取自数据字典)和控制信息; (4)排序/合并子系统:提供输出有序结果、数据预处理、动态建立索引结构和减少数据块存取次数功能; (5)存取路径维护子系统:对数据执行更新操作(插入、删除、修改)并维护相应存取路径; (6)封锁子系统:完成并发控制功能。 7 数据库管理系统要并发控制机制的原因: ①并发控制机制的责任和任务是保证事务的隔离性和一致性,DBMS对并发操作正确调度; ②操作系统提供的封锁机制和DBMS的封锁机制在封锁对象、封锁对象的状态、封锁的粒度及封锁的类型上存在 差别,不能直接应用于DBMS,所以DBMS必须重新设计并发控制机制满足其复杂的封锁需求。 8 数据库管理系统与操作系统的封锁技术的比较: (1)DBMS封锁技术比操作系统封锁内容更加丰富,技术更加复杂。 (2)具体比较 a.操作系统封锁对象(系统资源)单一,封锁对象的状态是静态、确定、数量不变的,封锁的粒度不能改变,封 锁的类型单一(排他锁)。 61 b.DBMS封锁对象多样,包括数据库中各种数据对象,封锁对象的状态是动态、不确定的,封锁的粒度可变、加 到的数据单位可大可小,封锁的类型多样(共享锁、排他锁等)。 9 数据库管理系统中设置系统缓冲区的原因: (1)保证DBMS设备独立性; (2)提高存取效率。 10 数据库中要存储和管理的数据内容: (1)数据描述(外模式、模式、内模式); (2)数据本身; (3)数据间联系; (4)存取路径。 *11 借助队列实现LRU页面替换算法作为缓冲区管理的淘汰算法。 (1)设计缓冲区的数据结构: 缓冲区的数据结构包括LRU的结构体和队列的结构体。 (2)算法: 算法的关键是判断待入队元素是否与队中元素相同,若待入队元素与队中元素不同,替换元素后将次数置为0;若 待入队元素与队中元素相同,将次数置为0。 *12 (1)对一个文件按某个属性的排序算法: 算法是使用败者树实现多路归并的外部排序,对文件进行归并操作,沿从叶子结点到根结点的路径调整败者树进 行排序。 (2)若要按多个属性排序,改进的算法: 可采用基数排序算法。 ①最高位优先(Most Significant Digit first)法,简称MSD法。先按k1排序分组,同一组中记录,关键码k1相等,再对 各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分组,直到按最次位关键码kd对各子组排序后。再 将各组连接起来,便得到一个有序序列。 ②最低位优先(Least Significant Digit first)法,简称LSD法:先从kd开始排序,再对kd-1进行排序,依次重复,直到 对k1排序后便得到一个有序序列。 *13 B+树文件的创建和维护(增、删、改)算法: 算法的关键是用不同的函数对B+树文件实现根结点和叶子结点的定义和更新操作。 62 第13章 数据库技术发展概述 课后习题 1.请阅读本章参考文献。 2.试述数据库技术的发展过程。数据库技术发展的特点是什么? 3.试述数据模型在数据库系统发展中的作用和地位。 4.请用实例阐述数据库技术与其他计算机技术相结合的成果。 63 参考答案 1 请自行阅读教材所列文献。 2 (1)数据库技术的发展过程: ①第一代数据库系统,支持格式化模型(层次模型和网状模型); ②第二代数据库系统,支持关系数据模型; ③新一代数据库系统,支持更丰富的数据模型。 (2)数据库技术发展的特点: ①数据模型的发展 数据模型是数据库系统的核心和基础,数据模型的发展是数据库发展的集中表现。 ②数据库技术与相关技术相结合 数据库技术与其他计算机技术相结合是数据库技术的显著特征。结合成果包括分布式数据库系统、并行数据库系 统、知识库系统和主动数据库系统、多媒体数据库系统、模糊数据库系统、移动数据库系统、Web数据库。 ③面向应用领域的数据库新技术 数据库新技术及其主要面向的应用领域包括数据仓库(EIS&DSS)、工程数据库(CAD/CAM/CIM)、统计数据 库(计划、统计)和空间数据库(地理信息系统)。 3 数据模型在数据库系统发展中的作用和地位: (1)数据模型是数据库系统的核心和基础; (2)数据模型的发展是数据库发展的集中表现。 4 数据库技术与其他计算机技术相结合的成果: (1)分布式数据库系统,数据库技术与分布处理技术相结合; (2)并行数据库系统,数据库技术与并行处理技术相结合; (3)知识库系统和主动数据库系统,数据库技术与人工智能技术相结合; (4)多媒体数据库系统,数据库技术与多媒体技术相结合; (5)模糊数据库系统,数据库技术与模糊技术相结合; (6)移动数据库系统,数据库技术与移动通信技术相结合; (7)Web数据库,数据库技术与Web技术相结合。 64 第14章 大数据管理 课后习题 1.请阅读本章参考文献。 2.什么是大数据,试述大数据的基本特征。 3.分析传统RDBMS在大数据时代的局限性。 4.分析传统RDBMS的哪些技术应该在非关系数据管理系统中继承和发展。 5.什么是NoSQL,试述NoSQL系统在数据库发展中的作用。 6.什么是NewSQL,查询相关资料,分析NewSQL是如何融合NoSQL和RDBMS两者的优势的。 7.描述MapReduce的计算过程。分析MapReduce技术作为大数据分析平台的优势和不足。 65 参考答案 1 请自行阅读教材所列文献。 2 (1)大数据的含义: 大数据是指无法在可容忍的时间内用现有IT技术和软硬件工具对其进行感知、获取、管理、处理和服务的数据集 合。 (2)大数据的基本特征: ①巨量:大数据的首要特征是数据量巨大,且在持续、急剧膨胀; ②多样:通常是指异构(结构化、非结构化、半结构化)的数据类型、不同数据表示和语义解释多样; ③快变:也称实时性,数据到达速度很快以及实时响应(处理时间很短或要求响应速度很快); ④价值:包括经济价值、产业价值和科学价值,是潜在的、巨大的,是大数据最重要的特点和大数据的魅力所在。 3 传统RDBMS在大数据时代的局限性: 传统RDBMS的扩展性存在局限性,不能胜任大数据分析的需求,不能达到高度的一致性和正确性,无法满足超 大数据的分析需求,关系数据库在大数据时代丧失互联网搜索机会。 4 传统RDBMS应该在非关系数据管理系统中继承和发展的技术: 一致性、ACID特性。 5 (1)NoSQL的含义: NoSQL是以互联网大数据应用为背景发展起来的分布式数据管理系统,两种解释:Non-Relational,即非关系数据 库;Not Only SQL,即数据管理技术不只是SQL。 (2)NoSQL系统在数据库发展中的作用: ①采用极其简单的数据模型提高存储能力和并发读写能力,支持简单的查询操作; ②划分数据,备份各数据分区,应对结点可能失败,提高系统可用性; ③采用横向扩展方式,通过大量结点的并行处理获得高性能。 6 (1)NewSQL的含义: NewSQL系统是融合NoSQL系统和传统数据库事务管理功能的新型数据库系统。 (2)NewSQL融合NoSQL和RDBMS两者的优势的过程: NewSQL结合SQL和NoSQL的优势,提出串行执行事务,改进体系架构,充分利用计算机硬件的新技术、新结 构,研究与开发若干创新的实现技术。 7 (1)MapReduce的计算过程: ①Map阶段 对输入的数据源分块,交给Map任务执行Map函数,并将分类的数据写入本地硬盘; ②Reduce阶段 Reduce函数将Map阶段相同key值的中间结果用相同的Reduce结点合并处理,将结果写入本地硬盘。 (2)MapReduce技术作为大数据分析平台的优势: ①数据处理接口简单、强大; ②大规模并行执行、容错及负载均衡等实现细节隐藏。 (3)MapReduce技术作为大数据分析平台的不足: 66 ①基于其应用软件较少,要用户需自行开发许多数据分析功能,增加使用成本; ②程序与数据缺乏独立性; ③在同等硬件条件下,性能远低于并行数据库; ④处理连接性能不尽如人意。 67 第15章 内存数据库系统 课后习题 1.内存数据库和磁盘数据库有什么区别? 2.内存数据库的特点有哪些? 3.试述内存数据库和硬件的相关性。哪些硬件技术影响内存数据库的性能? 4.大数据时代对内存数据库提出了哪些挑战? 68 参考答案 1 内存数据库与磁盘数据库的区别,如表15-3所示。 表15-3 内存数据库与磁盘数据库的区别 常规数据存储设备 后备数据存储设备 数据缓冲区 数据组织、存储访问模型 和处理模型的设计标准 处理器数据访问方式 I/O代价 存储和访问算法基础 算法和代码效率 数据库性能 2 内存数据库的特点: (1)高吞吐率和低访问延迟:数据可直接被处理器访问,不需要磁盘数据库的缓冲区机制; (2)并行处理能力:多通道存储器技术,理论上每增加一条通道,数据发送性能相较于单通道而言会增加一倍。 目前为四通道技术内存访问机制; (3)硬件相关性:内存数据库的性能主要受到多核处理器、高性能存储器、高速连通硬件特性的直接影响。 3 (1)内存数据库和硬件的相关性: ①内存数据库的性能受硬件特性的直接影响,计算机硬件技术的发展主要体现在高端计算设备和存储设备上,提 升计算能力和存储性能,有助于提升内存吞吐率需求(众核技术)、提高内存持久存储能力(PCM技术)或为内存提 供二级存储(SSD技术); ②硬件技术在多核及众核处理器、高性能存储和高速网络等方面的发展为内存数据库提供高并行处理、高性能存 储访问以及高速连通的硬件平台; ③内存数据库的设计应充分考虑并有效利用由新硬件技术带来的功能扩展和性能提高。 (2)影响内存数据库的性能的硬件技术: 多核处理器、众核协处理器、通用GPU、PCM存储、固态硬盘存储等硬件技术。 4 大数据时代对内存数据库提出的挑战: (1)查询处理与优化 ①cache优化技术:cache管理是硬件级技术,硬件平台和参数不断升级,与硬件结构紧密相关的hardware-conscious 和hardware-oblivious优化技术和研究技术路线出现障碍; ②面向多核的查询处理技术:事务型内存数据库的挑战是将事务串行化,简化并发控制机制,提高内存数据库代 码执行效率,串行处理性能满足高吞吐性能需求;分析型内存数据库的挑战是将计算最大化并行,提高多核处理器的 并行计算效率,提高应对内存大数据实时分析处理的性能需求; ③面向众核的查询处理技术:数据库发展新趋势是多核/众核计算为核心的内存数据库设计思想。 (2)并发与恢复 相近查询的并发处理的优化技术核心是通过对大数据表的共享扫描减少并发查询时独立大表扫描产生的cache缺 失,主要通过查询分组以及查询操作符批处理技术实现共享扫描基础上的高并发查询处理;系统崩溃时,从备份和日 志中尽快恢复数据是恢复的挑战。 69 内存数据库 内存 磁盘 - 内存特性 直接访问内存数据 灵活多样 无(数据常驻内存) 内存访问特性 高 高(优化的存储结构、索引 结构和操作算法优化后) 磁盘数据库 磁盘 磁盘阵列或磁带机 内存 硬盘访问特性 间接通过缓冲区访问磁盘数据 高 磁盘I/O 低 低 70 第16章 数据仓库与联机分析处理技术 课后习题 1.数据仓库的4个基本特征是什么? 2.操作型数据和分析型数据的主要区别是什么? 3.在基于关系数据库的联机分析处理实现中,举例说明如何利用关系数据库的二维表来表达多维概念。 4.数据挖掘和传统的分析方法的主要不同是什么? 5.大数据时代传统的数据仓库系统面临哪些问题?如何应对这些挑战? 71 参考答案 1 数据仓库的4个基本特征: (1)主题与面向主题:面向主题的数据组织方式是根据分析要求将数据组织成一个完备的分析领域(主题域,具 有独立性和完备性特点); (2)数据仓库是集成的:数据仓库的数据是从原有分散的数据库数据中抽取来的,因此数据在进入数据仓库之前, 必然要经过加工与集成,统一与综合; (3)数据仓库是不可更新的:数据仓库主要供决策分析之用,涉及的数据操作主要是数据查询,一般情况下不进 行修改操作,是用户进行分析处理时不进行数据更新,不是数据仓库整个生命周期数据不变; (4)数据仓库是随时间变化的:随时间变化不断增加新的数据内容;随时间变化不断删去旧的数据内容;数据的 码键包含的时间项标明数据的历史时期。 2 操作型数据和分析型数据的主要区别: (1)操作型数据是细节的,分析型数据是综合的或提炼的; (2)操作型数据在存取瞬间是准确的,分析型数据代表过去的数据; (3)操作型数据可更新,分析型数据不可更新; (4)操作型数据操作需求事先可知道,分析型数据操作需求事先不知道; (5)操作型数据生命周期符合软件开发生命周期,分析型数据生命周期完全不同; (6)操作型数据对性能要求高,分析型数据对性能要求宽松; (7)操作型数据一个时刻操作一元组,分析型数据一个时刻操作一集合; (8)操作型数据是事物驱动的,分析型数据是分析驱动的; (9)操作型数据是面向应用的,分析型数据是面向分析的; (10)操作型数据一次操作数据量小,分析型数据一次操作数据量大; (11)操作型数据支持日常操作,分析型数据支持管理决策需求。 3 在基于关系数据库的联机分析处理实现中,利用关系数据库的二维表来表达多维概念的举例说明: 星形模式的事实表是选课事实表,维表包括学生维表、教师维表和课程维表如图16-3所示 图16-3 星形模式 对星状模式中的维表按层次进一步细化:学生维表可按年级和系分层;时间维表可按系和职称分层;课程维表可 按课程性质分类聚集。雪花模式如图16-4所示。 72 图16-4 雪花模式 4 数据挖掘和传统的分析方法的主要不同: (1)数据挖掘是在没有明确假设前提下挖掘信息,发现知识。数据挖掘技术基于大量来自实际应用的数据,自动 分析、归纳推理,发掘数据间潜在模式; (2)传统DSS系统通常是在某个假设前提下,通过数据查询和分析验证或否定假设。 5 (1)大数据时代传统的数据仓库系统面临的问题: ①数据移动代价过高; ②不能快速适应变化。 (2)应对以上挑战的措施: 为应对这些挑战,新型数据仓库解决方案需具备的重要特性: (1)高度可扩展,横向大规模可扩展,大规模并行处理; (2)高性能,快速响应复杂查询与分析; (3)高度容错性,查询失败,只需重做部分工作; (4)支持异构环境,对硬件平台一致性要求不高,适应能力强; (5)较低的分析延迟,业务需求变化,能快速反应; (6)易用且开放接口,能方便查询和处理复杂分析; (7)较低成本,较高的性价比; (8)向下兼容性,支持传统的BI工具。 73
版权声明:本文标题:数据库系统概论王珊第5版第五版教材课后习题答案详解pdf 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1723091319a757208.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论