《数据库系统及应用》课后习题解答(详解)_第1页
《数据库系统及应用》课后习题解答(详解)_第2页
《数据库系统及应用》课后习题解答(详解)_第3页
《数据库系统及应用》课后习题解答(详解)_第4页
《数据库系统及应用》课后习题解答(详解)_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《数据库系统及应用》课后习题解答(详解)

习题一

1.什么是数据库?

数据库是相互关联的数据的集合,它用综合的方法组织

数据,具有较小的数据冗余,可供多个用户共享,具有较高

的数据独立性,具有安全控制机制,能够保证数据的安全、

可靠,允许并发地使用数据库,能有效、及时地处理数据,

并能保证数据的一致性和完整性。

2.简要概述数据库、数据库管理系统和数据库系统各自

的含义。

数据库、数据库管理系统和数据库系统是三个不同的概

念,数据库强调的是相互关联的数据,数据库管理系统是管

理数据库的系统软件,而数据库系统强调的是基于数据库的

计算机应用系统。

3.数据独立性的含义是什么?

数据独立性是指数据的组织和存储方法与应用程序互

不依赖、彼此独立的特性。这种特性使数据的组织和存储方

法与应用程序互不依赖,从而大大降低应用程序的开发代价

和维护代价。

4.数据完整性的含义是什么?

保证数据正确的特性在数据库中称之为数据完整性。

5.简要概述数据库管理员的职责。

数据库管理员的职责可以概括如下:

(1)首先在数据库规划阶段要参与选择和评价与数据库有

关的计算机软件和硬件,要与数据库用户共同确定数据库系

统的目标和数据库应用需求,要确定数据库的开发计划;

(2)在数据库设计阶段要负责数据库标准的制定和共用数

据字典的研制,要负责各级数据库模式的设计,负责数据库

安全、可靠方面的设计;

(3)在数据库运行阶段首先要负责对用户进行数据库方面

的培训;负责数据库的转储和恢复;负责对数据库中的数据

进行维护;负责监视数据库的性能,并调整、改善数据库的

性能,提高系统的效率;继续负责数据库安全系统的管理;

在运行过程中发现问题、解决问题。

6.文件系统用于数据管理存在哪些明显的缺陷?

文件系统用于数据管理明显存在如下缺陷:

(1)数据冗余大。这是因为每个文件都是为特定的用途设

计的,因此就会造成同样的数据在多个文件中重复存储。

(2)数据不一致性。这往往是由数据冗余造成的,在进行

更新时,稍不谨慎就会造成同一数据在不同文件中的不一

致。

(3)程序和数据之间的独立性差。应用程序依赖于文件的

存储结构,使得若修改文件的存储结构则必须修改程序。

(4)数据联系弱。文件与文件之间是独立的,文件之间的

联系必须通过程序来构造。因此,文件系统是一个不具有弹

性的、无结构的数据集合,不能反映现实世界事物之间的联

系。

习题二

1.数据的三种范畴的含义是什么?

数据需要我们的认识、理解、整理、规范和加工,然后

才能存放到数据库中。数据从现实生活进入到数据库实际经

历了现实世界阶段(认识、理解)、信息世界阶段(规范、

提升)和机器世界阶段(管理),我们也把之称为数据的三

种范畴,数据在三种范畴中的概念、术语都有些不同。

2.对以下问题分析实体之间的联系,并分别画出E-R图:

3.试述为什么要讨论实体之间的联系类型?

实体之间的联系类型决定了数据库设计时的结果,与数

据库的设计质量密切相关。

4.多对多联系如何转换成一对多联系?并举例说明。

通过引入一个表示联系的实体,将原来两个实体之间的

一个多对多的联系转换成分别与表示联系的实体之间的两

个一对多的联系。例如,仓库和材料两个实体之间存在着多

对多的联系,即一个仓库可以存放多种材料,一种材料可以

存放在多个仓库;通过引入一个库存实体转换为仓库与库存

之间的一对多联系和材料与库存之间的一对多联系。

5.解释连接陷阱的概念,在操作数据库时如何避免连接

陷阱?

所谓连接陷阱就是误认为本来不存在联系的两个实体

之间存在联系,从而强行进行连接操作,自然得到错误的结

果。为了避免连接陷阱,必须明确实体之间的联系和联系类

型,只在有联系的实体之间进行关联操作。

6.传统的三大数据模型是哪些?它们分别是如何表示实

体之间的联系的?

传统的三大数据模型是层次模型、网状模型和关系模

型。层次模型用层次结构表示联系,它的典型代表IMS用层

次型表示联系;网状模型用网状结构表示联系,它的典型代

表CODASYL用系表不联系;关系模型用关系表不联系。

7.解释存储数据独立性和概念数据独立性的区别。

存储数据独立性强调的是应用程序与数据的存储结构

相互独立的特性,即修改数据的存储方法或数据结构时不影

响应用程序;而概念数据独立性强调的是应用程序与数据的

概念结构相互独立的特性,即修改概念结构中的字段时不影

响应用程序。

8.为什么说概念数据库和外部数据库物理上并不真正存

在?

只有存储数据库是物理上存在的数据库,概念数据库是

存储数据库的抽象,它反映了数据库的全局逻辑结构;而外

部数据库是概念数据库的部分抽取,它反映了数据库的局部

逻辑结构。

9.说明在DBMS中存储模式、概念模式和外部模式的作

用。

存储模式描述了数据库的存储结构,它包括对存储数据

库中每个文件以及字段的描述,包括用于实现辅助关键字或

存储文件间联系的指针字段的细节。存储数据库利用存储模

式组织和存取存储数据库中的文件。如果要修改存储数据库

的结构(例如,用倒排文件代替多链表),那么仅仅需要把

这些修改反映在存储模式中,以使数据库存储系统能够操作

新的存储数据库。按这种方法,数据库管理系统可以提供存

储(物理)数据独立性。

概念模式是对概念数据库的描述,它包括对概念文件及

概念文件之间联系的描述。概念数据库不包含真正的数据,

一切都是由存储数据库决定的。

外部模式则是对外部数据库的描述,它需要说明外部文

件、构成外部文件的字段及这些外部文件之间的联系。

数据库管理系统提供了外部模式与概念模式之间的映

象以及概念模式与存储模式之间的映象,使用户通过外部数

据库或概念数据库来操作存储数据库。

习题三

1.解释属性与值域的区别。

属性是二维表中的列,而值域是列或属性的取值范围。

2.关系模型的三个组成部分是什么?

关系数据模型包括关系数据结构、关系操作集合和关系完

整性约束三个重要因素。

3.对关系模型的操作都包括哪些?

关系数据模型中的操作包括:

⑴传统的集合运算:并(Union)、交(Intersection)>差

(Difference)>广义笛卡尔积(ExtendedCartesianProduct);

(2)专门的关系运算:选择(Select)>投影(Project)、连

接(Join)、除(Divide);

(3)有关的数据操作:查询(Query)、插入(Insert删除

(Delete)>修改(Update)。

4.关系模型的完整性规则都有哪些?

在关系数据模型中一般将数据完整性分为实体完整性、

参照完整性和用户定义完整性。

5.试述外部关键字的概念和作用,外部关键字是否允许

为空值,为什么?

如果一个属性集不是所在关系的关键字,但是是其他关

系的关键字,则该属性集称为外部关键字。外部关键字用于

实现表与表之间的参照完整性。

外部关键字是否允许为空值取决于语义的规定。外部关

键字的取值或者为空值、或者为被参照关系中的某个关键字

字段的值。

6.分别叙述在进行插入、删除、更新操作时都需要进行

哪些完整性检查,并说明理由。

(1)执行插入操作时需要分别检查实体完整性规则、参照

完整性规则和用户定义完整性规则。

首先检查实体完整性规则,如果插入元组的主关键字的属

性不为空值、并且相应的属性值在关系中不存在(即保持唯

一性),则可以执行插入操作,否则不可以执行插入操作。

接着再检查参照完整性规则,如果是向被参照关系插入元

组,则无须检查参照完整性;如果是向参照关系插入元组,

则要检查外部关键字属性上的值是否在被参照关系中存在

对应的主关键字的值,如果存在则可以执行插入操作,否则

不允许执行插入操作。另外,如果插入元组的外部关键字允

许为空值,则当外部关键字是空值时也允许执行插入操作。

最后检查用户定义完整性规则,如果插入的元组在相应的

属性值上遵守了用户定义完整性规则,则可以执行插入操

作,否则不可以执行插入操作。

(2)执行删除操作时一般只需要检查参照完整性规则。

如果删除的是参照关系的元组,则不需要进行参照完整性

检查,可以执行删除操作。

如果删除的是被参照关系的元组,则检查被删除元组的主

关键字属性的值是否被参照关系中某个元组的外部关键字

引用,如果未被引用则可以执行删除操作;否则可能有三种

情况:

1)不可以执行删除操作,即拒绝删除;

2)可以删除,但需同时将参照关系中引用了该元组的对

应元组一起删除,即执行级联删除;

3)可以删除,但需同时将参照关系中引用了该元组的对

应元组的外部关键字置为空值,即空值删除。

(3)执行更新操作可以看作是先删除旧的元组,然后再插

入新的元组。所以执行更新操作时的完整性检查综合了上述

两种情况。

7.试述关系的自然连接和等值连接的异同之处。

自然连接和等值连接都是基于相等比较运算的连接,但

是自然连接要去掉重复的属性,而等值连接却不需要去掉重

复的属性。

8.以图3-6的数据库为例(可参照图5-1,该数据库的实

例),用关系代数完成以下检索:

注意:此处暂以*表示连接运算符。

1)检索在仓库WH2工作的职工的工资。

"职工号,工资(0仓库号="WH2"(职工))

2)检索在上海工作的职工的工资。

"职工号,工资(。城市="上海”(仓库)*职工)

3)检索北京的供应商的名称。

71供应商名(0地址="北京"(供应商))

4)检索目前与职工E6有业务联系的供应商的名称。

"供应商名(。职工号="E6"(订购单)*供应商)

5)检索所有职工的工资都大于1220元的仓库所在的城

市。

"城市(仓库)-"城市(。工资<=1220(职工)*仓库)

6)检索和北京的所有供应商都有业务联系的职工的工

资。

"职工号,工资(职工*(订购单+"供应商号(。地址="北京"(供应商))))

7)检索至少和职工El、E4、E7都有联系的供应商的名

称。

"供应商名(订购单+(“Er',“E4",“E7")*供应商)

9.试述关系数据库系统的三层模式结构。

习题四

1.简述客户/服务器结构的概念,并说明客户/服务器结构

与文件服务器网络结构的区别。

客户/服务器结构的基本思想是应用程序或应用逻辑可

以根据需要划分在服务器和客户工作站中,它既不像集中式

系统那样所有的应用程序都在主机上执行,也不像文件服务

器网络那样所有的应用程序都在客户端执行,它可以使应用

程序合理负担在服务器和客户端。

客户/服务器结构与文件服务器网络结构的硬件拓扑结

构很相似,它们的根本区别在于:客户/服务器结构的服务器

可以执行应用程序;而文件服务器的服务器只是一个数据共

享器,它不能执行应用程序。

2.在客户/服务器结构中,数据库服务器和客户端计算机

是如何分工的?

数据库服务器应完成数据管理、信息共享、安全管理、

以及一些更高级的管理。它是一个开放的体系结构,可以接

受来自各种应用程序和开发工具的客户端的连接;它除了要

管理集中的数据库之外,还要处理来自客户端的数据访问请

求和将结果反馈给用户(包括管理请求队列、管理缓存、响

应服务、管理结果和通知服务完成等)的工作。

而客户端计算机是面向最终用户的,所以它的主要任务

是提供友好的用户界面,提交数据访问请求以及接收和处理

数据库的返回结果,组织返回数据的输出(如生成数据浏览

窗口、生成数据报表和图形等),提供初步的数据验证功能

等。

3.SQLServer在安装后默认创建了哪几个系统数据库?

分别叙述它们的作用。

SQLServer在安装后默认创建了4系统数据库,它们是:

⑴master数据库。master数据库用于存储SQLServer系

统的所有系统级信息,包括所有的其它数据库(如建立的用

户数据库)的信息(包括数据库的设置、对应的操作系统文

件名称和位置等)、所有数据库注册用户的信息以及系统配

置设置等。

(2)tempdb数据库。tempdb数据库用于保存所有的临时表

和临时存储过程,它还可以满足任何其它的临时存储要求。

(3)model数据库。model数据库是一个模板数据库,当使

用CREATEDATABASE命令建立新的数据库时,新数据库

的第一部分总是通过复制model数据库中的内容创建,剩余

部分由空页填充。

(4)msdb数据库。msdb数据库用于SQLServer代理程序

调度报警和作业等系统操作。

4.试述SQLServer的CREATEDATABASE命令在创建数

据库时是如何申请物理存储空间的?

通过指定的物理文件名、文件的大小等向操作系统申请物

理存储空间。

5.试述SQLServer企业管理器的功能。

略。

习题五

1.试概述SQL语言的功能。

SQL是一种一体化的语言,它包括了数据定义、数据查

询、数据操纵和数据控制等方面的功能,它可以完成数据库

活动中的全部工作。

2.以图5-1的数据库为例,用SQL完成以下检索:

1)检索在北京的供应商的名称。

SELECT*FROM供应商WHERE地址北京’

2)检索发给供应商S6的订购单号。

SELECT订购单号FROM订购单WHERE供应商号

=,S6,

3)检索出职工E6发给供应商S6的订购单信息。

SELECT*FROM订购单WHERE供应商号=36,AND

职工号='E6'

4)检索出向供应商S3发过订购单的职工的职工号和仓库

号。

SELECT职工号,仓库号FROM职工WHERE职工号

IN

(SELECT职工号FROM订购单WHERE供应商号

='S3')

5)检索出目前与S3供应商没有联系的职工信息。

SELECT*FROM职工WHERE职工号NOTIN

(SELECT职工号FROM订购单WHERE供应商号

6)检索出目前没有任何订购单的供应商信息。

SELECT*FROM供应商WHERENOTEXISTS

(SELECT*FROM订购单WHERE供应商号二供应

商.供应商号)

7)检索出和职工El、E3都有联系的北京的供应商信息。

SELECT*FROM供应商WHERE供应商号IN

(SELECT供应商号FROM订购单WHERE职工号

='E1')

AND供应商号IN

(SELECT供应商号FROM订购单WHERE职工号

8)检索出目前和华通电子公司有业务联系的每个职工的

工资。

SELECT职工号,工资FROM职工WHERE职工号IN

(SELECT职工号FROM订购单WHERE供应商号

IN

(SELECT供应商号FROM供应商WHERE供应

商名二,华通电子公司,))

9)检索出与工资在1220元以下的职工没有联系的供应商

的名称。

SELECT供应商名FROM供应商WHERE供应商号

IN

(SELECT供应商号FROM订购单WHERE职工号

NOTIN

(SELECT职工号FROM职工WHERE工资v

1220))

10)检索出向S4供应商发出订购单的仓库所在的城市。

SELECT城市FROM仓库WHERE仓库号IN

(SELECT仓库号FROM职工WHERE职工号IN

(SELECT职工号FROM订购单WHERE供应商

号='S4'))

11)检索出在上海工作并且向S6供应商发出了订购单的

职工号。

SELECT职工号FROM职工WHERE仓库号IN

(SELECT仓库号FROM仓库WHERE城市」上海,)

AND职工号IN

(SELECT职工号FROM订购单WHERE供应商号

=S65))

12)检索出在广州工作并且只向S6供应商发出了订购单

的职工号。

SELECT职工号FROM职工WHERE仓库号IN

(SELECT仓库号FROM仓库WHERE城市三广州?)

AND职工号IN

(SELECT职工号FROM订购单WHERE供应商号

二36,)AND职工号NOTIN

(SELECT职工号FROM订购单WHERE供应商

号!二36,)

13)检索出由工资多于123。元的职工向北京的供应商发

出的订购单号。

SELECT订购单号FROM订购单WHERE职工号IN

(SELECT职工号FROM职工WHERE工资>1230)

AND供应商号IN

(SELECT供应商号FROM供应商WHERE地址三

北京')

14)检索出仓库的个数。

SELECTCOUNT(*)FROM仓库

15)检索出有最大面积的仓库信息。

SELECT*FROM仓库WHERE面积=(SELECT

MAX(面积)FROM仓库)

16)检索出所有仓库的平均面积。

SELECTAVG(面积)FROM仓库

17)检索出向S4供应商发出订购单的那些仓库的平均面

积。

SELECTAVG(面积)FROM仓库WHERE仓库号IN

(SELECT仓库号FROM职工WHERE职工号IN

(SELECT职工号FROM订购单WHERE供应商

号='S4'))

18)检索出每个城市的供应商个数。

SELECT地址,COUNT(*)FROM供应商GROUPBY地

19)检索出每个仓库中工资多于1220元的职工个数。

SELECT仓库号,COUNT(*)FROM职工WHERE工

资>1220GROUPBY仓库号

20)检索出和面积最小的仓库有联系的供应商的个数。

SELECTCOUNT(*)FROM供应商WHERE供应商号

IN

(SELECT供应商号FROM订购单WHERE职工号

IN

(SELECT职工号FROM职工WHERE仓库号

IN

(SELECT仓库号FROM仓库WHERE面积二

(SELECTMIN(面积)FROM仓库))))

21)检索出工资低于本仓库平均工资的职工信息。

SELECT*FROM职工outWHERE工资v

(SELECTAVG(工资)FROM职工inneWHERE仓库

号=out.仓库号)

3.试述关系数据库中视图(View)的含义和作用。

在关系数据库中,视图也称作窗口,即视图是操作基本

表的窗口。在三层数据库体系结构中,视图是外部数据库,

它是从基本表中派生出来的并依赖于基本表,它并不独立存

在。

利用视图一方面可以限定对数据的访问(对数据列起到

安全保护的作用),另一方面又可以简化对数据的访问(用

户可以直接通过视图访问数据库)。除此之外,从三层数据

库体系结构的角度它还提供了概念数据独立性。

4.以图5-1的数据库为例,用SQL语句完成以下更新操

作,并讨论数据完整性约束对这些操作的影响:

1)插入一个新的供应商元组(S9,智通公司,沈阳)。

INSERTINTO供应商VALUES(39:智通公司丁沈阳,)

2)删除目前没有任何订购单的供应商。

DELETEFROM供应商WHERE供应商号NOTIN

(SELECT供应商号FROM订购单)

3)删除由在上海仓库工作的职工发出的所有订购单。

DELETEFROM订购单WHERE职工号IN

(SELECT职工号FROM职工WHERE仓库号IN

(SELECT仓库号FROM仓库WHERE城市二,上

海,))

4)北京的所有仓库增加lOOn?的面积。

UPDATE仓库SET面积=面积+100WHERE城市二,北

京,

5)给低于所有职工平均工资的职工提高5%的工资。

UPDATE职工SET工资=工资*1.05WHERE工资v

(SELECTAVG(工资)FROM职工)

5.SQL要嵌入到宿主语言中使用要解决哪几方面的问

题?

把SQL嵌入到宿主语言中使用必须要解决以下三个方面

的问题:

1)嵌入识别问题。宿主语言的编译程序不能识别SQL语

句,所以首要的问题就是要解决如何区分宿主语言的语句和

SQL语句。

2)宿主语言与SQL语言的数据交互问题。SQL语句的查

询结果必须能够交给宿主语言处理,宿主语言的数据也要能

够交给SQL语句使用。

3)宿主语言的单记录与SQL的多记录的问题。宿主语言

一般一次处理一条记录,而SQL常常处理的是记录(元组)

的集合,这个矛盾必须解决。

6.试述预编译的作用。

宿主语言的编译系统不能识别SQL语句。解决这个问题

的一般方法是,为SQL语句加一个特殊的前缀,在用宿主语

言的编译系统编译源程序之前,首先由预编译系统将SQL

语句转换为宿主语言的合法函数调用。

7.试述游标(Cursor)的作用,并解释实现此功能的诸条

语句的用途。

宿主语言一般只能在单记录方式下工作,即一次处理一

个记录。而SQL语句的查询结果常常是一张表,它包含多个

记录,为此需要用游标(CURSOR)作为桥梁做一些特殊处

理,即利用游标来临时存放SQL语句的查询结果,并利用游

标与宿主语言的主变量进行数据交互。与游标有关的命令共

有四条:DECLARECURSOR、OPEN、FETCH和CLOSEo

其中DECLARECURSOR用SQLSELECT语句说明一个游

标;OPEN打开游标,即执行说明游标的SQLSELECT语句;

FETCH从游表中读一条记录到主变量;CLOSE关闭游标。

8.试述为什么需要动态SQL语句,分析游标和动态游标

的区别。

有时候在编程序时SQL语句或语句的参数和格式不能

确定,应用程序只能在执行时才知道需要什么样的SQL语

句,即必须在应用程序执行时动态建立SQL语句。

定义游标的SQL语句是静态的;而定义动态游标的SQL

语句是动态生成的。

习题六

1.什么是存储过程?为什么要使用存储过程?

存储过程是经过预编译的T-SQL语句的集合,它存放在

数据库中,当用户执行存储过程时,存储过程在数据库服务

器上运行。

利用存储过程可以避免在网络上传输大量无用的信息

或原始数据,只需要传输调用存储过程的指令和数据库服务

器返回的处理结果,这样可以大大提高网络数据库应用系统

的性能。

2.试为如下问题编写、建立存储过程,并定义合适的

过程返回状态码和信息(均以图5-1的数据库为例):

1)插入一个新的供应商元组。

CREATEPROCEDUREins_sup

(@snoCHAR(3),@snameCHAR(16),@addrCHAR

(10))

AS

INSERTINTO供应商

VALUES(@sno,@sname,@addr)

IF@@ERROR=0

RETURN0

ELSE

RETURN-1

2)给指定城市的所有仓库增加%n?的面积。

CREATEPROCEDUREupd_wh_area

(@citychar(10),@areanumeric)

AS

UPDATE仓库SET面积=面积+@areaWHERE城

市二@植丫

IF@@ERROR=0

RETURN0

ELSE

RETURN-1

3)检索某职工发给某供应商的订购单信息。

CREATEPROCEDUREget_ord

(@enoCHAR(4),@snoCHAR(3))

AS

SELECT*FROM订购单WHERE职工号二@eno

AND供应商号=@S110

IF@@ERROR=0

RETURN0

ELSE

RETURN-1

4)检索在某城市工作并且向某供应商发了订购单的职工

号O

CREATEPROCEDUREget_eno

(@cityCHAR(10),@snoCHAR(3))

AS

SELECT职工号FROM职工WHERE仓库号IN

(SELECT仓库号FROM仓库WHERE城市=@city)

AND职工号IN

(SELECT职工号FROM订购单WHERE供应商号

=@sno)

IF@@ERROR=0

RETURN0

ELSE

RETURN-1

3.试述触发器的概念和作用。

触发器可以看作是一类特殊的存储过程,它在满足某个

特定条件时自动触发执行。触发器是为表上的更新、插入、

删除操作定义的,也就是说当表上发生更新、插入或删除操

作时触发器将执行。

触发器可以用于数据参照完整性和以下一些场合:

♦触发器可以通过级联的方式对相关的表进行修改。比

如,对父表的修改,可以引起对子孙表的一系列修改,从而

保证数据的一致性和完整性。

♦触发器可以禁止或撤消违反参照完整性的修改。

♦触发器可以强制比用CHECK约束定义更加复杂的限

制。

4.利用触发器为图5-1数据库的订购单关系建立参照完

整性。。

建立插入触发器

CREATETRIGGERord_ins_trigger

ON订购单FORINSERT

AS

IF((SELECTCOUNT(*)FROM职工e,INSERTEDi

WHEREe.职工号二i.职工号)=0OR

(SELECTCOUNT(*)FROM供应商s,INSERTEDi

WHEREs.供应商号二i.供应商号)=0)

BEGIN

RAISERROR。非法职工号或非法供应商号:1,1)

ROLLBACKTRANSACTION

END

建立更新触发器

习题七

1.讨论数据库安全都与哪些安全问题有关?

数据库安全实际涉及到很多方面,除了数据库管理系统

应该具有安全保护功能之外,还需要从管理机制、人员行为、

操作系统安全和网络安全等多个方面采取措施。

2.试述数据库的自主存取控制和强制存取控制的区别和

各自的特点。

自主存取控制的特点是由用户“自主”地控制数据库对

象的访问权限;而强制存取控制的特点是严格的分层次管

理,有严格的等级制度。

3.试述角色管理在数据库安全控制中的作用。

角色管理类似于用户组的管理,可以将数据库的所有用

户划分成不同的角色,这样可以简化用户管理,使用户管理

和权限管理更加简洁、清楚。

4.试述SQLServer的系统预定义角色为安全管理提供了

哪些便利。

SQLServer的系统管理是由系统管理员(默认是sa用户)

负责的,而系统预定义角色正是系统管理员职责的分解,通

过一些系统预定义角色的用户来协助系统管理员进行管理,

可以减轻系统管理员(sa用户)的工作负担,对系统管理来

说又有更明确的职责划分。

5.试述语句授权和对象授权各自的含义和作用。

语句授权是指对执行创建数据库对象的语句的授权,这

种权限一般归系统管理员(sa)或数据库管理员(DBO)管

理;对象授权是指对可以在数据库对象执行的操作的授权,

这种权限一般由数据库对象拥有者(DBOO)管理,也可以

由系统管理员(sa)或数据库管理员(DBO)管理。

6.试述GRANT语句中WITHGRANTOPTION子句的作

用。

WITHGRANTOPTION子句说明被授权用户可以将指

定的对象权限授予其他用户。该子句仅对对象权限有效,对

语句权限无效。

7.试述在REVOKE语句中GRANTOPTIONFOR子句和

CASCADE子句的作用。

GRANTOPTIONFOR说明只收回WITHGRANT

OPTION权限;CASCADE说明级联收回由于WITHGRANT

OPTION授予的所有权限。GRANTOPTIONFOR要与

CASCADE一同使用,因为要收回WITHGRANTOPTION

权限,也应该一同收回由于该子句产生的所有授权。

8.试述禁止权限语句DENY的作用。

禁止权限语句DENY的作用是禁止用户从角色继承指定

的权限。

9.什么是数据库的审计功能?

系统管理员(或数据库管理员)可以通过审计日志审计、

跟踪所有用户对数据库的操作活动,可以确定哪些客户、什

么时间、进行了哪些操作(任何操作)等,这种功能称作数

据库的审计功能。

10.统计数据库有哪些特殊的安全性问题?

统计数据库的安全性问题主要是指不允许从统计信息推

导出名细信息。

习题八

1.什么是事务?

事务是构成单一逻辑工作单元的操作集合。

2.解释事务的ACID性质。

事务的ACID性质指事务具有原子性(即不可分割)、一

致性(要能保证数据库的一致性)、隔离性(事务的原子性

和一致性不受其他事务的影响)和持久性(事务对数据库所

施加的所有更新都是永久的)。

3.并发控制都会产生哪些干扰问题?并讨论之。

并发事务可能会存在的干扰问题主要有:

♦丢失更新问题

♦未提交依赖问题

♦不一致分析问题

♦幻象读问题

讨论略。

4.请举出两个并发的程序进行更新操作时相互干扰的例

子。

5.利用事务概念和封锁技术重做第4题,使干扰不发生。

6.分别解释共享封锁、更新封锁和独占封锁的含义。

共享封锁是为读操作设置的一种封锁,目的是想读到一

组不变的数据,也就是在读数据的过程中,不允许其他用户

对该数据进行任何修改操作。这种封锁可以保证最大的并发

性,任何数量的用户都可以同时对同样的数据施加这种共享

锁。

当需要对一个记录或一组记录进行更新时(只是修改,

不包括插入和删除)使用更新封锁,该封锁的目的是防止其

他用户在同一时刻修改同一记录。已经实施更新封锁的记

录,拒绝来自其他用户的更新封锁或独占封锁。

独占封锁也叫排他封锁,这是最严格的一类封锁。当需

要对表实施插入、删除或修改操作时,应该使用独占封锁。

已经实施独占封锁的表,拒绝来自其他用户的任何封锁,但

不拒绝其他用户的一般读操作。

7.什么是死锁?如何避免发生死锁?

当两个(或多个)并发的事务分别等待对方释放封锁的

资源,而使事务处于长期等待状态的现象称为死锁。

为了避免死锁,一般可以采取两种方式:

♦相同顺序法:所有的事务约定都按相同的顺序来封锁

表;

♦一次封锁法:为了完成一个事务,一次性封锁所需要的

全部表。

8.什么是事务的隔离性?如何划分事务的隔离级别?

事务的隔离性是指一个事务应该与其他事务“隔离”,它

在完成过程中不受其他事务的影响和干扰。

“隔离”则意味着并发程度的降低。为了既能保证数据的

一致性、又尽可能提高系统的并发执行效率,为此将隔离级

别划分为如下4个级别:

♦未提交读(READUNCOMMITTED):事务隔离的最低

级别,仅可保证不读取物理损坏的数据,这是4个隔离

级别中限制最小的级别。

♦提交读(READCOMMITTED):可以保证不读取“脏”

数据。

♦可重复读(REPEATABLEREAD):可以保证读一致性,

避免不一致分析问题。

♦可串行化(SERIALIZABLE):事务隔离的最高级别,

事务之间完全隔离;如果事务在可串行化隔离级别上运

行,则可以保证任何并发重叠事务均是串行的。

9.试叙述在备份与恢复技术中数据库日志的作用。

日志则是对备份的补充,它可以看作是一个值班日记,它

将记录下所有对数据库的更新操作。这样就可以在备份完成

时立刻刷新并启用一个数据库日志,数据库日志是实时的,

它将忠实地记录下所有对数据库的更新操作。因此,当磁盘

出现故障造成数据库损坏时,就可以首先利用备份恢复数据

库(恢复大部分数据),然后再运行数据库日志,即将备份

后所做的更新操作再重新做一遍,从而将数据库完全恢复。

10.试述在SQLServer中利用文件和文件组备份为数据库

恢复提供了什么样的便利?

利用文件和文件组进行备份,则当建立数据库的某个物

理存储介质出现故障时,可以只恢复发生故障的存储介质上

的物理文件或文件组,而不需要恢复整个数据库,这可以大

大缩短数据库恢复所需要的时间。

11.针对不同的故障类型(事务故障和介质故障),试讨论

恢复的策略和方法。

12.试讨论备份系统数据库的重要性。

系统数据库(在SQLServer上特别是master数据库)是

管理用户数据库的数据库,如果系统数据库一旦损坏,整个

系统的使用都将受到影响。所以系统数据库的安全和可靠是

用户数据库可以正常使用的基础。

习题九

1.理解、定义如下术语,并分别给出两个例子:函数依赖、

部分函数依赖、完全函数依赖、传递函数依赖、主属性。

2.找出图5-1所示数据库各个关系中的函数依赖。

仓库关系上的函数依赖:

仓库号一城市,仓库号一面积

职工关系上的函数依赖:

职工号一仓库号,职工号一工资

订购单关系上的函数依赖:

订购单号一职工号,订购单号一供应商号,订购单号

一订购日期

供应商关系上的函数依赖:

供应商号f供应商名,供应商名f供应商号,供应商

号f地址,供应商名一地址

3.试证明如下结论(引理9.1):

A7A2-的充分必要条件是X-4成立

Qk=l,2,…,〃)。

证明:略

4.设有关系模式火(U,尸),U={A,B,C,D,E},F={AB-E,DE

-3,3—C,C-A}

1)计算所有函数依赖左部关于函数依赖集F的属性集闭

包;

(AB)+={A,B,C,E)

(DE)+={A,B,C,D,E}

B+={A,B,C,E}

C+={A,C,E}

E+={A,E}

2)确定关系模式R上的所有侯选关键字;

DE

3)求产的所有最小覆盖。

Fm=F-{AB->E}

5.假设有一个名为参加的关系,该关系有属性:职工(职

工名)、工程(工程名)、时数(花费在工程上的小时数)和

工资(职工的工资);一个参加记录描述一个职工花费在一

个工程上的总时数和他的工资;另外,一个职工可以参加多

个工程,多个职工可以参加同一个工程。请回答如下各问题:

用A、B、C、D分别代表属性职工、工程、时数和工资,

贝IJ:

1)确定这个关系的关键字;

AB

2)找出这个关系中的所有函数依赖;

AB->C,A->D

3)指出这个关系上的哪些函数依赖会带来操作异常现象;

D对关键字AB的部分函数依赖可能会带来如下问题:

数据冗余:一个职工参加多个工程,则职工的工资值会重

复;

更新异常:当改变职工的工资时,可能会只修改了一部分,

从而造成数据不一致;

插入异常:当一个职工尚未承担工程,但要插入职工信

息(如工资)则不允许(因为没有完整的关键字);

删除异常:当某个工程结束,删除工程信息时,可能会

将职工信息(如工资)一同删除(如果职工只参加了一项工

程)。

4)这个关系是第儿范式关系?

2NF

5)计算该关系上函数依赖集的最小覆盖;

Fm={AB->C,A->D}

6)将该关系分解成尽可能高的范式,并指明是第几范式?

分解为R1(A,B,C)和R2(A,D)

结果为4NF

6.一个关系有4个字段A、B、C、D,这里A和3构成复

合关键字,问满足下列函数依赖的关系是第几范式?

1)A、B、C、。都函数依赖于A3。

BCNF或4NF

2)A、B、C、。都函数依赖于A3,而。还函数依赖于C。

2NF

3)A、B、C、。都函数依赖于A3,而。还函数依赖于8。

1NF

4)A、B、C、。都函数依赖于A8,而3还函数依赖于C。

3NF

7.设有关系模式R(A,B,C,D,E),并有函数依赖{AB-D,

AC-E,BC-D,D-A,E-B},现将R分解成关系模式S(A,B,

C)和其他一些关系模式,请给出在关系模式S上成立的函数

依赖。

AC-B,BC-*A

习题十

1.试叙述概念数据库设计和逻辑数据库设计的区别,并说

明各自的主要工作内容。

概念数据库设计是不依赖于任何数据库管理系统的,它

是对用户信息需求的归纳。概念设计的结果得到的是数据库

的概念结构,或称概念数据模型,由于它是从现实世界的角

度进行的抽象和描述,所以与具体的硬件环境和软件环境均

无关。而在逻辑数据库首先要考虑实现数据库的数据库管理

系统所支持的数据模型是什么,并将概念数据模型转换为数

据库管理系统支持的数据模型。

一般在概念设计阶段主要工作内容有:

♦确定实体;

♦确定实体的属性;

♦确定实体的标识属性(关键字);

♦确定实体间的联系和联系类型;

♦确定实现实体间联系的属性(外部关键字或连接属性);

♦画出表示概念模型的E-R图;

除此之外,为了以后对模式进行规范化,还需要:

♦确定属性间的依赖关系。

而在逻辑设计阶段一般主要工作内容有:

♦确定各个关系模式的主关键字,考虑实体完整性;

♦确定各个关系模式的外部关键字,考虑参照完整性;

♦确定各个关系模式中属性的约束、规则和默认值,考虑

域完整性;

♦根据用户需求设计视图;

♦考虑安全方案和用户使用权限等。

2.物理数据库设计主要包括哪些内容?

物理数据库设计的内容是设计数据库的存储结构和物

理实现方法。一般包括如下内容:

♦估算数据库的数据存储量;

♦设计数据库设备;

♦安排数据库的存储;

♦设计索引;

♦设计备份策略等。

3.到Sybase公司的网站()卜载

PowerDesigner的试用版,实践利用PowerDesigner进行数据

库建模的方法和过程。

习题十一

1.面向对象数据库是在什么背景下产生的?为什么需要

面向对象数据库?

在信息管理领域之外还有很多新的应用领域迫切需要

使用数据库,如计算机辅助设计(CAD)、多媒体技术(音

频、视频文件的存储和处理)等,这些应用往往需要存储大

量的复杂类型的数据,同时面向对象的概念和技术也强烈地

引发了数据库对复杂数据类型的支持,从而推动了面向对象

数据库的发展。

由于关系数据库不直接支持复杂数据类型,致使一些必

须使用复杂数据类型的应用实现起来不是很方便、并且效率

较低。另外关系模型也不支持构造类型和继承,这都使得人

们希望发展面向对象的数据库。

2.什么是对象的封装性、继承性和多态性?

封装性是指将类的数据和操作封装在类定义中,对用户

来讲类的“功能”是可见的,而实现部分是封装在类定义中

的,用户是看不见的。这种封闭性保证了每个对象的实现都

独立于其他对象的细节,从而有利于保证软件的质量。

继承性是指可以利用已有的类去定义新的类。如果根据

类A定义类B,则说类B继承了类A,同时把类A称作基

类,把类B称作子类。子类不仅可以继承基类的所有性质,

还可以在子类中定义新的性质。继承性使得基类中的代码可

以共享和重用,所以继承性有助于软件可重用性的实现。

多态性是指同一个函数可以有多种作用,即:

・同一个函数根据不同的引用对象可以完成不同的功能;

•同一个函数即便引用同一个对象,但由于传递的参数不

同也可以完成不同的功能。

多态性可以为整个应用和所有对象内部提供一个一致

的接口,没有必要为相同的动作命名和编写不同的函数,它

完全可以根据引用的对象不同、传递的消息不同来完成不同

的功能。这样做也与现实世界中管理和运作方法相吻合。

3.面向对象数据库的研究方法主要有哪些?

面向对象数据库的研究方法目前主要有以下三种:

♦扩充关系数据模型。将成熟的关系数据库与面向对象数

据库方法结合起来,可减少研制工作量、缩短研制周期。这

种方法的弱点是不能全面支持面向对象的特征。

♦在面向对象语言中嵌入数据库功能而形成面向对象数

据库。该方法的关键是如何在面向对象语言中增加持久性对

象的存储管理。使用此方法受到面向对象语言的一些限制。

♦开发全新的数据模型,从底层实现面向对象数据库系

统。这是最彻底的方法,缺点是难度大,一方面缺乏统一的

数据模式及形式化理论,另一方面在查询优化、视图及数据

库工具方面仍为空白。

4.面向对象数据库应该具备哪些基本特征?

一个面向对象数据库系统应该具备如下的基本内容和

特征:

♦在数据模型方面支持对象、复合对象、封装、类、继承、

重载、滞后联编、多态性等基本概念。其中复合对象的概念

包括支持生成复合对象的构造器(元组、集合、包、列表、

数组等)。

♦数据库管理系统除了具有传统的数据库管理系统所具

有的功能(如并发控制、故障和恢复)外,还支持永久对象、

长事务处理和嵌套事务,具有版本管理和模式演化的能力,

能维护数据完整性,适合在分布式环境下工作。

♦数据库访问界面要支持消息传递,提供计算能力完备的

数据库程序设计语言,能解决数据库语言与宿主语言的某些

不匹配问题,提供类似SQL的非过程化查询功能。

5.SQL99支持ORDBMS、还是OODBMS?

SQL99支持的是ORDBMSo

6.比较RDBMS、ORDBMS和OODBMS,然后分别描述

一个适合使用RDBMS、ORDBMS和OODBMS的应

用,并说明原因。

习题十二

1.解释ODBC的概念。

ODBC(OpenDataBaseConnectivity)的全称是开放数据

库互连,它是一种访问数据库的统一界面标准。

2.应用程序是如何通过ODBC访问数据库的?

应用程序通过调用ODBC函数可以完成对数据库的访问

操作,它所执行的任务或完成的工作包括:请求对数据源的

连接,获取连接句柄;指定事务控制方式;定义接收结果的

数据区;向数据源发送SQL语句;接收SQL的查询结果;

处理出错信息,并将出错信息返回给应用程序;终止对数据

源的连接。

3.设有基于SQLServer的pubs数据源,它对应于pubs

数据库,写出利用VisualFoxPro访问或操作SQL

Server的如卜语句:

1)连接到pubs数据库;

gn=SQLCONNECT("pubs","sa")

2)查询employee表的全部信息;

=SQLEXEC(gn,"SELECT*FROMemployee")

3)为publishers表准备一个带参数的查询,可以指定

pub_name(出版社名)进行查询;

=SQLPREPARE(gn,"SELECT*FROMpublishersWHERE

pub_name=?m_p_name")

4)以前一小题为基础,查询“FiveLakesPublishing”出版

社的信息;

m_p_name="FiveLakesPublishing"

=SQLEXEC(gn)

5)从sales表中删除stor_id为6380的记录。

=SQLEXEC(gn,"DELETEFROMsaleswhere

stor_id=6380")

4.PowerBuilder是个什么类型的软件产品?

PowerBuilder是一个面向对象的数据库应用系统开发工

具。

5.PowerBuilder都可以通过哪些方式访问数据库?

PowerBuilder都可以通过各种接口访问数据库,如

ODBC、JDBC、OLEDB和各种数据库专用接口等。

6.试述PowerBuilder中事务对象的概念。

PowerBuilder的事务对象是PowerScript与数据库的通讯

区,只有通过事务对象才能完成对数据库的操作。

7.使用PowerBuilder完成12.3节中的例子,初步掌握使

用PowerBuilder进行开发的方法。

8.试述基于组件的数据库开发的基本思想。

克服传统C/S结构的明显缺点(缺乏中心控制、缺乏安

全性和沉重的客户端负载等),以面向对象技术为基础,将

业务处理逻辑和规则按完整的逻辑单元进行封装,即将相关

的类封装成组件,并使它们部署在应用服务器上,客户端应

用程序不再直接和数据库打交道,而是通过部署在服务器上

的组件完成数据操作。

9.查阅有关资料,进一步了解和掌握有关组件开发的技术

标准。

10.为什么需要动态HTML?为什么需要Web数据库?

在传统的Web服务器中,文本和其他多媒体信息都是以

文件的形式来进行存储和管理的,随着信息量的不断增加,

系统的速度等性能受到越来越大的影响。另一方面,WWW

的应用领域在不断拓展,静态的Web页面也越来越不能满足

对信息服务的动态性、实时性和交互性的要求。也就是说,

用户已经不满足看技术人员事先做好的静态信息,而希望能

够根据自己的需要看到最新的信息,这就需要数据库的支

持,可以根据检索数据库的结果动态生成网页。所以可以嵌

入数据库检索语句并根据检索结果动态生成网页的HTML

称为动态HTML,而可以支持动态生成网页的数据库就是

WEB数据库。

11.试分别叙述Web服务器、页面服务器和事务服务器的

作用。

Web服务器接收Web浏览器发送的页面浏览请求,如果

其中嵌入了数据请求则交由页面服务器处理。

页面服务器处理负责数据库与Web站点的协调和管理,

负责解释Web页面中的数据请求,并将从数据库中获得的动

态数据嵌入到Web页面中。

事务服务器即应用服务器或组件服务器,当页面中的数

据访问需要调用相应的业务处理逻辑时,可能需要事务服务

器的支持。

12.试述在PowerBuilder中Web数据窗口的作用。

Web数据窗口是用于HTML的数据窗口,它提供了一种

瘦客户端解决方案,可以提供PowerBuilder数据窗口的大部

分数据操作功能,而且不需要在Web客户端安装任何

PowerBuilder动态连接库(DLL)或其他组件。

习题十三

1.按软件工程思想(结构化生命周期法)开发一个数据库

应用系统应该包括哪些步骤?说明各步骤的主要工作内容。

数据库应用系统开发可以分为如下七个步骤:

♦系统调查及可行性分析;

♦系统分析(需求分析);

♦概要设计(总体设计);

♦详细设计(模块设计);

♦系统实现(编程);

♦系统调试与试运行(测试);

♦系统运行、评价与维护(运行)。

系统调查和可行性分析阶段的任务是初步了解信息系统

用户的组织机构、业务范畴以及新系统的目标,并且做出可

行性分析,包括经济可行性、技术可行性和使用可行性。

需求分析阶段的主要任务是了解用户的需求,基本目标

是:对现实世界要处理的对象进行详细调查,在了解原系统

(手工系统或以前开发的计算机系统)的情况、确定新系统

功能的过程中,确定新系统的目标,收集支持新系统目标的

数据需求和处理需求。

总体设计阶段的主要任务是把用户的信息要求统一到一

个整体的逻辑结构或概念模式中,此结构能表达用户的要

求,并且独立于任何硬件和数据库管理系统。这一步,从应

用程序的角度来讲,要完成子系统的划分和功能模块的划

分;从数据库的角度来讲要完成概念模型的设计。

详细设计阶段同样是包括数据库设计和应用程序设计两

大部分。对数据库设计要根据具体的数据库管理系统设计数

据库、设计关系、考虑数据的完整性、考虑数据的安全和备

份策略等。对应用程序设计要给出功能模块说明,考虑实施

方法,设计存储过程等。

编程阶段则根据上一步的设计结果进行具体实施,建立数

据库并装入原始数据,建立存储过程,编写和调试应用程序

代码等。

调试与试运行阶段对各个子系统、各个模块要进行联合调

试和测试,并试运行。在试运行阶段要广泛听取用户的意见,

并根据运行效果进行评估,修改系统的错误、改进系统的性

能。

最后一步是将系统交给用户使用,在使用的过程中可能还

会出现新的问题,甚至提出新的需求,所以还要不断对系统

进行评价和维护。

2.试述快速原型方法的基本思想,并说明该方法的步骤及

其工作内容。

快速原型法(RapidPrototyping)的基本思想是依据原型

进行快速开发,对存在的问题进行反复的修正,直至形成用

户满意的系统。

快速原型开发方法可以分为四个步骤:

♦系统基本需求的确定:确定用户对系统的基本需求,包

括系统的主要性能、总体结构、交互界面等,勾画出用户所

需要的初步原型;

♦对原型的功能选择:根据需要将原型中的功能分类,确

定主次关系,以决定先实现哪些功能;

♦原型的构造与试用:根据原型进行快速开发,并提供给

用户试用;

♦原型的修改和完善:用户可以在试用的过程中发现问

题、提出建议,从而不断完善原型,最终得到用户满意的系

统。

3.试叙述结构化生命周期方法和快速原型方法的各自利

弊,并阐述你个人对数据库应用系统开发方法的见解。

4.试述面向对象开发方法的基本思想和步骤。

面向对象开发方法的基本思想和步骤完全融合了结构

化生命周期方法和快速原型方法的基本思想和步骤,只是在

其中采取了面向对象的技术。具体来说,也包括需求分析、

总体设计、详细设计、编程实施等各个阶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论