数据库系统原理参考答案

更新时间:2024-06-13 08:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 习题参考答案

1.名词解释:数据、数据库、数据库管理系统、数据库系统、关系数据库管理系统。 数据:用来记录或者标识事物本质特征的符号。具体包括文本、图形、图像、音频、视频、动画等数据。

数据库:长期储存在计算机内的有组织的、统一的、共享的、结构化的、通用化的、综合性的数据的集合。

数据库管理系统:位于用户与操作系统之间,提供给用户实现数据库的定义、操纵和运行管理的数据管理软件,从而科学地组织和存储数据、高效地获取和维护数据。

数据库系统:在计算机系统中引入数据库后,由数据库、数据库管理系统、数据库应用系统、数据库设计员、数据库管理员和用户等构成的完整的计算机系统。DBS的核心是数据库管理系统,DBMS是用户与数据库的接口

关系数据库系统:支持关系数据库技术的数据库系统。 2.简述数据库管理系统的功能。

数据定义DDL;数据操纵DML;数据控制DCL(安全性、完整性、并发控制和数据恢复);数据接口;数据组织和存储;事务和运行管理等。从而确保数据的安全、完整、并发和恢复。

3.简述数据库系统的组成和特点。

组成:DBS硬件(计算机硬件、数据库硬件和网络硬件等)、DBS软件(操作系统、DBMS、程序设计主语言、数据库专用开发工具和数据库应用系统等)和人员(数据库设计员、数据库分析员、数据库管理员、数据库程序员和用户)等组成。

特点:数据结构化组织、永久储存和统一管理;数据共享;冗余度小;独立性高;容易扩展等。

4.常用的数据模型有哪些?简述数据模型的三个要素。

类型:层次模型(最早);网状模型;关系模型(目前流行);面向对象模型(20世纪80年代引入OOP)。

要素:数据结构;数据操作;完整性约束。 5.简述DBA的职责。

决定数据库的信息内容和结构;决定数据库的存储结构和存取策略;定义数据的安全性和完整性;监控数据库的使用和运行;数据库的改进和重组重构。 6.简述数据库技术发展的三个基本阶段。 人工管理;文件系统;数据库系统

7.试述文件系统与数据库系统的区别。

文件系统:数据以文件方式存储,使用专门文件管理系统对数据文件进行统一组织、存储和管理,从而加快了数据处理速度,提高了数据处理准确性。特点如下:

1)数据结构:数据实现了记录格式的结构化处理,没有实现整体数据的结构化存储。 2)数据存储:计算机硬件系统的存储性能得到提高,大量的数据处理可以永久保存。 3)数据管理:提供文件管理系统,程序和数据之间可以使用文件系统进行统一管理。 4)数据共享:数据之间不能共享。

5)数据冗余:存在大量冗余数据,浪费存储空间。 6)数据独立:数据和程序不具有相互独立性。

数据库系统:把所有的数据文件组织起来,按照指定的数据结构构成多个数据库,然后对所有的数据进行有组织的统一结构化管理。特点如下:

1)数据结构:数据使用统一结构化的存储模式进行组织、存储和管理。 2)数据存储:提供功能完善的快速存储设备,数据可以永久保存。

3)数据管理:提供功能完善的DBMS进行统一管理及其安全性保护、完整性约束、并发控制和数据恢复等数据保护机制。

4)数据共享:程序和数据具有较高的共享性,使得数据可以共享。 5)数据冗余:数据冗余度小,节省存储空间。

6)数据独立:具有较高的数据和程序独立性。如果DB的逻辑结构或者物理结构发生变化,应用程序可以不作修改,或者少量调整,从而减轻系统设计工作量,容易扩充。

8.试述常用的RDBMS。

Oracle、SQL Server、DB2、My SQL、Informix、Visual FoxPro等 9.解释概念模型,简述概念模型的三要素。

概念模型:利用具有较强语义表达能力,且能够方便、直接地表达应用中的各种语义知识的专用描述工具,按照统一的语法格式和描述方法,对实际问题进行抽象后,而建立的简单、整洁、清晰、易于理解的独立于DBMS的模型结构。 要素:属性、实体和联系。

10.解释实体之间的常用联系,简述E-R模型的表示方法。 常用联系:一对一、一对多和多对多。 表示方法:

(1)长方形用来表示实体型。

(2)菱型和长方形之间的连线表示联系,并且将联系类型标注在连线附近,在长方形和菱形内分别写上实体型名称和联系名称。

(3)椭圆表示实体型和联系的属性,将其与所描述的相应实体型或者联系用线连接,在椭圆内写上属性的名称。

11.简述数据库系统的模式结构。

模式结构:由外模式、模式和内模式三级模式以及外模式/模式和模式/内模式二级映像构成的结构。

1)外模式(用户模式,子模式):面向用户的数据库局部逻辑结构和特征的描述,是数据库用户的数据视图,体现了数据库的局部特征。一个数据库可以有多个外模式。

2)模式(逻辑模式,结构模式):数据库中全部数据的整体逻辑结构和特征的描述,是所

2

有用户的公共数据视图,体现了数据库的总体特征。一个数据库只能有一个模式。

3)内模式(物理模式,存储模式):对数据库物理结构和存储方式的描述,是数据在数据库内部的组织存储方式。一个数据库只能有一个内模式。

4)外模式/模式映像:保证数据的逻辑独立性。 5)内模式/模式映像:保证数据的物理独立性。

12.简述数据独立性。数据独立性具体包括哪两种独立性?说明数据库系统的模式结构与数据独立性的关系。

数据独立性:在数据库技术中,应用程序和数据之间相互独立,互相不受影响。 种类:数据的物理独立性和数据的逻辑独立性。

关系:1)数据的物理独立性:如果数据库的内模式需要修改,即数据库的存储结构和存取方法有所变化,那么通过模式/内模式映象的相应修改,使模式尽可能保持不变。亦即对内模式的修改尽量不影响模式、外模式和应用程序。

2)数据的逻辑独立性:如果数据库的模式需要修改,即增加记录类型或者增加数据项,那么通过外模式/模式映象的相应修改,使外模式尽可能保持不变。亦即对模式的修改尽量不影响外模式和应用程序。数据的物理独立性和逻辑独立性合称为数据独立性。

3

第二章 习题参考答案

1.解释SQL和ODBC,简述SQL、ODBC与SQL Server 2005之间的关系。

SQL:结构化查询语言,Structured Query Language的缩写,是数据库管理系统的国际标准。 ODBC:开放数据库互连,Open Database Connectivity的缩写,是数据库管理系统的接口,提供DBMS与OS和高级语言的接口。

SQL Server:是微软研发的符合国际SQL标准的专业级数据库管理系统,并提供了ODBC接口,其管理功能相当完善,由于通过它简单的操作就可以非常安全稳定的进行数据库管理,从而使得它拥有了很高的市场占有率。目前SQL Server已经成为数据库领域的主流数据库管理工具,其最新产品是SQL Server 2008。

2.简述SQL Server 2005的特点。

综合统一、语法简单、易学易用、面向集合操作、高度非过程化、一语两用等。 3.简述数据库设计的基本方法。

手工试凑法和规范设计法等。常用规范设计法:新奥尔良法;E-R图法;3NF法;ODL法。 4.如何实现表Student中学号为2008010101和2008010102两个记录的性别的互换。 --声明两个长度为2的字符型变量

DECLARE @VarSex1 CHAR(2), @VarSex2 CHAR(2) --把学号为2008010101的元组的性别的值赋值给@VarSex1

SELECT @VarSex1 = SSex FROM Student WHERE SNo='2008010101' --把学号为2008010102的元组的性别的值赋值给@VarSex2

SELECT @VarSex2 = SSex FROM Student WHERE SNo='2008010102' --使用@VarSex2的值修改学号为2008010101的元组的性别的值 UPDATE Student SET SSex= @VarSex2 WHERE SNo='2008010101' --使用@VarSex1的值修改学号为2008010102的元组的性别的值 UPDATE Student SET SSex= @VarSex1 WHERE SNo='2008010102' 5.简述数据库备份和还原的方法。

备份StudentDB:在查询分析器中,使用BACKUP DATABASE 完成,即: BACKUP DATABASE StudentDB

TO DISK='C:\\StudentDBBackup1.bak',DISK='D:\\StudentDBbackup2.bak' 还原StudentDB:在查询分析器中,使用RESTORE DATABASE完成,即: RESTORE DATABASE StudentDB FROM

DISK='C:\\StudentDBBackup1.bak' WITH REPLACE 6.简述数据库分离和附加的方法。

分离数据库:在SSMS中展开数据库,在需要分离的数据库上右击,然后选择“任务(T)”→“分离(D),在分离数据库窗口中,选择相应的分离选项,然后单击“确定”完成分离。

附加数据库:在SSMS中,右击“数据库”,然后选择“附加(A)”,在附加数据库窗口中,选择需要附加的数据库,然后单击“确定”完成附加。

7.简述数据库维护的意义和方法。

意义:数据库在使用过程中,通常会发生违约操作或者故障,为了确保数据库的完整性和一致性等,定期的对数据库进行指定方式的维护工作是十分必要的。

方法:使用维护计划向导创建维护计划。即:

方法1:在SSMS中展开“管理”,右击“维护计划”,选择“维护计划向导(W)”→单击“下一步”,在选择目标服务器窗口中,输入计划名称、选择服务器和登录方式后单击“下一步”,勾选需要执行的维护任务,单击“下一步”,然后按照向导选择需要维护的数据库,并进行相应的设置,最后单击“完成(F)”完成维护计划。

方法2:右击“维护计划”,选择“新建维护计划(N)”实现。 8.简述视图与表的关系。

区别:1)概念不同。表是使用DBMS的DDL定义的,拥有真实数据的,以独立文件的形式存储在计算机外存上的具有固定模式结构和相应元组数据的关系表;视图是利用带有查询语句的视图定义,从数据表或视图中导出的虚表。

2)数据有效期不同。表是拥有数据的实表,而视图是只有视图定义的虚表。

3)数据存储不同。表永久存储在外存,而视图只有执行时创建临时表,用后释放。 4)更新方式不同。表一般可以任意更新,而视图一般不能任意更新。 5)创建方法不同。表使用CREATE TABLE,而视图使用CREATE VIEW。

联系:视图最终定义在表之上,视图数据最终来自表;表是创建视图的基础,并为视图提供数据,若表结构发生了改变,或者删除了表,则其相应的视图会失去意义,需要修改或者删除视图。对于最终用户,视图与表基本相同,用户可以按照表的用法来使用视图。

9.给数据库StudentDB创建一个数据库用户HappyMary,其登录身份是Windows的合法登录HappyMary;同时创建一个数据库用户HappySmith,其登录身份是SQL Server 2005的合法登录HappySmith。

CREATE USER HappyMary FOR LOGIN [ZJSU-HAPPYYOU\\HappyMary] CREATE USER HappySmith FOR LOGIN HappySmith

10.给数据库StudentDB创建一个数据库角色Mary,其数据库用户是HappyMary;同时创建一个数据库角色Smith,其数据库用户是数据库StudentDB的拥有者DBO;然后再删除数据库角色Mary和Smith。

CREATE ROLE Mary AUTHORIZATION HappyMary CREATE ROLE Smith DROP USER Mary DROP USER Smith

11.简述GRANT、DENY和REVOKE的用法,并举例说明。 GRANT <权限>[,<权限>]... ON <对象类型> <对象名> TO <用户>[,<用户>]...[WITH GRANT OPTION] 例如:把对表Student的读取权限授权给角色Tom。 GRANT SELECT ON Student TO Tom

DENY <权限>[,<权限>]... ON <对象类型> <对象名> TO <用户>[,<用户>]...

例如:把表Student的读取权限授权给所有用户,然后阻止用户HappyTomer的读取权限。 GRANT SELECT ON Student TO PUBLIC DENY SELECT ON Student TO HappyTomer

2

REVOKE <权限>[,<权限>]... [ON <对象类型> <对象名>] FROM <用户>[,<用户>]...

例如:收回用户HappyTomer对表Student的数据项SName、SSex、Sage的修改权限。 REVOKE UPDATE ON Student(SName,SSex,Sage) FROM HappyTomer

12.在西京大学教务管理系统中,如果需要添加教师信息,而且在安排教师讲授课程时,需要给出教学效果(一般、中等、良好、优秀)。那么应该如何重新设计该数据库。

参考E-R图如下:

13.已知蓝天电器需要设计产品销售数据库,数据要求包括:连锁店的基本信息(店号、店名、店址和电话等)和商品的基本信息(品号、品称和单价等)。连锁店销售商品时,需要记录销售数量和销售日期。请设计满足上述要求的数据库,并分别使用对象资源管理器和查询分析器建立该数据库,数据库的数据根据需要自定。

销售数据库ComInfo及其商店表、商品表和销售表设计如下: (1)商店表

店号:字符型,6位,主键,非空,取值={0,?,9,S},S字母开头,其它为数字。 店名:字符型,22位,非空。 店址:字符型,36位。

电话:字符型,12位,取值={0,?,9}。 (2)商品表

品号:字符型,6位,主键,非空,取值={0,?,9,P},P字母开头,其它为数字。 品名:字符型,22位,非空。 厂商:字符型,22位,非空。 厂址:字符型36,非空。 单价:实数,9位(2位小数)。 数量:整型,6位。 (3)联系属性

销售额:实数,12位(2位小数)。 职务补:实数,9位(2位小数)。

课程号 课程名 学时 学分 教材 教学效果 成绩 姓名 性别 年龄 职称 授课 工号 专业 时间地点 专业 学号 姓名 教师 指导 学生Stud性别 年龄 课程 选课 籍贯

3

聘期:实数,3位(1位小数)。工资:实数,9位(2位小数)。

经理:字符型,6位,非空,取值={0,?,9,A,?,Z},大写字母开头,其它为数字。 (4)商品销售E-R图如图3.2所示。

品号 数量 品名 厂商 厂地 单价 销售 商店 商品 店号 店名 销售额 店址 电话 图3.2 商店销售E-R图

(5)商品销售的关系模型如下:

商品(品号,品名,厂商,厂址,单价,数量) 商店(店号,店名,店址,电话)

职工(工号,姓名,性别,年龄,电话,店号,工资,聘期,职务补,经理) 销售(店号,品号,销售额)

(6)利用SSMS的对象资源管理器创建数据库 1)使用对象资源管理器编辑数据库 ①在如图1所示的界面中,右击:“数据库”(如图2所示),然后选择:“新建数据库(N)?”(如图3所示)。

图1 SQL Server 管理工作室 图2 对象资源管理器建立数据库

②在“数据库名称(N):”右侧输入数据库的名称:ComInfo,则在“数据库文件(F):”的下方给出了数据库文件和相应日志文件的逻辑名称依次:ComInfo.MDF和ComInfo_log.LDF,其默认存储位置为:C:\\Program Files\\Microsoft SQL Server \\ MSSQL10. MSSQLSERVER\\MSSQL\\DATA;如果需要指定数据库的存储位置,可以单击“路径”右侧的“?”进行选择。其它属性,也可以根据需要进行设置。最后单击“确定”。

③在如图1所示的SSMS界面中,右击需要编辑的数据库(例如:ComInfo),然后选择“重

4

命名”、“删除”、“刷新”和“属性”等进行相应的编辑。具体用法如下:

◆ 选择“重命名”:修改数据库的名称。选择“属性”:查看数据库的基本属性。 ◆ 选择“删除”:可以删除数据库,方法是在弹出的窗口中单击“确定”。

◆ 选择“刷新”:可以刷新SSMS,即在SSMS上重新刷新对数据库和数据表的修改。

图3 新建数据库

2)使用对象资源管理器编辑数据表结构

① 在如图1所示的SSMS中,展开数据库ComInfo,右击:“表”(如图4所示),然后选择:“新建表(N)?”(如图5所示)。

图4 管理工作室的新建数据表GUI 图5 新建表

②如图5所示,在“表-dbo.Table_1”标签的下方依次输入设计好的数据项的名称以及相应属性。具体输入方法如下:

◆ 列名下方:输入数据项的名称。如:工号,姓名,性别,年龄。

◆ 数据类型下方:选择相应的数据类型。如:Char(6),int等。对于字符型数据,还需要数据的宽度;对于decimal(18,0)类型数据,还需要数据的宽度和小数位数,其它类型的数据,只需按照相同的方法处理即可。

◆ 允许空下方:选择该数据是否允许为空值。

◆ 在任意行上,右击(如图3.27所示),选择“插入列(M)”,可以插入一个新数据项及其相应属性。选择“删除列(N)”,可以删除一个新数据项及其相应属性。

◆ 在任意行上,右击(如图5所示),选择“设置主键”,可以把该属性设置为主键;如果需要把多个数据项设置成组合主键,则只需先选择多行,然后做同样处理;如果取消主键,

5

只需在设置主键的行上,右击(参考图5),选择“移去主键(Y)”。

◆ 选择“CHECK约束(O)?”,可以设置该属性的自定义约束(如图3.28所示)。单击“添加(A)”或者“删除(D)”,添加默认自定义约束或者删除已定义约束;在“表达式”右侧直接填写自定义约束表达式,或者单击右侧的“...”,则弹出的窗口中(如图7所示)填写自定义约束表达式,然后单击“确定”,在图6中单击“关闭”。

图6 设置CHECK约束 图7 填写CHECK约束表达式

③如图5所示,单击工具栏的保存按钮,在弹出的“选择名称”窗口中输入:职工(如图8所示),单击“确定”。

图8 保存数据表

④使用同样的方法创建数据表:商店、商品和销售。在创建职工的过程中,参照约束和外键的创建方法如下:

◆在如图5所示的SSMS中,选择“关系”(如图9所示),单击“添加(A)”或者“删除(D)”,添加或者删除参照关系。本例单击“添加(A)”添加一个默认参照关系,然后选择“表和列规范”,并单击右侧“...”(如图10)。

◆在图10中,设置职工的外键店号及其对应的主键表商店和参照主键店号。具体方法:在“主键表(P):”下选择“商店”,并在商店的下方选择参照主键店号;然后在“外键表:”下方“职工”的下方选择外键“店号”(参照图10);单击确定。

◆在图10中,设置职工的自参照外键店号及其对应的主键表职工和参照主键工号。具体方法:在“主键表(P):”下选择“职工”,并在职工的下方选择参照主键工号;然后在“外键表:”下方“职工”的下方选择外键“经理”(参照图3.32);单击确定。

◆建立结果如图9所示,最后单击关闭。同理建立销售表中店号和品号两个外键的参照键束。

6

图9 设置外键关系 图10 设置外键属性

⑤在SSMS中,依次展开数据库和相应的数据表,在需要编辑的数据表上右击(如图11所示),然后选择“设计”、“重命名”和“删除”等对数据表进行相应的编辑。具体用法如下:

◆选择“设计”:可以修改数据表的数据项的属性,方法同上。 ◆选择“重命名”:可以修改数据表的名称。

◆选择“删除”:可以删除数据表,方法是在弹出的窗口中单击“确定”。 3)使用对象资源管理器编辑数据表记录

在如图11所示的SSMS中,依次展开数据库和相应的数据表,在需要编辑的数据表上右击,然后选择“编辑前200行(E)”(如图12所示),编辑表记录的方法如下:

图11 编辑数据表 图12 编辑数据表记录

①修改数据表内容:在数据表设计器中,可以直接对表的内容进行修改。

②向数据表添加新内容:在数据表设计器中,当编辑最后一个元组的数据时,生成器会在其下方自动添加一个新元组行,因此可以通过该新行添加新元组及其内容。

③删除数据表的元组:在要删除元组的所在行上,右击,然后选择“删除”,在弹出的对话窗口中选择“是(Y)”进行删除,或者“否(N)”取消删除。

(7)利用SSMS的查询编辑器创建数据库

在SSMS界面中,单击工具栏的“新建查询(N)”,启动查询编辑器如图13所示,然后直接使用Transact-SQL语句创建数据库、数据表和视图等。具体方法如下:

7

例如:在表StudentCourse中,删除所有选课。 DELETE FROM StudentCourse 3.建立视图

CREATE VIEW <视图> AS SELECT 语句

例如:利用数据库StudentDB,创建包含学号、姓名、课程名、成绩、性别和学院等信息的视图StuGrade。

CREATE VIEW StuGrade AS

SELECT Student.SNo, SName, CName, Grade, SSex, Coll FROM Student, Course, StudentCourse

WHERE Student.Sno=StudentCourse.SNo AND Course.CNo=StudentCourse.CNo

13

第三章 习题参考答案

1、试述关系模型的三个组成部分。

答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 2、试述关系数据语言的特点和分类。 答:关系数据语言可以分为三类:

⑴ 关系代数语言

⑵ 关系演算语言,包括元组关系演算语言和域关系演算语言 ⑶ 具有关系代数和关系演算双重特点的语言

这些关系数据语言的表达能力在安全限制下是相互等价的,其共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强大且能够嵌入高级语言中使用。 3、定义并理解下列术语,说明它们之间的联系与区别:

⑴ 域,笛卡尔积,关系,元组,属性; 答:

域:域是一组具有相同数据类型的值的集合。

笛卡尔积:给定一组域D1,D2,?,Dn,且它们可以相同。这组域的笛卡尔积定义为:

D1?D2???Dn={(d1,d2,?,dn) | di?Di,i=l,2,?,n},其中的每一个元素(d1,d2,?,dn)叫做一个n元组(n-tuple)或简称元组,元素中每个di叫做第i个分量。 关系:在域D1,D2,?,Dn上笛卡尔积D1?D2???Dn的任意一个子集称为关系,表示为 R(D1,D2, ?,Dn)

元组:关系中的每个元素是称为关系中的一个元组。

属性:关系等价于一张二维表,表的每一行对应一个元组,每一列对应一个域,且将这个域称为关系的一个属性。由于域可以相同,为了区分他们,必须给每列起一个名字,称为属性名。

⑵ 候选键,主码,外码,超码; 答:

候选键:若关系中的某一属性组的值能惟一地标识出一个元组,则称该属性组为候选键。 主码:若一个关系有多个候选键,则选定其中的一个作为主吗。

外码:在某个关系R中可能有这样一组属性A,它不是关系R的主码,但它是另一个关系S的主码,则属性组A称为关系R的外码。

超码:在关系中能唯一标识元组的属性集称为关系的超码。 ⑶ 关系模式,关系,关系数据库,属性,域,关系模型。

关系模式:对一类实体特征的结构性描述,即对关系的静态结构性描述,该描述一般包括关系名、属性名、属性域的类型和长度,属性之间固有的依赖联系等。若U={A1, A2, ?, An }为关系R的属性集,则关系模式常简记为R(U)或R(A1, A2, ?, An)。其中R为关系名,U为组成该关系的属性名集合。

关系模式的完整描述可以形式化地表示为 R(U,D,dom,F)

其中D为属性组U中属性所来自的域,dom为属性向域的映像集合,F为属性间数据依赖的集合。

关系数据库:关系的集合。关系数据库的型称为关系数据库模式,是对关系数据库的结构描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一个时刻对应的关系的集合。

关系模型:关系数据结构、关系操作集合和关系完整性约束统称为关系模型。 关系,属性和域:与⑴同。 4.己知零件供应数据库包括:

供应商S(SNo(供应商代码),SName (供应商名),City(城市))

零件P(PNo(零件代码),PName(零件名称),Color(颜色),Weight(重量)) 零件供应关系SP(SNo,PNo,Qty(供应数量)) 试用关系代数和关系演算完成下列操作: (1)找出能提供零件号为P3的供应商。 关系代数: ΠSno(σPno=’P3’(P))

?SNo(?PNo?'P3'(SP))(2)找出能提供供应商S1所提供的所有零件的供应商 关系代数: ΠJno,Pno(SPJ) ÷ΠPno(σSno=’S1’(SPJ)) ?SNo,PNo(SP)??PNo(?SNo?'S1'(SP))

(3)找出不提供零件P1和P2的供应商。 ?SNo,PNo(SP)??PNo(?SNo?'S 1'(SP))

(4)找出同时提供零件P1和P2的供应商。 ?SNo(?PNo?'P1'(SP))?SNo(?PNo?'P2'(SP))

(5) 找出同供应商S1在同一城市的供应商所提供的所有零件。 ?PNo(?T.SNo(?S.City?T.City?S.SNo?'S1'(S?T))SP) ?PNo(?T.SNo(?S.City?T.City?S.SNo?'S1'(S??T(S))SP) ?PNo((?SNo,City(S)??City(?SNo?'S1'(S)))SP) ?T(S)S重命名为T T是S的备份

(6)找出供应红色的P1零件的供应商,且其供应量大于1000。

?SNo(?Color?'红色'?Qty?1000(PSP))5.试述等值连接与自然连接的区别和联系。

答:连接运算中有两种最为重要也最为常用的连接,一种是等值连接,另一种是自然连接。

2

当连接条件中的算术比较符θ为“=”时的连接运算称为等值连接,记作:

R S=?(R×S) AR.A= S.BR.A=S.B 它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。即等值连接为

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的属性列必须是相同的属性组,并且在结果关系中把重复的属性列去掉。即若R和S具有相同的属性组A,令B=U1?U2 则自然连接可记作:

R S=?B(?R.A=S.A(R×

S)) 6.关系代数的基本运算有那些?如何用这些基本运算来表示其他运算?

答:在关系代数的八种运算中,并、差、笛卡儿积、投影和选择五种运算为基本运算。其他三种运算,即交、连接和除,均可以用五种基本运算来表达。

交运算:R∩S=R-(R-S)

?(R×S) 连接运算:R S=AR.Aθ S.B除运算:R(X,Y)÷S(Y,Z)=ΠX(R)- ΠX(ΠX(R)×ΠY(S)-R)

X、Y、Z为属性组,R中的Y和S中的Y可以有不同的属性名,但必须出自相同的域。 7.试述关系模型的完整性规则。在参照完整性中,为什么外键属性的值可以为空,举例说明什么情况下才可以为空。

答:关系模式的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束规则:实体完整性,参照完整性和用户定义的完整性。

其中实体完整性规则和参照完整性规则是关系模型必须满足的完整性条件,被称做是关系的两个不变性,应该由关系系统自动支持。

⑴ 实体完整性规则:对关系中的每一个元组,其主键属性对应的各个分量不能为空值。 ⑵ 参照完整性规则:设属性组A是关系R的外键且A与关系S的主键对应,则对于R中的每一个元组在属性A上的值必须为:或者为空值(A中每个属性值都为空值)或者等于S中某一元组的主键值。

参照完整性规则给出了关系之间建立联系的约束规则。

⑶ 用户定义的完整性规则:这是针对某一具体应用对数据约束条件,由应用环境决定。用户定义的完整性具体应用涉及到数据必须满足的语义要求。系统提供定义和检验这类完整性的统一处理方法,不再由应用程序承担这项工作。现在的商品化RDBMS都提供了定义和检查这类完整性约束的机制。

在参照完整性中,外键属性的值可以为空,它表示该属性的值尚未确定,但前提条件是该外部码属性不是其所在关系的主属性。

例如,下面“学生”表中的“专业号”是一个外键,但它不是学生表的主属性,可以为空,其语义是,该学生的专业尚未确定。

学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)

而在下面的“选修”表中的“课程号”虽然也是一个外键属性,但它又是“课程”表的主属性,所以不能为空,因为关系模型必须满足实体完整性。

课程(课程号,课程名,学分) 选修(学号,课程号,成绩)

R.AθS.B

3

第四章 习题参考答案

4.1 试述SQL语言的特点。

答:SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体,主要特点包括:

⑴ 综合统一:SQL语言将数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能

集于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。 ⑵ 高度非过程化:用SQL语言进行数据操作只要提出“做什么”,而无需指明“怎么做”。 ⑶ 面向集合操作:SQL语言操作的对象和操作的结果都是集合——关系。 ⑷ 一种语法,两种使用方式:SQL语言既是自含式语言,又是嵌入式语言。 ⑸ 语言简捷,易学易用:完成核心功能只用9个动词,SQL语言接近英语句子。

⑹ 支持三级模式结构:外模式对应于视图(View),模式对应于基本表,内模式对应于存储文

件。

4.2 试述SQL的定义功能。

答:SQL的数据定义功能包括定义表、定义视图和定义索引。 SQL语言使用CREATE TABLE语句建立基本表,ALTER TABLE语句修改基本表定义,DROP TABLE语句删除基本表;使用CREATE INDEX语句建立索引,DROP INDEX语句删除索引;使用CREATE VIEW语句建立视图,DROP VIEW语句删除视图。

4.3 用SQL语句建立习题3.4中的3个表。即:

⑴ 供应商表:S(Sno(供应商代码),Sname (供应商名),Status(供应状态),City(供应商所在城市));

⑵ 零件表:P(Pno(零件代码),Pname(零件名),Color(颜色),Weight(重量)); ⑶ 零件供应情况表:SP(Sno(供应商代码),Pno(零件代码),Qty(供应数量), 答:

⑴ 对于供应商表:S(Sno,Sname,Status,City)建对应的S表,其命令如下: CREATE TABLE S

(Sno CHAR(4),Sname CHAR(10),Status CHAR(4),City CHAR(20))

⑵ 对于零件表:P(Pno,Pname,Color,Weight)建对应的P表,其命令如下: CREATE TABLE P

(Pno CHAR(4),Pname CHAR(20),Color CHAR(4),Weight INT)

⑶对于零件供应情况表:SPJ(Sno,Pno,Jno,QTY) 建对应的SPJ表,其命令如下:。 CREATE TABLE SP

(Sno CHAR(4) References S(SNo), Pno CHAR(4) References P(PNo), Qty INT)

4.4 针对习题4.3中建立的3个表,试用SQL语言完成习题3.4中的查询。

第七章 习题参考答案

1.解释外模式设计的含义,简述外模式设计的基本内容。

外模式设计:在系统整体逻辑结构的基础上,根据用户的不同需求,利用外模式 / 模式映像把整体逻辑结构映像成不同的局部逻辑结构,同时结合具体DBMS的特点,设计适合用户不同局部应用的局部逻辑结构的过程。即:外模式是局部逻辑结构的集合。

基本内容:(1)局部逻辑结构设计、(2)数据类型转换、(3)数据格式转换、(4)数据名称转换、(5)局部图形用户界面LGUI设计。

2.什么是视图?简述视图与表的关系。

视图:利用查询语句定义的,从一个或者多个数据表中导出的虚表。即视图不存放具体数据;是数据库逻辑模式的局部数据的临时体现。

关系:(1)视图与表的区别

1)概念不同。表是使用DBMS的DDL定义的,拥有真实数据的,以独立文件的形式存储在计算机外存上的具有固定模式结构和相应元组数据的实表。视图则是利用带有查询语句的视图定义,从表或视图中导出的虚表。

2)数据有效期不同。表示拥有真实数据的实表,而视图是没有数据,只有视图定义的虚表。 3)数据存储不同。表是永久存储在外存,而视图是执行时创建临时表,用后释放。 4)更新方式不同。表一般可以任意更新,而视图一般不能任意更新,会受到一定限制。 (2)视图与表的联系

1)视图最终是定义在表之上,其数据最终来自表。表是创建视图的基础,并为视图提供数据。如果表发生了改变(或者被删除),则必须修改(删除、或者重新建立)相应的视图。

2)对于最终用户,视图与表基本相同,即:视图和表在用户看来都是表,用户可以按照表的使用方法来使用视图,同时可以在视图上再定义视图。

3.简述视图的作用。

简化用户操作;清晰表达查询;同一数据以不同形式提供给不同用户;一定程度上提高DB的保密和保护性;提供一定程度的DB模式结构的逻辑独立性。

4.简述CREATE VIEW的用法,并为数据库StudentDB设计一个外模式,然后利用该语句实现该外模式。

用法:CREATE VIEW <视图名> [(<列名> [,<列名>]… )] AS SELECT 语句 [WITH CHECK OPTION]

例如:利用数据库StudentDB,建立“数学学院”学生的全部详细信息的视图SMathInfo。 实现:CREATE VIEW SMathInfo AS

SELECT S.SNo, SName, SSex, SAge, Coll, C.CNo, CName, CPNo, Credit, Grade

FROM Student S, StudentCourse SC, Course C

WHERE S.SNo=SC.SNo AND SC.CNo=C.CNo AND Coll='数学学院' 5.简述视图的查询方法。并举例说明。

查询:由于视图本身就是虚表,因此可以使用SELECT语句对视图实施同样的查询,具体查询方法与表的查询完全一样,同时还可以对表和视图进行混合查询。

例如:利用表Student和视图SMaxMinAvgGrade查询学生的学号、姓名、性别、年龄、学院、最低分、最高分和平均成绩。

实现:SELECT S.*, MaxGrade, MinGrade, AvgGrade

FROM Student S, SMaxMinAvgGrade G WHERE S.SNo=G.SNo

6.简述视图的更新方法及其与WITH CHECK OPTION的关系。每一个视图是否均可以任意更新?问什么?

更新方法:与表的更新方法相同。但是由于视图本身是不能存储数据的虚表,因此对视图的更新,最终需要转换为对表的更新。即:表面上是视图更新,本质上是表更新。

二者关系:WITH CHECK OPTION强制针对视图执行的所有数据修改语句都必须符合在SELECT语句中设置的条件。在定义视图时加上WITH CHECK OPTION子句之后,如果在对视图进行插入、修改或者删除时,RDBMS会自动监测视图定义中的条件,若不满足条件,则拒绝执行该操作,因此防止了用户通过视图对数据进行更新操作,在一定程度上保护了数据库。

更新条件:视图不能任意更新,视图的更新是有条件的,并不是所有的视图都可以更新。因为视图与表的更新转换,有时是不可逆的,只有满足规定的条件,才可以更新。

7.简述视图的修改方法。并举例说明。

用法:ALTER VIEW <视图名> [(<列名> [,<列名>]… )] AS SECLECT 语句 [WITH CHECK OPTION]

例如:利用数据库AdventureWorks,创建一个包含所有雇员及其雇佣日期的视图EmployeeHireDate,并为该视图授予了权限。但是创建视图后,发现必须将视图更改为只包括在2000年之前雇佣的雇员。则需要使用ALTER VIEW进行修改。即:

实现:CREATE VIEW EmployeeeHireDate AS SELECT c.FirstName, c.LastName, e.HireDate

FROM HumanResources.Employee e JOIN Person.Contact c ON e.ContactID = c.ContactID ALTER VIEW EmployeeeHireDate AS

SELECT c.FirstName, c.LastName, e.HireDate

2

FROM HumanResources.Employee e JOIN Person.Contact c ON E.ContactID = C.ContactID WHERE HireDate < '1/1/2000' 8.简述视图的删除方法。并举例说明。 用法:DROP VIEW <视图名> [,<视图名>… ] 例如:删除视图EmployeeeHireDate。 实现:DROP VIEW EmployeeeHireDate

9.解释物理结构和物理结构设计。简述物理结构设计的主要内容。 物理结构:数据库在存储介质上的存储结构和存放位置。

物理结构设计:设计逻辑结构的最佳存取方法、存储结构和存放位置以及合理选择存储介质等,从而设计适合逻辑结构的最佳物理环境(内模式)的过程。

内容:选取存取方法、设计存储结构、确定存放位置和选择存储介质等。 10.简述物理结构设计的方法步骤。

选择存取方法、设计存储结构、确定存放位置、选取存储介质和评价物理结构。 11.什么是索引机制、索引表和索引文件?简述索引机制的作用。

索引机制:对于数据库的表,按照查询数据所对应的关键属性,建立相应的索引文件,在执行查询时,先在索引文件中找到查询的元组在表中的位置(即:记录号),然后再根据记录号,去表中取出数据。把先查询索引文件,再从表中取数据的检索机制称为索引机制。

索引表:把索引属性值,按照升序或者降序排序后,再与其对应元组在表中的记录号组成的对照表。即:索引表是索引属性与其元组记录号的对照表。

索引文件:用于存储索引的文件。 作用:实现数据的快速访问。 12.什么是聚簇索引,简述聚簇索引与非聚簇索引的区别。

聚簇索引:在按照关键属性对表建立索引时,同时按照索引顺序对表的相应元组的物理存储位置进行排序,使索引顺序与表中相应元组的物理顺序始终保持一致的索引过程。

区别:

(1)聚簇索引顺序与元组存储顺序始终一致;非聚簇索引顺序与元组存储顺序无关。 (2)聚簇索引B+树的叶节点就是数据节点;非聚簇索引则仍然是索引节点。 (3)一个表只能有一个聚簇索引;一个表则可以有多个非聚簇索引。

(4)建立和维护聚簇索引的开销很大,灵活性差;非聚簇索引则相对很小,比较灵活。 (5)聚簇索引适合更新较少或者不更新的应用;非聚簇索引则适合更新较多的应用。 13.简述聚簇索引的作用及其应用范围。

作用:实现对数据库的快速访问。其维护费用很大。 范围:

1)经常进行连接操作的数据表建议使用聚簇索引。

2)对于属性组的利用率很高或者重复率很高的关系建议使用聚簇索引。

3

3)需要经常进行插入、删除或者修改等更新操作的关系不建议使用聚簇索引。 4)对于更新操作远多于连接操作的关系不建议使用聚簇索引。 14.什么是散列函数?简述散列索引机制。

散列函数:实现索引属性值到桶地址之间映射关系的函数。即:把索引属性值映射到桶地址的函数。散列函数的构造是散列索引的核心内容。

索引机制:一种基于散列函数和桶(Bucket)的检索模式,即:利用散列函数计算出存储数据的桶地址,然后再按照桶地址访问桶中的数据。桶是数据的基本存储单位。

15.简述常用的存取方法。

平衡树索引、聚簇索引和散列索引等。 16.简述存储位置设计的基本原则。

(1)相关联同属性的文件存放在同一个目录。 (2)易变部分与稳定部分应该分开存放。

(3)存取高频部分和存取低频部分应该分别存放到快速介质和慢速介质。 17.简述常用的存储介质。

磁盘、磁带、光盘、磁盘阵列RAID、磁带库、光盘塔、光盘库、SAN网络存储、NAS网络存储和IP SAN网络存储等。

18.简述选取存储介质的主要性能指标和基本原则。

(1)存储容量。以够用为基本准则,过大不但影响访问速度,而且造成浪费。 (2)存取速度。在预定费用下,越快越好。

(3)接口类型。选择流行的标准接口,速度越快越好。 (4)介质费用。购置费用和维护费用控制在系统预算之内。

(5)介质类型。确定磁盘、磁带和光盘等设备,还是RAID、SAN和NAS等组合设备。 19.简述物理结构的评价方法。

根据物理结构的存取方法的正确性、存储结构的合理性、存放位置的规范性和存储介质的标准性等评价内容、以及存储空间利用率、存取数据速度和维护费用等评价指标,通过对比各项指标,选择适合应用的最佳物理结构。

20.在SQL Server 2005环境下,简述建立索引和修改索引的用法,并举例说明。 建立:CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]?)

例如:在数据库AdventureWorks中,对表Sales.SalesPerson按照SalesQuota和SalesYTD列创建非聚集组合索引。

CREATE NONCLUSTERED INDEX SalesPersonQuotaYTDIndex ON Sales.SalesPerson (SalesQuota, SalesYTD) 修改:ALTER INDEX { <索引名> | ALL }

ON <表名> { REBUILD | DISABLE| REORGANIZE }

例如:在数据库AdventureWorks中,重新生成Employee的索引PK_Employee_EmployeeID。 ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REBUILD

4

21.利用数据库StudentDB,分别对三个数据表建立默认索引、唯一索引和聚簇索引。 例如:在数据库StudentTestDB中,对Student按姓名分别建立聚簇和非聚簇索引。对Course按课程名以降序建立唯一索引。对StudentCourse按学号升序和课程号降序建立唯一索引。

CREATE INDEX SSNameIndex ON Student(SName)

CREATE CLUSTERED INDEX SSNameCIndex ON Student(SName) CREATE UNIQUE INDEX CCNameUIndex ON Course(CName)

CREATE UNIQUE INDEX SCSNoCNoUIndex ON StudentCourse(SNo ASC, CNo DESC) 22.利用数据库StudentDB,分别对第21题建立的索引进行修改、禁用和启用操作。 答:(1)通过修改重新生成索引。 ALTER INDEX StudentSNo ON Student(SNo) REBUILD (2)禁用Student的索引StudentSNo:

ALTER INDEX SCSNoCNo ON Student(SNo) DISABLE (3)启用Student的索引StudentSNo:

ALTER INDEX StudentSNo ON Student(SNo) REBUILD 23.简述删除索引的用法,并举例说明。 删除:DROP INDEX <表名>. <索引名>

例如:在数据库StudentDB中,同时删除表Student的索引SSNameIndex和表StudentCourse的索引SCSNoCNoUIndex。

DROP INDEX Student.SSNameIndex, StudentCourse.SCSNoCNoUIndex

24.利用数据库StudentDB,建立每一门课程的课程号、课程名、最高分、最低分和平均成绩等对应的视图。

CREATE VIEW CourseGrade(课程号,课程名,最高分,最低分,平均成绩) AS SELECT CNo,CName, MAX(Grade), MIN(Grade), AVG(Grade) FROM StudentDbtInfo GROUP BY CName

25.如果关系R(R1,…,R6,R7,…,R20),包含60万个元组,但是前6万个元组的利用率非常高,而其它元组的利用率非常低,则应该如何设计存储结构。

按照利用率,把R水平分割成两个相同结构的数据表,并把利用率非常高的数据表存入高速设备(例如:SCSI高速硬盘),把利用率非常低的数据表存入低速设备(例如:光盘或者磁带)。

26.对于任意表,使用索引机制进行检索与不使用索引机制而直接对表进行检索相比,是否前者一定比后者快?为什么?在什么情况下,前者一定比后者快?

不一定;因为需要根据数据库的结构和记录多少、以及利用效率来综合考虑;数据库中记录非常多,而且访问次数较多时。

5

第八章 习题参考答案

1.解释查询优化,简述查询优化的基本规则。

查询优化是指对SQL查询过程进行分析,最大限度的提高SQL的查询速度。查询优化分为代数优化和物理优化两个方面。

下面的优化策略一般能提高查询效率: ( l )选择运算应尽可能先做; ( 2 )把投影运算和选择运算同时进行; ( 3 )把投影同其前或其后的双目运算结合起来执行; ( 4 )把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算; ( 5 )找出公共子表达式; ( 6 )选取合适的连接算法。

2.简述查询优化的一般步骤。

各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下: ( l )把查询转换成某种内部表示,通常用的内部表示是语法树。 ( 2 )把语法树转换成标准(优化)形式。即利用优化算法,把原始的语法树转换成优化的形式。 ( 3 )选择低层的存取路径。 ( 4 )生成查询计划,选择代价最小的。

3.对学生数据库有如下的查询:

查询数学系学生选修的所有课程名称: SELECT CName

FROM Student S, Course C, StudentCourse SC

WHERE S.SNo=SC.SNo AND SC.CNo=C.CNo AND S.SDept='数学系'

试画出用关系代数表示的语法树,并使用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的优化语法树;最后写出优化后的关系代数表达式。

4.查询选修了数据库技术的学生姓名。给出SQL Server查询语句和关系代数表达式,并给出初始语法树和优化语法树;最后写出优化后的关系代数表达式。

参考第三题

2

第九章 习题参考答案

1.解释事务?简述事务的四个特性。

事务(Transaction)是DBS的一个操作单元,它包含了用户定义的一个基本操作序列,这个基本操作序列可以包含一个或者多个数据库的基本操作。事务所包含的基本操作要么都做,要么都不做,它们构成了一个不可分割的工作单元。

事务具有四个基本特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),简称为 ACID特性。

(1)原子性:事务必须是原子工作单元;对于其过程所涉及的数据修改,要么是全都被执行,要么全都不被执行。

(2)一致性:事务在完成时,必须使所有的数据都保持一致。在相关DB中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有内部数据结构都必须是正确的。事务将DB从一个一致性状态转变为另外一个一致性状态,但在事务内无须保证一致。

(3)隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时,数据所处的状态要么是另一并发事务修改之前的状态,要么是另一事务修改之后的状态,事务不会查看中间状态的数据,即事务的可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

(4)持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持,其对数据库的更新也将永久有效。

2.简述DBS的故障种类。解释事务故障、系统故障和介质故障的恢复策略。

根据故障发生的环境和原因,DBS发生的故障大致分为:事务故障、系统故障、介质故障、计算机病毒。

事务故障可以分为两类,一类是事务内部的数据逻辑性错误,这类错误是可预见并通过事务的逻辑流程消除。另外一类是其他问题导致的事务内部故障,这类故障事务内部更多的是非预期的(例如:运算死锁、运算溢出等),这种非预期故障不能由应用程序处理。

系统故障是造成DBS停止运转的任何事件,这些事件使得系统需要重新启动。例如,特定的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电等。

系统故障常称为软故障,介质故障称为硬故障。硬故障指外存故障,即磁盘损坏、磁头碰撞,瞬时强磁场干扰等情况导致的存储介质故障。这类故障将破坏部分乃至整个DB,并影响正在存取这部分数据的所有事务。

3.简述恢复机制的核心技术以及建立冗余数据的常用技术。

恢复技术的核心技术就是冗余,也就是对DB利用某种方式进行备份。

数据转储就是定期地将DB复制到另一些存储介质上保存起来的过程(亦称DB备份)。这些备用的数据文件称为后备副本或者后援副本。当DB遭到破坏后可以将后备副本重新装入,

但是重装后备副本只能将DB恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。

日志文件是用来记录事务对DB进行更新操作的文件。日志记录了所有更新操作的具体细节,尤其是被更新对象的前后映像。因此,如果有必要撤消某个更新,系统可利用相应的日志记录恢复被更新对象的原值。

4.什么是数据转储?简述数据转储的常用方法。给出一个数据转储的可行策略。

数据转储就是定期地将DB复制到另一些存储介质上保存起来的过程(亦称DB备份)。这些备用的数据文件称为后备副本或者后援副本。

静态转储:在系统中无运行事务时进行的转储操作,如上图所示。静态转储简单,但必须等待正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。

动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件( 109 file )。这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。转储还可以分为海量转储和增量转储两种方式。 海量转储是指每次转储全部数据库。

增量转储则指每次只转储上一次转储后更新过的数据。从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。

5.什么是日志文件?简述常用的日志文件及其具体内容。

日志文件是用来记录事务对数据库的更新操作的文件。

针对日志文件的格式,不同DBS采用的文件格式并不完全一样。不过,对于不同的产品,日志文件的主要格式是以记录为单位的日志文件和以数据块为单位的日志文件。 (1)日志文件的内容和格式

对于以记录为单位的日志文件,日志文件中需要登记的内容包括: ◇ 各个事务的开始(BEGIN TRANSACTION)标记 ◇ 各个事务的结束(COMMIT或ROLL BACK)标记 ◇ 各个事务的所有更新操作

这里每个事务的开始标记、结束标记和每个更新操作均作为日志文件中的一个日志记录。 每个日志记录的内容主要包括: ◇ 事务标识(标明是那个事务) ◇ 操作的类型(插入、删除或修改) ◇ 操作对象(记录内部标识)

◇ 更新前数据的旧值(对插入操作而言,此项为空值)

2

◇ 更新后数据的新值(对删除操作而言, 此项为空值)

对于以数据块为单位的日志文件,日志记录的内容包括事务标识和被更新的数据块。由于将更新前的整个块和更新后的整个块都放入日志文件中,操作的类型和操作的对象等信息就不必放入日志文件中。

6.简述日志文件的登记规则中必须先写日志文件,后写数据库的原因。

把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。

如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO 操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。

7.什么是并发控制?简述并发控制与数据共享的关系。

并发控制是指对事务的并发执行进行调度,避免事务之间因为对共享数据的争夺造成数据的不一致性。

从事务并发过程来看,不同事务对共同数据进行读写是产生问题的关键,因为不同的事务都对共同数据进行读写可能导致一个事务对另外一个事务的中间结果进行读写,因而可能破坏事务的ACID特性。为了解决并发事务可能带来的问题,需要对事务进行合理的控制。

8.简述并发事务主要导致的数据不一致。如何解决?

并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。 ( l ) 丢失修改(lost update ) 两个事务 Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了) Tl 提交的结果,导致 Tl 的修改被丢失。

( 2 ) 不可重复读( Non Repeatable Read ) 不可重复读是指事务 Tl 读取数据后,事务几执行更新操作,使 Tl 无法再现前一次读取结果。

( 3 ) 读“脏”数据( Dirty Read ) 读“脏’夕数据是指事务 Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后, Tl 由于某种原因被撤销,这时 Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。

避免不一致性的方法和技术就是并发控制,最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

9.解释封锁?简述常用的封锁。

封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。

基本的封锁类型有两种:排它锁( Exclusive Locks ,简称 x 锁)和共享锁 ( Share Locks,简称 S 锁)。排它锁又称为写锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和

3

本文来源:https://www.bwwdw.com/article/2066.html

Top