?
作业习题
《数据库系统概论》课程
部分习题及参考答案
第一章 绪论(教材 41页)
1.试述数据、数据库、数据库系统、数据库管理系统的概念。
数据:
描述事物的符号记录称为数据。数据的种类有文字、图形、图象、声音、正文等等。数据与其语义是不可分的。
数据库:
数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据库系统:
数据库系统( DBS)是指在计算机系统中引入数据库后的系统构成。数据库系统由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
数据库管理系统:
数据库管理系统 (DBMS)是位于用户与操作系统之间的一层数据管理软件。用于科学地组织和存储数据、高效地获取和维护数据。DBMS主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
2.使用数据库系统有什么好处?
使用数据库系统的好处是由数据库管理系统的特点或优点决定的。
使用数据库系统的好处很多,例如可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护的负担等。
为什么有这些好处,可以结合第 5题来回答。
使用数据库系统可以大大提高应用开发的效率。因为在数据库系统中应用程序不必考虑数据的定义、存储和数据存取的具体路径,这些工作都由 DBMS来完成。
此外,当应用逻辑改变,数据的逻辑结构需要改变时,由于数据库系统提供了数据与程序之间的独立性。数据逻辑结构的改变是 DBA的责任,开发人员不必修改应用程序,或者只需要修改很少的应用程序。从而既简化了应用程序的编制,又大大减少了应用程序的维护和修改。
使用数据库系统可以减轻数据库系统管理人员维护系统的负担。因为 DBMS在数据库建立、运用和维护时对数据库进行统一的管理和控制,包括数据的完整性、安全性,多用户并发控制,故障恢复等等都由DBMS执行。
总之,使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余,可以提高数据的利用率和一致性,又有利于应用程序的开发和维护。
3.试述文件系统与数据库系统的区别和联系。
文件系统与数据库系统的区别:
文件系统面向某一应用程序,共享性差、冗余度大,独立性差,纪录内有结构、整体无结构,应用程序自己控制。
数据库系统面向现实世界,共享性高、冗余度小,具有高度的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力。
文件系统与数据库系统的联系是:
文件系统与数据库系统都是计算机系统中管理数据的软件。
5.试述数据库系统的特点。
数据库系统的主要特点有:
一、数据结构化
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
二、数据的共享性高,冗余度低,易扩充
数据库的数据不再面向某个应用而是面向整个系统,因此可以被多个用户、多个应用、用多种不同的语言共享使用。由于数据面向整个系统,是有结构的数据,不仅可以被多个应用共享使用,而且容易增加新的应用,这就使得数据库系统弹性大,易于扩充。
三、数据独立性高
数据独立性包括数据的物理独立性和数据的逻辑独立性。
数据库管理系统的模式结构和二级映象功能保证了数据库中的数据具有很高的物理独立性和逻辑独立性。
四、数据由 DBMS统一管理和控制
数据库的共享是并发的共享,即多个用户可以同时存取数据库中的数据甚至可以同时存取数据库中同一个数据。为此, DBMS必须提供统一的数据控制功能,包括数据的安全性保护,数据的完整性检查,并发控制和数据库恢复。
6.数据库管理系统的主要功能有哪些?
①数据库定义功能;
②数据存取功能;
③数据库运行管理;
④数据库的建立和维护功能。
7.试述数据模型的概念、数据模型的作用和数据模型的三个要素。
数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。
一般地讲,数据模型是严格定义的概念的集合。这些概念精确地描述系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。
①数据结构:是所研究的对象类型的集合,是对系统的静态特性的描述。
②数据操作:是指对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。
③数据的约束条件:是完整性规则的集合,完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。
8.试述概念模型的作用。
概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
9.定义并解释概念模型中以下术语:
实体,实体型,实体集,属性,码,实体联系图( E-R图)
实体:客观存在并可以相互区分的事物叫实体。
实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
实体集:同型实体的集合称为实体集。
属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。
码:唯一标识实体的属性集称为码。
实体联系图: E-R图提供了表示实体型、属性和联系的方法:
· 实体型:用矩形表示,矩形框内写明实体名。
· 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。
·联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型( 1 : 1,1 : n或m : n)。
第二章 关系数据库 (教材81页)
1.试述关系模型的三个组成部分。
答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2.试述关系数据语言的特点和分类。
答:关系数据语言可以分为三类:
关系代数语言 例如 ISBL
关系演算语言 (元组关系演算语言 例如 APLHA,QUEL 和 域关系演算语言 例如QBE)
具有关系代数和关系演算双重特点的语言 例如 SQL
这些关系数据语言的共同特点是,具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
3. 定义并理解下列术语,说明它们之间的联系与区别:
( 1)域,关系,元组,属性
答:
域:域是一组具有相同数据类型的值的集合。
关系:在域 D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为
R(D1,D2,…,Dn)
元组:关系中的每个元素是关系中的元组。
属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性( Attribute)。
( 2)主码,候选码,外部码
答:
候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码( Candidate key)。
主码:若一个关系有多个候选码,则选定其中一个为主码( Primary key)。
外部码:设 F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外部码(Foreign key),简称外码。
基本关系 R称为参照关系(Referencing relation),基本关系S称为被参照关系(Referenced relation)或目标关系(Target relation)。关系R和S可以是相同的关系。
(3)关系模式,关系,关系数据库
关系模式:关系的描述称为关系模式( Relation Schema)。它可以形式化地表示为:
R(U,D,dom,F)
其中 R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。
关系:在域 D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为
R(D1,D2,…,Dn)
关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。
关系数据库:关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
4.试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?
答:
关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。参见教材
在参照完整性中,外部码属性的值可以为空,它表示该属性的值尚未确定。但前提条件是该外部码属性不是其所在关系的主属性。
例如,在下面的 “学生”表中,“专业号”是一个外部码,不是学生表的主属性,可以为空。其语义是,该学生的专业尚未确定。
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
而在下面的 “选修”表中的“课程号”虽然也是一个外部码属性,但它又是“选修”表的主属性,所以不能为空。因为关系模型必须满足实体完整性。
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
5.等值连接与自然连接的区别是什么?
答:自然连接( Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。
第三章 关系数据库标准语言 SQL (教材148页)
1. 试述SQL语言的特点。
答:
( 1)综合统一。 SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。
( 2)高度非过程化。用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
( 3)面向集合的操作方式。SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
( 4)以同一种语法结构提供两种使用方式。SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用。
( 5)语言简捷,易学易用。
2. 试述SQL的定义功能。
答:
SQL的数据定义功能包括定义表、定义视图和定义索引。
SQL语言使用CREATE TABLE语句定义建立基本表,;ALTER TABLE语句修改基本表定义,DROP TABLE语句删除基本表;建立索引使用CREATE INDEX语句建立索引, DROP INDEX语句删除索引表;SQL语言使用CREATE VIEW命令建立视图,DROP VIEW语句删除视图。
3. 用SQL语句建立第3章习题3中的四个表。
答:
对于 S表:S( SNO,SNAME,STATUS,CITY);
建 S表
CREATE TABLE S
(SNO CHAR(3),
SNAME CHAR(10),
STATUS CHAR(2),
CITY CHAR(10));
P(PNO,PNAME,COLOR,WEIGHT);
建 P表、 建J表、建SPJ表略。
4. 针对上题中建立的四个表试用SQL语言完成第3章习题3中的查询。
答:
( 1) 求供应工程J1零件的供应商号码SNO;
SELECT SNO
FROM SPJ
WHERE JNO=‘J1';
( 2) 求供应工程J1零件P1的供应商号码SNO;
SELECT SNO
FROM SPJ
WHERE JNO=‘J1'
AND PNO=‘P1';
( 3) 求供应工程J1零件为红色的供应商号码SNO;
SELECT SNO
FROM SPJ
WHERE JNO=‘J1'
AND PNO IN
(SELECT PNO
FROM P
WHERE COLOR=‘红');
( 4) 求没有使用天津供应商生产的红色零件的工程号JNO;
略, 注意:从 J 表入手,以包含那些尚未使用任何零件的工程号。
5. 针对习题3中的四个表试用SQL语言完成以下各项操作:
( 1)找出所有供应商的姓名和所在城市。
( 2)找出所有零件的名称、颜色、重量。
( 3)找出使用供应商S1所供应零件的工程号码。
( 4)找出工程项目J2使用的各种零件的名称及其数量。
( 5)找出上海厂商供应的所有零件号码。
( 6)找出使用上海产的零件的工程名称。
( 7)找出没有使用天津产的零件的工程号码。
( 8)把全部红色零件的颜色改成蓝色。
( 9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
( 10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
( 11)请将 (S2,J6,P4,200) 插入供应情况关系。
答:
(1) 找出所有供应商的姓名和所在城市。
SELECT SNAME, CITY
FROM S;
(2) 找出所有零件的名称、颜色、重量。
SELECT PNAME, COLOR, WEIGHT
FROM P;
(3) 找出使用供应商S1所供应零件的工程号码。
SELECT JNO
FROM SPJ
WHERE SNO=‘S1';
(4) 找出工程项目J2使用的各种零件的名称及其数量。
SELECT P.PNAME, SPJ.QTY
FROM P, SPJ
WHERE P.PNO=SPJ.PNO
AND SPJ.JNO='J2';
(5) 找出上海厂商供应的所有零件号码。
SELECT DISTINCT PNO
FROM SPJ
WHERE SNO IN
( SELECT SNO
FROM S
WHERE CITY='上海');
(6) 找出使用上海产的零件的工程名称。
SELECT JNAME
FROM J, SPJ, S
WHERE J. JNO=SPJ. JNO
AND SPJ. SNO=S.SNO
AND S.CITY='上海';
(7) 找出没有使用天津产的零件的工程号码。
略
(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的记录,并从供应情况关系中删除相应的记录。
解析:注意删除顺序,应该先从 SPJ表中删除供应商S2所供应零件的记录,然后从从S表中删除S2。
(11) 请将 (S2,J6,P4,200) 插入供应情况关系。
INSERT INTO SPJ(SNO, JNO, PNO, QTY)
VALUES (S2,J6,P4,200);
6. 什么是基本表?什么是视图?两者的区别和联系是什么?
答:基本表是本身独立存在的表,在 SQL中一个关系就对应一个表。
视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。
7. 试述视图的优点。
答: (1)视图能够简化用户的操作。
(2)视图使用户能以多种角度看待同一数据。
(3)视图对重构数据库提供了一定程度的逻辑独立性。
(4)视图能够对机密数据提供安全保护。
8. 所有的视图是否都可以更新?为什么?
答:不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的。
9. 哪类视图是可以更新的,哪类视图是不可更新的? 各举一例说明。
答:基本表的行列子集视图一般是可更新的。如教材 3.5.3中的例1。
若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。
如教材 3.5.3中的S_G视图。
11. 请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件
代码( PNO)、供应数量(QTY)。针对该视图完成下列查询:
( 1)找出三建工程项目使用的各种零件代码及其数量。
( 2)找出供应商S1的供应情况。
答:建视图:
CREATE VIEW V_SPJ AS
SELECT SNO, PNO, QTY
FROM SPJ
WHERE JNO=
( SELECT JNO
FROM J
WHERE JNAME='三建');
对该视图查询:
(1) 找出三建工程项目使用的各种零件代码及其数量。
SELECT PNO, QTY
FROM V_SPJ;
(2) 找出供应商S1的供应情况。
SELECT PNO, QTY /* S1供应三建工程的零件号和对应的数量*/
FROM V_SPJ
WHERE SNO='S1';
第五章 关系数据理论 (教材 196页)
1.理解并给出下列术语的定义:
函数依赖、部分函数依赖、完全函数依赖、候选码、主码、 外码、全码。
答:
函数依赖:设 R (U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R (U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同, 而在Y上的属性值不同, 则称"X函数确定Y"或"Y函数依赖于X",记作X→Y。
完全函数依赖、部分函数依赖:在 R(U)中,如果X→Y,并且对于X的任何一个真子集X,都有X′→Y,则称Y对X完全函数依赖;若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖;
候选码、主码: 设 K为R(U,F)中的属性或属性组合,若K → U则K为R的候选码。若候选码多于一个,则选定其中的一个为主码。
外码:关系模式 R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码也称外码。
全码:整个属性组是码,称为全码( All-key)。
2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。
描述班级的属性有:班号、专业名、系名、人数、入校年份。
描述系的属性有:系名、系号、系办公室地点、人数。
描述学会的属性有:学会名、成立年份、地点、人数。
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。
指出各关系的候选码、外部码,有没有全码存在?
答:
关系模式: 学生 S(S#,SN,SB,DN,C#,SA)
班级 C(C#,CS,DN,CNUM,CDATE)
系 D(D#,DN,DA,DNUM)
学会 P(PN,DATE1,PA,PNUM)
学生 --学会SP(S#,PN,DATE2)
其中, S#—学号,SN—姓名,SB—出生年月,SA—宿舍区
C#—班号,CS—专业名,CNUM—班级人数,CDATE—入校年份
D#—系号,DN—系名,DA—系办公室地点,DNUM—系人数
PN—学会名,DATE1—成立年月,PA—地点,PNUM—学会人数,DATE2—入会年份
每个关系模式的极小函数依赖集:
S:S#→SN,S#→SB,S#→C#,C#→DN,DN→SA
C:C#→CS,C#→CNUM,C#→CDATE,CS→DN,(CS,CDATE)→C#
D:D#→DN,DN→D#,D#→DA,D#→DNUM
P:PN→DATE1,PN→PA,PN→PNUM
SP:(S#,PN)→DATE2
S中存在传递函数依赖: S#→DN, S#→SA, C#→SA
C中存在传递函数依赖:C#→DN
( S#,PN)→DATE2 和(CS,CDATE)→C# 均为SP中的函数依赖,是完全函数依赖
关系 候选码 外部码 全码
S S# C#,DN 无
C C#,(CS,CDATE) DN 无
D D#和DN 无 无
P PN 无 无
SP (S#,PN) S#,PN 无
4. 试举出三个多值依赖的实例。
答:
( 1)关系模式MSC(M,S,C)中,M表示专业,S表示学生,C表示该专业的必修课。假设每个专业有多个学生,有一组必修课。设同专业内所有学生的选修的必修课相同,实例关系如下。按照语义对于M的每一个值M i,S有一个完整的集合与之对应而不问C取何值,所以M→→S。由于C与S的完全对称性,必然有M→→C成立。
M S C
M 1 S1 C1
M 1 S1 C2
M 1 S2 C1
M 1 S2 C2
…… …… ……
( 2)关系模式ISA(I,S,A)中,I表示学生兴趣小组,S表示学生,A表示某兴趣小组
的活动项目。假设每个兴趣小组有多个学生,有若干活动项目。每个学生必须参加所
在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。
按照语义有 I→→S,I→→A成立。
( 3)关系模式RDP(R,D,P)中,R表示医院的病房,D表示责任医务人员,P表示病人。假设每个病房住有多个病人,有多个责任医务人员负责医治和护理该病房的所有病人。按照语义有R→→D,R→→P成立。
第六章 数据库设计 (教材241页)
1. 试述数据库设计过程。
1) 需求分析
2) 概念结构设计
3) 逻辑结构设计
4) 数据库物理设计
5) 数据库实施
6) 数据库运行和维护
这是一个完整的实际数据库及其应用系统的设计过程。不仅包括设计数据库本身,还包括数据库的实施、数据库运行和维护。
设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
2. 试述数据库设计过程的各个阶段上的设计描述。
答:各阶段的设计要点如下:
1) 需求分析:准确了解与分析用户需求(包括数据与处理)。
2) 概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
3) 逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
4) 数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5) 数据库实施:设计人员运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6) 数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。
3. 试述数据库设计过程中结构设计部分形成的数据库模式。
答:数据库结构设计的不同阶段形成数据库的各级模式,即:
在概念设计阶段形成独立于机器特点,独立于各个 DBMS产品的概念模式,在本篇中就是E-R图;
在逻辑设计阶段将 E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后在基本表的基础上再建立必要的视图(View),形成数据的外模式;
在物理设计阶段,根据 DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
概念模式是面向用户和设计人员的,属于概念模型的层次;逻辑模式、外模式、内模式是 DBMS支持的模式,属于数据模型的层次。可以在DBMS中加以描述和存储。
4. 试述数据库设计的特点。
答:数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。其主要特点有:
1) 数据库建设是硬件、软件和干件(技术与管理的界面)的结合。
2) 从软件设计的技术角度看,数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。
5. 需求分析阶段的设计目标是什么?调查的内容是什么?
答:需求分析阶段的设计目标是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
调查的内容是 “数据”和“处理”,即获得用户对数据库的如下要求:
( 1)信息要求。指用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。
( 2)处理要求。指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理。
( 3)安全性与完整性要求。
6. 数据字典的内容和作用是什么?
答:数据字典是系统中各类数据描述的集合。数据字典的内容通常包括:数据项、数据结构、数据流、数据存储、处理过程五个部分
其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构。数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。
数据字典的作用:数据字典是关于数据库中数据的描述,在需求分析阶段建立,是下一步进行概念设计的基础,并在数据库设计过程中不断修改、充实、完善。
(注意,数据库设计阶段形成的数据字典与后面讲到的数据字典不同,后者是 DBMS关于数据库中数据的描述,当然两者是有联系的)。
7. 什么是数据库的概念结构?试述其特点和设计策略。
答: 概念结构是信息世界的结构,即概念模型,其主要特点是:
( 1)能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。是对现实世界的一个真实模型。
( 2)易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库的设计成功的关键。
( 3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。
( 4)易于向关系、网状、层次等各种数据模型转换。
概念结构的设计策略通常有四种:
· 自顶向下。即首先定义全局概念结构的框架,然后逐步细化;
· 自底向上。即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念
结构;
· 逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构;
· 混合策略。即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。
8. 什么叫数据抽象?试举例说明。
答: 数据抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。
如分类这种抽象是:定义某一类概念作为现实世界中一组对象的类型。这些对象具有某些共同的特性和行为。它抽象了对象值和型之间的 “is member of”的语义。在E-R模型中,实体型就是这种抽象。例如在学校环境中,李英是老师,表示李英是教师类型中的一员,则教师是实体型,李英是教师实体型中的一个实体值,具有教师共同的特性和行为:在某个系某个专业教学,讲授某些课程,从事某个方向的科研。
9.试述数据库概念结构设计的重要性和设计步骤。
答:
重要性:
数据库概念设计是整个数据库设计的关键,将在需求分析阶段所得到的应用需求首先抽象为概念结构,以此作为各种数据模型的共同基础,从而能更好地、更准确地用某一 DBMS实现这些需求。
设计步骤:
概念结构的设计方法有多种,其中最经常采用的策略是自底向上方法,该方法的设计步骤通常分为两步:第 1步是抽象数据并设计局部视图,第2步是集成局部视图,得到全局的概念结构
10.什么是E-R图?构成E-R图的基本要素是什么?
答: E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
构成 E-R图的基本要素是实体型、属性和联系,其表示方法为:
· 实体型:用矩形表示,矩形框内写明实体名;
· 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;
· 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型( 1 : 1,1 : n或m : n)。
11. 为什么要视图集成?视图集成的方法是什么?
答:在对数据库系统进行概念结构设计时一般采用自底向上的设计方法,把繁杂的大系统分解子系统。首先设计各个子系统的局部视图,然后通过视图集成的方式将各子系统有机的融合起来,综合成一个系统的总视图。这样设计清晰,由简到繁。由于数据库系统是从整体角度看待和描述数据的,因此数据不再面向某个应用而是整个系统。因此必须进行视图集成,使得数据库能被全系统的多个用户、多个应用共享使用。
一般说来,视图集成可以有两种方式:
· 多个分 E-R图一次集成;
· 逐步集成,用累加的方式一次集成两个分 E-R图。
无论采用哪种方式,每次集成局部 E-R图时都需要分两步走:
( 1)合并。解决各分E-R图之间的冲突,将各分E-R图合并起来生成初步E-R图。
( 2)修改和重构。消除不必要的冗余,生成基本E-R图。
12. 什么是数据库的逻辑结构设计?试述其设计步骤。
答:数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本 E-R图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。
设计步骤为:
( 1)将概念结构转换为一般的关系、网状、层次模型;
( 2)将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;
( 3)对数据模型进行优化。
第七章 数据库恢复技术 (教材261页)
1.试述事务的概念及事务的四个特性。
答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做 ,是一个不可分割的工作单位。
事务具有四个特性:原子性( Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这个四个特性也简称为ACID特性。
原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:持续性也称永久性( Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
2.为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。
答:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
例如某工厂的库存管理系统中,要把数量为 Q的某种零件从仓库1移到仓库2存放。
则可以定义一个事务 T,T包括两个操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。
3.数据库中为什么要有恢复子系统?它的功能是什么?
答:因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)。
4.数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?
答:数据库系统中可能发生各种各样的故障,大致可以分以下几类:
( 1)事务内部的故障;
( 2)系统故障;
( 3)介质故障;
( 4)计算机病毒。
事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据库数据。
5.据库恢复的基本技术有哪些?
答:数据转储和登录日志文件是数据库恢复的基本技术。
当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
6. 数据库转储的意义是什么? 试比较各种数据转储方法。
答:数据转储是数据库恢复中采用的基本技术。所谓转储即 DBA定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。
静态转储:在系统中无运行事务时进行的转储操作。静态转储简单,但必须等待正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。
动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。
为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件( log file)。这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。
转储还可以分为海量转储和增量转储两种方式。
海量转储是指每次转储全部数据库。增量转储则指每次只转储上一次转储后更新过的数据。从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。
7. 什么是日志文件?为什么要设立日志文件?
答:( 1)日志文件是用来记录事务对数据库的更新操作的文件。
( 2)设立日志文件的目的是: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
8. 登记日志文件时为什么必须先写日志文件,后写数据库?
答:把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次 UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。
9. 针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复?系统故障的恢复?介质故障恢复?)
答:事务故障的恢复:
事务故障的恢复是由 DBMS自动完成的,对用户是透明的。
DBMS执行恢复步骤是:
( 1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
( 2)对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。
( 3)继续反向扫描日志文件,做同样处理。
( 4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。
系统故障的恢复:
系统故障可能会造成数据库处于不一致状态:
一是未完成事务对数据库的更新可能已写入数据库;
二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。
因此恢复操作就是要撤销 (UNDO)故障发生时未完成的事务,重做(REDO)已完成的事务。
系统的恢复步骤是:
( 1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。
( 2)对撤销队列中的各个事务进行UNDO处理。
进行 UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”(Before Image)写入数据库。
( 3)对重做队列中的各个事务进行REDO处理。
进行 REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”(After Image)写入数据库。
介质故障的恢复:
介质故障是最严重的一种故障。
恢复方法是重装数据库,然后重做已完成的事务。具体过程是:
( 1)DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态。
( 2)DBA装入转储结束时刻的日志文件副本
( 3)DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。
10. 具有检查点的恢复技术有什么优点?
答:利用日志技术进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要 REDO,哪些事务需要UNDO。一般来说,需要检查所有日志记录。这样做有两个问题:
一是搜索整个日志将耗费大量的时间。
二是很多需要 REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,恢复子系统又重新执行了这些操作,浪费了大量时间。
检查点技术就是为了解决这些问题。
11. 试述使用检查点方法进行恢复的步骤。
答:① 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
② 由该检查点记录得到检查点建立时刻所有正在执行的事务清单 ACTIVE-LIST。
这里建立两个事务队列 :
· UNDO-LIST: 需要执行undo操作的事务集合;
· REDO-LIST: 需要执行redo操作的事务集合;
把 ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。
③ 从检查点开始正向扫描日志文件
· 如有新开始的事务 Ti,把Ti暂时放入UNDO-LIST队列;
· 如有提交的事务 Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列,直到日志文件结束;
④ 对 UNDO-LIST中的每个事务执行UNDO操作, 对REDO-LIST中的每个事务执行REDO操作。
12. 什么是数据库镜像?它有什么用途?
答:数据库镜像即根据 DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
数据库镜像的用途有:
一是用于数据库恢复。当出现介质故障时,可由镜像磁盘继续提供使用,同时 DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
二是提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。
第八章 数据库并发控制 (教材280页)
1. 在数据库中为什么要并发控制?
答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和 /或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。
2. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?
答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读 “脏”数据。
( 1)丢失修改(Lost Update)
两个事务 T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
( 2)不可重复读(Non-Repeatable Read)
不可重复读是指事务 T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
( 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做任何修改。
5. 什么是封锁协议?不同级别的封锁协议的主要区别是什么?
答:在运用封锁技术对数据加锁时,要约定一些规则。例如,在运用 X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。这些约定或者规则称为封锁协议(Locking Protocol)。对封锁方式约定不同的规则,就形成了各种不同的封锁协议。不同级别的封锁协议,例如《概论》中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。
一级封锁协议:事务 T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
二级封锁协议:一级封锁协议加上事务 T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。
三级封锁协议:一级封锁协议加上事务 T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
6. 不同封锁协议与系统一致性级别的关系是什么?
答:不同的封锁协议对应不同的一致性级别。
一级封锁协议可防止丢失修改,并保证事务 T是可恢复的。在一级封锁协议中,对读数据是不加S锁的,所以它不能保证可重复读和不读“脏”数据。
二级封锁协议除防止了丢失修改,还可进一步防止读 “脏”数据。在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读。
在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束时才释放封锁。所以三级封锁协议除防止了丢失修改和不读 “脏”数据外,还进一步防止了不可重复读。
7. 试述活锁的产生原因和解决方法。
答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
8. 请给出预防死锁的若干方法。
答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法:
( 1)一次封锁法
要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。
( 2)顺序封锁法
预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
不过,预防死锁的策略不大适合数据库系统的特点。
9. 请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?
答:数据库系统一般采用允许死锁发生, DBMS检测到死锁后加以解除的方法。
DBMS中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。
超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。
DBMS并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。
10. 什么样的并发调度是正确的调度?
答:可串行化( Serializable)的调度是正确的调度。
可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这种调度策略为可串行化的调度。
11. 试述两段锁协议的概念。
答:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
· 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;
· 在释放一个封锁之后,事务不再申请和获得任何其他封锁。
“两段”的含义是,事务分为两个阶段:
第一阶段是获得封锁,也称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。
第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务释放已经获得的锁,但是不能再申请任何锁。
12. 为什么要引进意向锁? 意向锁的含义是什么?
答:引进意向锁是为了提高封锁子系统的效率。该封锁子系统支持多种封锁粒度。
原因是:在多粒度封锁方法中一个数据对象可能以两种方式加锁 —显式封锁和隐式封锁。因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突;还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突;显然,这样的检查方法效率很低。为此引进了意向锁。
意向锁的含义是:对任一结点加锁时,必须先对它的上层结点加意向锁。
例如事务 T要对某个元组加X锁,则首先要对关系和数据库加IX锁。换言之,对关系和数据库加IX锁,表示它的后裔结点—某个元组拟(意向)加X锁。
引进意向锁后,系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。例如,事务 T要对关系R加X锁时,系统只要检查根结点数据库和R本身是否已加了不相容的锁(如发现已经加了IX,则与X冲突),而不再需要搜索和检查R中的每一个元组是否加了X锁或S锁。
13. 试述常用的意向锁:IS锁,IX锁,SIX锁,给出这些锁的相容矩阵。
答: IS锁
如果对一个数据对象加 IS锁,表示它的后裔结点拟(意向)加S锁。例如,要对某个元组加S锁,则要首先对关系和数据库加IS锁
IX锁
如果对一个数据对象加 IX锁,表示它的后裔结点拟(意向)加X锁。例如,要对某个元组加X锁,则要首先对关系和数据库加IX锁。
SIX锁
如果对一个数据对象加 SIX锁,表示对它加S锁,再加IX锁,即SIX = S + IX。
相容矩阵(略)
第九章 数据库安全性 (教材300页)
1. 什么是数据库的安全性?
答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
2. 数据库安全性和计算机系统的安全性有什么关系?
答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
系统安全保护措施是否有效是数据库系统的主要指标之一。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的,
3.试述实现数据库安全性控制的常用方法和技术。
答:实现数据库安全性控制的常用方法和技术有:
1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC);
3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中, DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
4.什么是数据库中的自主存取控制方法和强制存取控制方法?
答:自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
5.SQL语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
答: SQL中 的自主存取控制是通过GRANT 语句和 REVOKE 语句来实现的。如:
GRANT SELECT, INSERT ON Student
TO 王平
WITH GRANT OPTION;
就将 Student表的SELECT和INSERT权限授予了用户王平,后面的“WITH GRANT OPTION”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
REVOKE INSERT ON Student FROM 王平 CASCADE;
就将 Student表 的INSERT权限从用户王平处收回,选项 CASCADE 表示,如果用户王平将 Student 的 INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
6.今有两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
请用 SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
(a) 用户王明对两个表有SELECT权力;
GRANT SELECT ON 职工,部门
TO 王明;
(b) 用户李勇对两个表有INSERT和DELETE权力;
GRANT INSERT,DELETE ON 职工,部门
TO 李勇;
(c) *每个职工只对自己的记录有SELECT权力;
GRANT SELECT ON 职工
WHEN USER()= NAME
TO ALL;
这里假定系统的 GRANT语句支持WHEN子句和USER()的使用。用户将自己的名字作为ID。注意,不同的系统这些扩展语句可能是不同的。读者应该了解你使用的DBMS产品的扩展语句。
(d) 用户刘星对职工表有SELECT权力,对工资字段具有更新权力;
GRANT SELECT,UPDATE(工资) ON 职工
TO 刘星;
(e) 用户张新具有修改这两个表的结构的权力;
GRANT ALTER TABLE ON 职工,部门
TO 张新;
(f) 用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力;
GRANT ALL PRIVILIGES ON 职工,部门
TO 周平
WITH GRANT OPTION;
(g) 用户杨兰具有从每个部门职工中SELECT最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
答:
首先建立一个视图。然后对这个视图定义杨兰的存取权限。
CREATE VIEW 部门工资 AS
SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM 职工,部门
WHERE 职工.部门号 = 部门. 部门号
GROUP BY 职工.部门号;
GRANT SELECT ON 部门工资
TO 杨兰;
7.把习题8中(a)~(g) 的每一种情况,撤销各用户所授予的权力。
答: (a)
REVOKE SELECT ON 职工,部门
FROM 王明;
(b)
REVOKE INSERT,DELETE ON 职工,部门
FROM 李勇;
(c)
REOVKE SELECT ON 职工
WHEN USER()= NAME
FROM ALL;
这里假定用户将自己的名字作为 ID,且系统的REOVKE语句支持WHEN子句,系统也支持USER()的使用。
(d)
REVOKE SELECT,UPDATE ON 职工
FROM 刘星;
(e)
REVOKE ALTER TABLE ON 职工,部门
FROM 张新;
(f)
REVOKE ALL PRIVILIGES ON 职工,部门
FROM 周平;
(g)
REVOKE SELECT ON 部门工资
FROM 杨兰;
DROP VIEW 部门工资;
8.为什么强制存取控制提供了更高级别的数据库安全性?
答:强制存取控制( MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
10.什么是数据库的审计功能,为什么要提供审计功能?
答:审计功能是指 DBMS的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。
因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能, DBA可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
第十章 数据库完整性 (教材313页)
1.什么是数据库的完整性?
答:数据库的完整性是指数据的正确性和相容性。
2.数据库的完整性概念与数据库的安全性概念有什么区别和联系?
答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garbage In Garbage Out)所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
3.什么是数据库的完整性约束条件?可分为哪几类?
答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。
一般可以分为六类:
静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
4.DBMS的完整性控制机制应具有哪些功能?
答: DBMS的完整性控制机制应具有三个方面的功能:
1). 定义功能,即提供定义完整性约束条件的机制。
2. 检查功能,即检查用户发出的操作请求是否违背了完整性约束条件。
3). 违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
5.RDBMS在实现参照完整性时需要考虑哪些方面?
答: RDBMS在实现参照完整性时需要考虑以下几个方面:
1) 外码是否可以接受空值
2) 删除被参照关系的元组时的考虑,这时系统可能采取的作法有三种:
( a)级联删除(CASCADES);
( b)受限删除(RESTRICTED);
( c)置空值删除(NULLIFIES)
3) 在参照关系中插入元组时的问题,这时系统可能采取的作法有:
( a)受限插入
( b)递归插入
4) 修改关系中主码的问题
一般是不能用 UPDATE语句修改关系主码的。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。
如果允许修改主码,首先要保证主码的唯一性和非空,否则拒绝修改。然后要区分是参照关系还是被参照关系。
6. 假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;
部门(部门号,名称,经理名,电话),其中部门号为主码;
用 SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
定义每个模式的主码;定义参照完整性;定义职工年龄不得超过 60岁。
答
CREATE TABLE DEPT
(Deptno NUMBER(2),
Deptname VARCHAR(10),
Manager VARCHAR(10),
PhoneNumber Char(12)
CONSTRAINT PK_SC PRIMARY KEY (Deptno));
CREATE TABLE EMP
(Empno NUMBER(4),
Ename VARCHAR(10),
Age NUMBER(2),
CONSTRAINT C1 CHECK (Age《=60),
Job VARCHAR(9),
Sal NUMBER(7,2),
Deptno NUMBER(2),
CONSTRAINT FK_DEPTNO
FOREIGN KEY (Deptno)
REFERENCES DEPT(Deptno));
7.关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的?
答:对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。具体的处理可以参见上面第 5题或《概论》10.2中相应部分。
第十一章 数据库管理系统 (教材 347页)
1.试述DBMS的基本功能?
答: DBMS主要是实现对共享数据有效的组织、管理和存取。DBMS的基本功能有:
( 1)数据库定义功能;
( 2)数据存取功能;
( 3)数据库运行管理功能;
( 4)数据组织、存储和管理功能;
( 5)数据库的建立和维护功能;
( 6)其他功能
2. 试述DBMS 四种进程组织方案,并分析各种方案的特点和优缺点。
答: DBMS 四种进程组织方案是:
N方案:N个DB用户应用程序对应 N个用户进程,DBMS作为应用程序的子程序被连入用户应用程序中。因此这种方案也称为连入式方案。数据库系统中共有N个进程。
2N方案:每个用户进程有一个DBMS进程为之服务,因此N个用户进程就有N个DBMS进程,共2N个进程。
N+1方案:N个用户进程仅有一个DBMS进程为它们服务,因此共N+1个进程,共N+1个进程。
N+M方案:用M个DBMS进程为N个用户进程提供服务,一般M小于N。
3.理解并解释下列术语的含义: 进程、任务、“轻权”进程、线程、线索。
答:进程:操作系统中的核心概念,进程是程序的一次执行过程。进程既是资源分配的最小单位也是操作系统调度的基本单位。
任务:在单处理器系统中任务与进程是类似的概念。随着多处理器系统以及并行计算技术的发展,进程概念被进一步细划为任务( Task)与线程(Thread)的概念。任务是申请资源的基本单位,而线程是调度和运行的基本单位。
轻权进程:线程又被称为 “轻权”或“轻量” 进程。
线索:是数据库系统中的概念,它借鉴了操作系统中 “线程”的概念:整个DBMS可以看作是一个Task,当有一个用户申请数据库服务时,Task分配多个Thread为之服务,多个Thread并行工作,共享资源。一般地讲,DBMS中的线索是DBMS的一个执行流。
4. 什么是DBMS的多线索机制?有什么优点?
答: DBMS借鉴了操作系统中“线程”的概念和技术,在DBMS的实现中采用多线索机制。
一般地讲, DBMS中的线索是DBMS的一个执行流,它服务于整个DBMS系统或DBMS中的某个用户;DBMS服务器响应客户请求是通过为每个用户创建线索(而不是创建进程)来完成的。DBMS的各个线索能在逻辑上并行执行;它们共存于一个服务器进程中,共享DBMS的所有资源,如数据库缓冲区和CPU时间;线索是DBMS的调度单位,服务器进程能按一定的调度算法调度用户请求。
与进程相比,线索具有以下优点:
1)线索比进程占用较少的系统资源,如内存
2)线索调度比较灵活,可控制性强
3)线索切换开销较小
4)线索间通信简便
5.DBMS由哪些主要的程序模块组成?
答: DBMS主要的程序模块有:
1). 数据定义模块
2). 数据操纵模块
3). 数据库运行管理方面的程序模块
4). 数据库组织、存储和管理方面的程序模块
5). 数据库建立、维护和其他方面的程序模块
9. 在操作系统中也有并发控制问题,为什么DBMS还要并发控制机制?
答:操作系统提供的封锁机制和 DBMS的封锁机制在封锁对象,封锁对象的状态,封锁的粒度,及封锁的类型上存在很大的差别,操作系统的封锁机制不能直接应用在DBMS中,DBMS必须重新设计,来满足复杂的封锁需求。
10. DBMS中为什么要设置系统缓冲区?
答:设立系统缓冲区的原因:
一是为了把存储层以上 DBMS各系统成分和实在的外存设备隔离,外存设备的变更不会影响这些系统,使DBMS具有设备独立性。
二是为了提高效率。 DBMS利用系统缓冲区滞留数据。当需要读取数据时系统首先到缓冲区中查找。只有当缓冲区中不存在该数据时才真正从外存读入该数据所在的页面。当要写回一元组到数据库中时,系统并不把它立即写回外存,仅把该元组所在的缓冲区页面作一标志,表示可以释放。只有当该用户事务结束或缓冲区已满需要调入新页时才按一定的淘汰策略把缓冲区中已有释放标志的页面写回外存。这样可以减少I/O次数,提高系统效率。
11 .数据库中要存储和管理的数据内容包括哪些方面?
答:数据库中存储四个方面的数据:
1).数据描述,即数据的外模式、模式、内模式;
2).数据本身;
3).数据之间的联系;
4).存取路径。
这四个方面的数据内容都要采用一定的方式组织、存储起来。
第十二章 数据库技术新发展 (教材 389页)
1. 试述数据库技术的发展过程。
答案要点:
1)数据模型是数据库系统的核心和基础。数据库技术的三个发展阶段应该按照数据模型的进展来界定。按照数据模型的进展,数据库技术可以相应地分为三个发展阶段。
2)数据模型的发展经历了格式化数据模型(包括层次数据模型和网状数据模型)、关系数据模型两个阶段,以面向对象数据模型为代表的非传统数据模型的阶段。
3)同学们可以从每一代数据库系统的主要特征、代表性系统、主要成就、优点和不足来了解数据库技术的发展过程。
层次数据库系统和网状数据库系统的数据模型虽然分别为层次模型和网状模型,但实质上层次模型是网状模型的特例。它们都是格式化模型。它们从体系结构、数据库语言到数据存储管理均具有共同特征,是第一代数据库系统。
关系数据库系统支持关系模型。关系模型不仅简单、清晰,而且有关系代数作为语言模型,有关系数据理论作为理论基础。因此,关系数据库系统具有形式基础好、数据独立性强、数据库语言非过程化等特色,标志着数据库技术发展到了第二代。
第二代数据库系统的数据模型虽然描述了现实世界数据的结构和一些重要的相互联系,但是仍不能捕捉和表达数据对象所具有的丰富而重要的语义,因此尚只能属于语法模型。
第三代的数据库系统将是以更加丰富的数据模型和更强大的数据管理功能为特征,从而满足传统数据库系统难以支持的新的应用要求。
2. 当前数据库技术发展的主要特征是什么?
答案要点:
新一代数据库技术的特点是:
( 1)面向对象的方法和技术对数据库发展的影响最为深远,数据库研究人员借鉴和吸收了面向对象的方法和技术,提出了面向对象数据模型(简称对象模型)。该模型克服了传统数据模型的局限性,促进了数据库技术在一个新的技术基础上继续发展。
( 2)数据库技术与多学科技术的有机结合,计算机领域中其他新兴技术的发展对数据库技术产生了重大影响。传统的数据库技术和其他计算机技术如,网络通信技术、人工智能技术、面向对象程序设计技术、并行计算技术移动计算技术等的互相结合、互相渗透,使数据库中新的技术内容层出不穷。
( 3)面向应用领域的数据库技术的研究在传统数据库系统基础上,结合各个应用领域的特点,研究适合该应用领域的数据库技术,如数据仓库、工程数据库、统计数据库、科学数据库、空间数据库、地理数据库等,这是当前数据库技术发展的又一重要特征。
4. 第三代数据库系统的主要特点是什么?
答:经过多年的研究和讨论,对第三代数据库系统的基本特征已有了共识。
(1)第三代数据库系统应支持数据管理、对象管理和知识管理,除提供传统的数据管理服务外,第三代数据库系统将支持更加丰富的对象结构和规则,应该集数据管理、对象管理和知识管理为一体。由此可以导出第三代数据库系统必须支持OO数据模型。
(2)第三代数据库系统必须保持或继承第二代数据库系统的技术,第三代数据库系统应继承第二代数据库系统已有的技术,。如第二代数据库系统的非过程化数据存取方式和数据独立性。不仅能很好的支持对象管理和规则管理,而且能更好地支持原有的数据管理,支持多数用户需要的即席查询等。
(3)第三代数据库系统必须对其他系统开放数据库系统的开放性表现在:支持数据库语言标准;在网络上支持标准网络协议;系统具有良好的可移植性、可连接性、可扩展性和可互操作性等。
5. 试述数据模型在数据库系统发展中的作用和地位。
答案要点:
(1)数据模型是数据库系统的核心和基础。
(2)数据库的发展集中表现在数据模型的发展。
7. 请阐述以下数据库系统的主要概念、研究的主要问题及其发展过程:
分布式数据库系统、并行数据库系统、主动数据库系统、多媒体数据库系统、模糊数据库系统。
分布式数据库系统:分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力(称为场地自治),可以执行局部应用。同时,每个结点也能通过网络通信子系统执行全局应用。
并行数据库系统 :并行数据库系统是在并行机上运行的具有并行处理能力的数据库系统。并行数据库系统是数据库技术与并行计算技术相结合的产物。
主动数据库系统 :主动数据库是相对于传统数据库的被动性而言的。主动数据库能根据数据库的当前状态,主动适时地做出反应,执行某些操作,向用户提供有关信息。主动数据库是传统数据库技术与人工智能技术、面向对象技术相结合的产物。
多媒体数据库系统 :可实现对格式化和非格式化的多媒体数据的存储、管理和查询的数据库系统。
模糊数据库系统 :存储、组织、管理和操作模糊数据的数据库系统。
8. 试述数据仓库的产生背景。
答案要点:
1)数据库技术的发展和广泛应用使许多部门、企业积累了大量的原始数据,这些数据是宝贵的资源
2)对这些数据的分析和利用可以了解企业运行的情况,发现存在的问题,预测未来的趋势。
3)数据库系统作为数据管理的先进技术已经成功用于事务处理。但是它对分析处理的支持一直不能令人满意,具体表现在:
(1)分析处理时性能低。
(2)分析的数据对象分散,而且不一致,即缺乏对数据的清洗、集成能力。
(3)事务处理系统不具备动态集成的能力。
(4)系统缺乏对历史数据的有效组织和存储能力,而分析方法必须以大量的历史数据为依托。
(5)在事务处理系统中存储的是细节数据,不适合进行分析处理,而事务处理系统又不具备对数据的综合能力。
总之, DSS对数据在空间和时间的广度上都有了更高的要求,。而事务处理环境难以满足这些要求。在事务型环境中直接构建分析型应用是一种失败的尝试。数据仓库正是为了构建这种新的分析处理环境而出现的一种数据存储和组织技术。但是数据仓库的主要驱动力并不是过去的缺点,而是市场商业经营行为的改变,市场竞争要求捕获和分析事务级的业务数据。
9. 数据仓库数据的基本特征是什么?
答案要点:四个基本特征是:
· 数据仓库的数据是面向主题的
· 数据仓库的数据是集成的
· 数据仓库的数据是不可更新的
· 数据仓库的数据是随时间不断变化的
10. 什么是联机分析处理?什么是数据挖掘?
答案要点:
联机分析处理 OLAP是以海量数据为基础的复杂分析技术。
OLAP支持各级管理决策人员从不同的角度、快速灵活地对数据仓库中的数据进行复杂查询和多维分析处理,并且能以直观易懂的形式将查询和分析结果提供给决策人员,以方便他们及时掌握企业内外的情况,辅助各级领导进行正确决策,提高企业的竞争力
数据挖掘是从超大型数据库( VLDB)或数据仓库中发现并提取隐藏在内的模式的过程,这些模式是有效的、新颖的、有潜在使用价值的和易于理解的。目的是帮助决策者寻找数据间潜在的关联,发现经营者被忽略的要素,而这些要素对预测趋势、决策行为也许是十分有用的信息。
11. 基于数据库技术的DSS解决方案是什么?
答:基于数据库技术的 DSS的解决方案是:
DW+OLAP+DM DSS的可行方案
数据仓库、联机分析处理和数据挖掘是作为三种独立的信息处理技术出现的。数据仓库用于数据的存储和组织, OLAP集中于数据的分析,数据挖掘则致力于知识的发现。由于这三种技术内在的联系性和互补性,将它们结合起来是一种新的DSS构架。是DSS有效而可操作的整体解决方案。
?