资源描述
课后作业习题数据库系统概论课程部分习题及参考答案 第一章绪论(教材 41页) 试述数据、数据库、数据库系统、数据库管理系统的概念。 数据: 描述事物的符号记录称为数据。数据的种类有文字、图形、图象、声音、正文等等。数据与其语义是不可分的。 数据库: 数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 数据库系统: 数据库系统( DBS)是指在计算机系统中引入数据库后的系统构成。数据库系统由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。 数据库管理系统: 数据库管理系统 (DBMS)是位于用户与操作系统之间的一层数据管理软件。用于科学地组织和存储数据、高效地获取和维护数据。DBMS主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。 使用数据库系统有什么好处? 使用数据库系统的好处是由数据库管理系统的特点或优点决定的。 使用数据库系统的好处很多,例如可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护的负担等。 为什么有这些好处,可以结合第 5题来回答。 使用数据库系统可以大大提高应用开发的效率。因为在数据库系统中应用程序不必考虑数据的定义、存储和数据存取的具体路径,这些工作都由 DBMS来完成。 此外,当应用逻辑改变,数据的逻辑结构需要改变时,由于数据库系统提供了数据与程序之间的独立性。数据逻辑结构的改变是 DBA的责任,开发人员不必修改应用程序,或者只需要修改很少的应用程序。从而既简化了应用程序的编制,又大大减少了应用程序的维护和修改。 使用数据库系统可以减轻数据库系统管理人员维护系统的负担。因为 DBMS在数据库建立、运用和维护时对数据库进行统一的管理和控制,包括数据的完整性、安全性,多用户并发控制,故障恢复等等都由DBMS执行。 总之,使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余,可以提高数据的利用率和一致性,又有利于应用程序的开发和维护。 试述文件系统与数据库系统的区别和联系。 文件系统与数据库系统的区别: 文件系统面向某一应用程序,共享性差、冗余度大,独立性差,纪录内有结构、整体无结构,应用程序自己控制。 数据库系统面向现实世界,共享性高、冗余度小,具有高度的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力。 文件系统与数据库系统的联系是: 文件系统与数据库系统都是计算机系统中管理数据的软件。 试述数据库系统的特点。 数据库系统的主要特点有: 一、数据结构化 数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。 二、数据的共享性高,冗余度低,易扩充 数据库的数据不再面向某个应用而是面向整个系统,因此可以被多个用户、多个应用、用多种不同的语言共享使用。由于数据面向整个系统,是有结构的数据,不仅可以被多个应用共享使用,而且容易增加新的应用,这就使得数据库系统弹性大,易于扩充。 三、数据独立性高 数据独立性包括数据的物理独立性和数据的逻辑独立性。 数据库管理系统的模式结构和二级映象功能保证了数据库中的数据具有很高的物理独立性和逻辑独立性。 四、数据由 DBMS统一管理和控制 数据库的共享是并发的共享,即多个用户可以同时存取数据库中的数据甚至可以同时存取数据库中同一个数据。为此, DBMS必须提供统一的数据控制功能,包括数据的安全性保护,数据的完整性检查,并发控制和数据库恢复。 数据库管理系统的主要功能有哪些? 数据库定义功能; 数据存取功能; 数据库运行管理; 数据库的建立和维护功能。 试述数据模型的概念、数据模型的作用和数据模型的三个要素。 数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。 一般地讲,数据模型是严格定义的概念的集合。这些概念精确地描述系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。 数据结构:是所研究的对象类型的集合,是对系统的静态特性的描述。 数据操作:是指对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。 数据的约束条件:是完整性规则的集合,完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。 试述概念模型的作用。 概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。 定义并解释概念模型中以下术语: 实体,实体型,实体集,属性,码,实体联系图( E-R图) 实体:客观存在并可以相互区分的事物叫实体。 实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体称为实体型。 实体集:同型实体的集合称为实体集。 属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。 码:唯一标识实体的属性集称为码。 实体联系图: E-R图提供了表示实体型、属性和联系的方法: 实体型:用矩形表示,矩形框内写明实体名。 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型( 1 : 1,1 : n或m : n)。 第二章 关系数据库 (教材81页) 1.试述关系模型的三个组成部分。 答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 2.试述关系数据语言的特点和分类。 答:关系数据语言可以分为三类: 关系代数语言 例如 ISBL 关系演算语言 (元组关系演算语言 例如 APLHA,QUEL 和 域关系演算语言 例如QBE) 具有关系代数和关系演算双重特点的语言 例如 SQL 这些关系数据语言的共同特点是,具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。 3. 定义并理解下列术语,说明它们之间的联系与区别: ( 1)域,关系,元组,属性 答: 域:域是一组具有相同数据类型的值的集合。 关系:在域 D1,D2,Dn上笛卡尔积D1D2Dn的子集称为关系,表示为 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上笛卡尔积D1D2Dn的子集称为关系,表示为 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,记作XY。 完全函数依赖、部分函数依赖:在 R(U)中,如果XY,并且对于X的任何一个真子集X,都有XY,则称Y对X完全函数依赖;若XY,但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,DNSA C:C#CS,C#CNUM,C#CDATE,CSDN,(CS,CDATE)C# D:D#DN,DND#,D#DA,D#DNUM P:PNDATE1,PNPA,PNPNUM 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取何值,所以MS。由于C与S的完全对称性,必然有MC成立。 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表示某兴趣小组 的活动项目。假设每个兴趣小组有多个学生,有若干活动项目。每个学生必须参加所 在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。 按照语义有 IS,IA成立。 ( 3)关系模式RDP(R,D,P)中,R表示医院的病房,D表示责任医务人员,P表示病人。假设每个病房住有多个病人,有多个责任医务人员负责医治和护理该病房的所有病人。按照语义有RD,RP成立。 第六章 数据库设计 (教材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并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加
展开阅读全文