• 245.50 KB
  • 2022-04-22 11:31:39 发布

《数据库系统及应用》习题解答.doc

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'·34·《数据库系统及应用》习题解答《数据库系统及应用》(第二版)习题解答习题一1.什么是数据库?数据库是相互关联的数据的集合,它用综合的方法组织数据,具有较小的数据冗余,可供多个用户共享,具有较高的数据独立性,具有安全控制机制,能够保证数据的安全、可靠,允许并发地使用数据库,能有效、及时地处理数据,并能保证数据的一致性和完整性。2.简要概述数据库、数据库管理系统和数据库系统各自的含义。数据库、数据库管理系统和数据库系统是三个不同的概念,数据库强调的是相互关联的数据,数据库管理系统是管理数据库的系统软件,而数据库系统强调的是基于数据库的计算机应用系统。3.数据独立性的含义是什么?数据独立性是指数据的组织和存储方法与应用程序互不依赖、彼此独立的特性。这种特性使数据的组织和存储方法与应用程序互不依赖,从而大大降低应用程序的开发代价和维护代价。4.数据完整性的含义是什么?保证数据正确的特性在数据库中称之为数据完整性。5.简要概述数据库管理员的职责。数据库管理员的职责可以概括如下:(1)首先在数据库规划阶段要参与选择和评价与数据库有关的计算机软件和硬件,要与数据库用户共同确定数据库系统的目标和数据库应用需求,要确定数据库的开发计划;(2)在数据库设计阶段要负责数据库标准的制定和共用数据字典的研制,要负责各级数据库模式的设计,负责数据库安全、可靠方面的设计;(3)在数据库运行阶段首先要负责对用户进行数据库方面的培训;负责数据库的转储和恢复;负责对数据库中的数据进行维护;负责监视数据库的性能,并调整、改善数据库的性能,提高系统的效率;继续负责数据库安全系统的管理;在运行过程中发现问题、解决问题。6.文件系统用于数据管理存在哪些明显的缺陷?文件系统用于数据管理明显存在如下缺陷:(1) ·34·《数据库系统及应用》习题解答数据冗余大。这是因为每个文件都是为特定的用途设计的,因此就会造成同样的数据在多个文件中重复存储。(1)数据不一致性。这往往是由数据冗余造成的,在进行更新时,稍不谨慎就会造成同一数据在不同文件中的不一致。(2)程序和数据之间的独立性差。应用程序依赖于文件的存储结构,使得若修改文件的存储结构则必须修改程序。(3)数据联系弱。文件与文件之间是独立的,文件之间的联系必须通过程序来构造。因此,文件系统是一个不具有弹性的、无结构的数据集合,不能反映现实世界事物之间的联系。习题二1.数据的三种范畴的含义是什么?数据需要我们的认识、理解、整理、规范和加工,然后才能存放到数据库中。数据从现实生活进入到数据库实际经历了现实世界阶段(认识、理解)、信息世界阶段(规范、提升)和机器世界阶段(管理),我们也把之称为数据的三种范畴,数据在三种范畴中的概念、术语都有些不同。2.对以下问题分析实体之间的联系,并分别画出E-R图:工程师和工程项目1)实体之间的联系:设每名工程师可以参加多个工程项目,每个工程项目可以由多名工程师工作,则二者属于多对多的关系,2)则E-R图如下:工程项目项目号金额项目名工程师工程师号号列车号职称姓名参加Mn工程师号项目号参加天数乘务员和火车1)实体之间的联系:设每辆火车上可以有多个乘务员工作,每名乘务员只可以在一列火车上工作,则二者属于一对多的关系,2)则E-R图如下: ·34·《数据库系统及应用》习题解答火车列车号号列车号生产厂家列车名乘务员乘务员号工资…姓名工作1n列车号乘务员号职位…公司和产品类型1)实体之间的联系:设每个公司可以生产多种产品类型,每种产品类型可以由多家公司生产,则二者属于多对多的关系,2)则E-R图如下:公司公司编号负责人…公司名产品类型类型ID…类型名生产MN公司号类型ID投产年份 ·34·《数据库系统及应用》习题解答维修工和机器1)实体之间的联系:设每个维修工可以维修多台机器,每台机器需要由多名维修工修理,则二者属于多对多的关系,2)则E-R图如下:维修工维修工号时薪…姓名机器机器ID机器价机器名修理MN维修工号机器ID维修工时投资者和股票1)实体之间的联系:设每个投资者可以持有多只股票,每只股票可以由多名投资者持有,则二者属于多对多的关系,2)则E-R图如下:投资者投资者号帐号余额姓名股票股票号股票价股票名持有MN投资者号股票号数量3.试述为什么要讨论实体之间的联系类型? ·34·《数据库系统及应用》习题解答实体之间的联系类型决定了数据库设计时的结果,与数据库的设计质量密切相关。3.多对多联系如何转换成一对多联系?并举例说明。通过引入一个表示联系的实体,将原来两个实体之间的一个多对多的联系转换成分别与表示联系的实体之间的两个一对多的联系。例如,仓库和材料两个实体之间存在着多对多的联系,即一个仓库可以存放多种材料,一种材料可以存放在多个仓库;通过引入一个库存实体转换为仓库与库存之间的一对多联系和材料与库存之间的一对多联系。4.解释连接陷阱的概念,在操作数据库时如何避免连接陷阱?所谓连接陷阱就是误认为本来不存在联系的两个实体之间存在联系,从而强行进行连接操作,自然得到错误的结果。为了避免连接陷阱,必须明确实体之间的联系和联系类型,只在有联系的实体之间进行关联操作。5.传统的三大数据模型是哪些?它们分别是如何表示实体之间的联系的?传统的三大数据模型是层次模型、网状模型和关系模型。层次模型用层次结构表示联系,它的典型代表IMS用层次型表示联系;网状模型用网状结构表示联系,它的典型代表CODASYL用系表示联系;关系模型用关系表示联系。6.解释存储数据独立性和概念数据独立性的区别。存储数据独立性强调的是应用程序与数据的存储结构相互独立的特性,即修改数据的存储方法或数据结构时不影响应用程序;而概念数据独立性强调的是应用程序与数据的概念结构相互独立的特性,即修改概念结构中的字段时不影响应用程序。7.为什么说概念数据库和外部数据库物理上并不真正存在?只有存储数据库是物理上存在的数据库,概念数据库是存储数据库的抽象,它反映了数据库的全局逻辑结构;而外部数据库是概念数据库的部分抽取,它反映了数据库的局部逻辑结构。8.说明在DBMS中存储模式、概念模式和外部模式的作用。存储模式描述了数据库的存储结构,它包括对存储数据库中每个文件以及字段的描述,包括用于实现辅助关键字或存储文件间联系的指针字段的细节。存储数据库利用存储模式组织和存取存储数据库中的文件。如果要修改存储数据库的结构(例如,用倒排文件代替多链表),那么仅仅需要把这些修改反映在存储模式中,以使数据库存储系统能够操作新的存储数据库。按这种方法,数据库管理系统可以提供存储(物理)数据独立性。概念模式是对概念数据库的描述,它包括对概念文件及概念文件之间联系的描述。概念数据库不包含真正的数据,一切都是由存储数据库决定的。外部模式则是对外部数据库的描述,它需要说明外部文件、构成外部文件的字段及这些外部文件之间的联系。数据库管理系统提供了外部模式与概念模式之间的映象以及概念模式与存储模式之间的映象,使用户通过外部数据库或概念数据库来操作存储数据库。 ·34·《数据库系统及应用》习题解答习题三1.解释属性与值域的区别。属性是二维表中的列,而值域是列或属性的取值范围。2.关系模型的三个组成部分是什么?关系数据模型包括关系数据结构、关系操作集合和关系完整性约束三个重要因素。3.对关系模型的操作都包括哪些?关系数据模型中的操作包括:(1)传统的集合运算:并(Union)、交(Intersection)、差(Difference)、广义笛卡尔积(ExtendedCartesianProduct);(2)专门的关系运算:选择(Select)、投影(Project)、连接(Join)、除(Divide);(3)有关的数据操作:查询(Query)、插入(Insert)、删除(Delete)、修改(Update)。4.关系模型的完整性规则都有哪些?在关系数据模型中一般将数据完整性分为实体完整性、参照完整性和用户定义完整性。5.试述外部关键字的概念和作用,外部关键字是否允许为空值,为什么?如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。外部关键字用于实现表与表之间的参照完整性。外部关键字是否允许为空值取决于语义的规定。外部关键字的取值或者为空值、或者为被参照关系中的某个关键字字段的值。6.分别叙述在进行插入、删除、更新操作时都需要进行哪些完整性检查,并说明理由。(1)执行插入操作时需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。首先检查实体完整性规则,如果插入元组的主关键字的属性不为空值、并且相应的属性值在关系中不存在(即保持唯一性),则可以执行插入操作,否则不可以执行插入操作。接着再检查参照完整性规则,如果是向被参照关系插入元组,则无须检查参照完整性;如果是向参照关系插入元组,则要检查外部关键字属性上的值是否在被参照关系中存在对应的主关键字的值,如果存在则可以执行插入操作,否则不允许执行插入操作。另外,如果插入元组的外部关键字允许为空值,则当外部关键字是空值时也允许执行插入操作。最后检查用户定义完整性规则,如果插入的元组在相应的属性值上遵守了用户定义完整性规则,则可以执行插入操作,否则不可以执行插入操作。(2)执行删除操作时一般只需要检查参照完整性规则。如果删除的是参照关系的元组,则不需要进行参照完整性检查,可以执行删除操作。 ·34·《数据库系统及应用》习题解答如果删除的是被参照关系的元组,则检查被删除元组的主关键字属性的值是否被参照关系中某个元组的外部关键字引用,如果未被引用则可以执行删除操作;否则可能有三种情况:1)不可以执行删除操作,即拒绝删除;2)可以删除,但需同时将参照关系中引用了该元组的对应元组一起删除,即执行级联删除;3)可以删除,但需同时将参照关系中引用了该元组的对应元组的外部关键字置为空值,即空值删除。(3)执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。1.试述关系的自然连接和等值连接的异同之处。自然连接和等值连接都是基于相等比较运算的连接,但是自然连接要去掉重复的属性,而等值连接却不需要去掉重复的属性。2.以图3-6的数据库为例(可参照图5-1,该数据库的实例),用关系代数完成以下检索:注意:此处暂以*表示连接运算符。1)检索在仓库WH2工作的职工的工资。π职工号,工资(σ仓库号="WH2"(职工))2)检索在上海工作的职工的工资。π职工号,工资(σ城市="上海"(仓库)*职工)3)检索北京的供应商的名称。π供应商名(σ地址="北京"(供应商))4)检索目前与职工E6有业务联系的供应商的名称。π供应商名(σ职工号="E6"(订购单)*供应商)5)检索所有职工的工资都大于1220元的仓库所在的城市。π城市(仓库)-π城市(σ工资<=1220(职工)*仓库)命题“所有职工的工资都大于1220元的仓库”的逆命题是:“有职工工资不大于1220的仓库”故本题可以换一个说法:求“在所有仓库中除去有职工工资不大于1220的仓库”所在城市课本P116例5.36,例5.37均讨论类似问题6)检索和北京的所有供应商都有业务联系的职工的工资。π职工号,工资(职工*(订购单÷π供应商号(σ地址="北京"(供应商))))7)检索至少和职工E1、E4、E7都有联系的供应商的名称。 ·34·《数据库系统及应用》习题解答π供应商名(订购单÷(“E1”,”E4”,”E7”)*供应商)1.试述关系数据库系统的三层模式结构。略习题四1.简述客户/服务器结构的概念,并说明客户/服务器结构与文件服务器网络结构的区别。客户/服务器结构的基本思想是应用程序或应用逻辑可以根据需要划分在服务器和客户工作站中,它既不像集中式系统那样所有的应用程序都在主机上执行,也不像文件服务器网络那样所有的应用程序都在客户端执行,它可以使应用程序合理负担在服务器和客户端。客户/服务器结构与文件服务器网络结构的硬件拓扑结构很相似,它们的根本区别在于:客户/服务器结构的服务器可以执行应用程序;而文件服务器的服务器只是一个数据共享器,它不能执行应用程序。2.在客户/服务器结构中,数据库服务器和客户端计算机是如何分工的?数据库服务器应完成数据管理、信息共享、安全管理、以及一些更高级的管理。它是一个开放的体系结构,可以接受来自各种应用程序和开发工具的客户端的连接;它除了要管理集中的数据库之外,还要处理来自客户端的数据访问请求和将结果反馈给用户(包括管理请求队列、管理缓存、响应服务、管理结果和通知服务完成等)的工作。而客户端计算机是面向最终用户的,所以它的主要任务是提供友好的用户界面,提交数据访问请求以及接收和处理数据库的返回结果,组织返回数据的输出(如生成数据浏览窗口、生成数据报表和图形等),提供初步的数据验证功能等。3.SQLServer在安装后默认创建了哪几个系统数据库?分别叙述它们的作用。SQLServer在安装后默认创建了4系统数据库,它们是:(1)master数据库。master数据库用于存储SQLServer系统的所有系统级信息,包括所有的其它数据库(如建立的用户数据库)的信息(包括数据库的设置、对应的操作系统文件名称和位置等)、所有数据库注册用户的信息以及系统配置设置等。(2)tempdb数据库。tempdb数据库用于保存所有的临时表和临时存储过程,它还可以满足任何其它的临时存储要求。(3)model数据库。model数据库是一个模板数据库,当使用CREATEDATABASE命令建立新的数据库时,新数据库的第一部分总是通过复制model数据库中的内容创建,剩余部分由空页填充。(4)msdb数据库。msdb数据库用于SQLServer代理程序调度报警和作业等系统操作。4.试述SQLServer的CREATEDATABASE命令在创建数据库时是如何申请物理存储空间的? ·34·《数据库系统及应用》习题解答通过指定的物理文件名、文件的大小等向操作系统申请物理存储空间。1.试述SQLServer企业管理器的功能。略。习题五1.试概述SQL语言的功能。SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。2.以图5-1的数据库为例,用SQL完成以下检索:1)检索在北京的供应商的名称。SELECT供应商名FROM供应商WHERE地址=’北京’2)检索发给供应商S6的订购单号。SELECT订购单号FROM订购单WHERE供应商号=’S6’3)检索出职工E6发给供应商S6的订购单信息。SELECT*FROM订购单WHERE供应商号=’S6’AND职工号=’E6’4)检索出向供应商S3发过订购单的职工的职工号和仓库号。SELECT职工号,仓库号FROM职工WHERE职工号IN(SELECT职工号FROM订购单WHERE供应商号=’S3’)5)检索出目前与S3供应商没有联系的职工信息。SELECT*FROM职工WHERE职工号NOTIN(SELECT职工号FROM订购单WHERE供应商号=’S3’)错:SELECT*FROM职工WHERE职工号IN(SELECT职工号FROM订购单WHERE供应商号!=’S3’)6)检索出目前没有任何订购单的供应商信息。SELECT*FROM供应商WHERENOTEXISTS(SELECT*FROM订购单WHERE供应商号=供应商.供应商号)或: ·34·《数据库系统及应用》习题解答SELECT*FROM供应商WHERE供应商号notin(SELECT供应商号FROM订购单)1)检索出和职工E1、E3都有联系的北京的供应商信息。SELECT*FROM供应商WHERE地址=’北京’And供应商号IN(SELECT供应商号FROM订购单WHERE职工号=’E1’)AND供应商号IN(SELECT供应商号FROM订购单WHERE职工号=’E3’)错:SELECT*FROM供应商WHERE地址=’北京’And供应商号IN(SELECT供应商号FROM订购单WHERE职工号=’E1’and职工号=’E3’)2)检索出目前和华通电子公司有业务联系的每个职工的工资。SELECT职工号,工资FROM职工WHERE职工号IN(SELECT职工号FROM订购单WHERE供应商号IN(SELECT供应商号FROM供应商WHERE供应商名=’华通电子公司’))3)检索出与工资在1220元以下的职工没有联系的供应商的名称。selectdistinct供应商名,供应商号from供应商where供应商号notin--("s4","s7")--该供应商无与E3的订单(selectdistinct供应商号from订购单where供应商号isnotnulland职工号in(select职工号--职工工资低于1220职工号,只有E3from职工where工资<1220))--该供应商有下过订单and供应商号in(selectdistinct供应商号from订购单) ·34·《数据库系统及应用》习题解答最内层查询的结果为:工资低于1220的职工号中间层查询的结果为:由工资低于1220的职工经手的订购单的供应商号最外层查询的结果为:与工资低于1220的职工没有联系的供应商号、供应商名(除掉与工资低于1220的职工有联系的供应商号)进一步讨论:如果把not从最外层移到中间层,变成以下命令,则结果是不对的,讨论如下:selectdistinct供应商名,供应商号from供应商where供应商号in--("s4","s7")--该供应商无与E3的订单(selectdistinct供应商号from订购单where供应商号isnotnulland职工号notin(select职工号--职工工资低于1220职工号,只有E3from职工where工资<1220))最内层查询的结果为:工资低于1220的职工号中间层查询的结果为:不是由工资低于1220的职工经手的订购单的供应商号注意:若一个供应商有两张以上的订购单,其中一张由工资低于1220的职工经手,至少一张由不低于1220的职工经手,则该供应商号出现在中间层的结果集中,但该供应商号却不是所要的结果,如课本P98数据中的S4最外层查询的结果为:与工资低于1220的职工没有联系的供应商号、供应商名(除掉与工资低于1220的职工有联系的供应商号)1)检索出向S4供应商发出订购单的仓库所在的城市。SELECT城市FROM仓库WHERE仓库号IN(SELECT仓库号FROM职工WHERE职工号IN(SELECT职工号FROM订购单WHERE供应商号="S4"))2)检索出在上海工作并且向S6供应商发出了订购单的职工号。SELECT职工号FROM职工WHERE仓库号IN(SELECT仓库号FROM仓库WHERE城市="上海")AND职工号IN(SELECT职工号FROM订购单WHERE供应商号="S6")3)检索出在广州工作并且只向S6供应商发出了订购单的职工号。 ·34·《数据库系统及应用》习题解答SELECT职工号FROM职工WHERE仓库号IN(SELECT仓库号FROM仓库WHERE城市="广州")AND职工号IN(SELECT职工号FROM订购单WHERE供应商号="S6")AND职工号NOTIN(SELECT职工号FROM订购单WHERE供应商号!="S6")1)检索出由工资多于1230元的职工向北京的供应商发出的订购单号。SELECT订购单号FROM订购单WHERE职工号IN(SELECT职工号FROM职工WHERE工资>1230)AND供应商号IN(SELECT供应商号FROM供应商WHERE地址="北京")2)检索出仓库的个数。SELECTCOUNT(*)FROM仓库3)检索出有最大面积的仓库信息。SELECT*FROM仓库WHERE面积=(SELECTMAX(面积)FROM仓库)4)检索出所有仓库的平均面积。SELECTAVG(面积)FROM仓库按城市算仓库面积:SELECT城市,AVG(面积)FROM仓库Groupby城市5)检索出向S4供应商发出订购单的那些仓库的平均面积。SELECTAVG(面积)FROM仓库WHERE仓库号IN(SELECT仓库号FROM职工WHERE职工号IN(SELECT职工号FROM订购单WHERE供应商号="S4"))6)检索出每个城市的供应商个数。 ·34·《数据库系统及应用》习题解答SELECT地址,COUNT(*)FROM供应商GROUPBY地址1)检索出每个仓库中工资多于1220元的职工个数。SELECT仓库号,COUNT(*)FROM职工WHERE工资>1220GROUPBY仓库号存在问题:WH4无职工,应在结果显示0改进:SELECT仓库号,人数=(selectCOUNT(职工号)from职工where仓库.仓库号=职工.仓库号and工资>1220)FROM仓库2)检索出和面积最小的仓库有联系的供应商的个数。SELECTCOUNT(distinct供应商号)FROM订购单WHERE职工号IN(SELECT职工号FROM职工WHERE仓库号IN(SELECT仓库号FROM仓库WHERE面积=(SELECTMIN(面积)FROM仓库)))--另一个写法:SELECTCOUNT(*)FROM供应商WHERE供应商号IN(SELECT供应商号FROM订购单WHERE职工号IN(SELECT职工号FROM职工WHERE仓库号IN(SELECT仓库号FROM仓库WHERE面积=(SELECTMIN(面积)FROM仓库))))3)检索出工资低于本仓库平均工资的职工信息。SELECT*FROM职工outWHERE工资<(SELECTAVG(工资)FROM职工inneWHEREinne.仓库号=out.仓库号)1.试述关系数据库中视图(View)的含义和作用。 ·34·《数据库系统及应用》习题解答在关系数据库中,视图也称作窗口,即视图是操作基本表的窗口。在三层数据库体系结构中,视图是外部数据库,它是从基本表中派生出来的并依赖于基本表,它并不独立存在。利用视图一方面可以限定对数据的访问(对数据列起到安全保护的作用),另一方面又可以简化对数据的访问(用户可以直接通过视图访问数据库)。除此之外,从三层数据库体系结构的角度它还提供了概念数据独立性。1.以图5-1的数据库为例,用SQL语句完成以下更新操作,并讨论数据完整性约束对这些操作的影响:1)插入一个新的供应商元组(S9,智通公司,沈阳)。INSERTINTO供应商VALUES("S9","智通公司","沈阳")2)删除目前没有任何订购单的供应商。DELETEFROM供应商WHERE供应商号NOTIN(SELECT供应商号FROM订购单)3)删除由在上海仓库工作的职工发出的所有订购单。DELETEFROM订购单WHERE职工号IN(SELECT职工号FROM职工WHERE仓库号IN(SELECT仓库号FROM仓库WHERE城市="上海"))连接操作:DELETEFROM订购单From职工,仓库WHERE订购单.职工号=职工.职工号and职工.仓库号=仓库.仓库号and城市="上海"4)北京的所有仓库增加100m2的面积。UPDATE仓库SET面积=面积+100WHERE城市="北京"5)给低于所有职工平均工资的职工提高5%的工资。UPDATE职工SET工资=工资*1.05WHERE工资<(SELECTAVG(工资)FROM职工)2.SQL要嵌入到宿主语言中使用要解决哪几方面的问题?把SQL嵌入到宿主语言中使用必须要解决以下三个方面的问题: ·34·《数据库系统及应用》习题解答1)嵌入识别问题。宿主语言的编译程序不能识别SQL语句,所以首要的问题就是要解决如何区分宿主语言的语句和SQL语句。2)宿主语言与SQL语言的数据交互问题。SQL语句的查询结果必须能够交给宿主语言处理,宿主语言的数据也要能够交给SQL语句使用。3)宿主语言的单记录与SQL的多记录的问题。宿主语言一般一次处理一条记录,而SQL常常处理的是记录(元组)的集合,这个矛盾必须解决。1.试述预编译的作用。宿主语言的编译系统不能识别SQL语句。解决这个问题的一般方法是,为SQL语句加一个特殊的前缀,在用宿主语言的编译系统编译源程序之前,首先由预编译系统将SQL语句转换为宿主语言的合法函数调用。2.试述游标(Cursor)的作用,并解释实现此功能的诸条语句的用途。宿主语言一般只能在单记录方式下工作,即一次处理一个记录。而SQL语句的查询结果常常是一张表,它包含多个记录,为此需要用游标(CURSOR)作为桥梁做一些特殊处理,即利用游标来临时存放SQL语句的查询结果,并利用游标与宿主语言的主变量进行数据交互。与游标有关的命令共有四条:DECLARECURSOR、OPEN、FETCH和CLOSE。其中DECLARECURSOR用SQLSELECT语句说明一个游标;OPEN打开游标,即执行说明游标的SQLSELECT语句;FETCH从游表中读一条记录到主变量;CLOSE关闭游标。3.试述为什么需要动态SQL语句,分析游标和动态游标的区别。有时候在编程序时SQL语句或语句的参数和格式不能确定,应用程序只能在执行时才知道需要什么样的SQL语句,即必须在应用程序执行时动态建立SQL语句。定义游标的SQL语句是静态的;而定义动态游标的SQL语句是动态生成的。习题六1.什么是存储过程?为什么要使用存储过程?存储过程是经过预编译的T-SQL语句的集合,它存放在数据库中,当用户执行存储过程时,存储过程在数据库服务器上运行。利用存储过程可以避免在网络上传输大量无用的信息或原始数据,只需要传输调用存储过程的指令和数据库服务器返回的处理结果,这样可以大大提高网络数据库应用系统的性能。2.试为如下问题编写、建立存储过程,并定义合适的过程返回状态码和信息(均以图5-1的数据库为例):1)插入一个新的供应商元组。CREATEPROCEDUREins_sup(@snoCHAR(3),@snameCHAR(16),@addrCHAR(10)) ·34·《数据库系统及应用》习题解答ASINSERTINTO供应商VALUES(@sno,@sname,@addr)IF@@ERROR=0RETURN0ELSERETURN-1--下面的调用将出现错误,并返回-1,因为供应商号重复declare@iintexec@i=ins_sup"S3","存储过程插入的供应商","地址"select@i--修改供应商号后,调用将正确执行,并返回0declare@iintexec@i=ins_sup"A3","存储过程插入的供应商","地址"select@i--查看结果select*from供应商1)给指定城市的所有仓库增加xm2的面积。CREATEPROCEDUREupd_wh_area(@citychar(10),@areanumeric)ASIFnotexists(select*from仓库where城市=@city)RETURN-2UPDATE仓库SET面积=面积+@areaWHERE城市=@cityRETURN0--调用Declare@enointegerexec@eno=upd_wh_area"广州",1000select@eno--查看结果,检查广州仓库的面积是否如期增加了指定值?select*from仓库2)检索某职工发给某供应商的订购单信息。CREATEPROCEDUREget_ord(@enoCHAR(4),@snoCHAR(3)) ·34·《数据库系统及应用》习题解答ASIFnotexists(select*from职工where职工号=@eno)beginprint"参数错误:不存在的职工号!"RETURN-3endIFnotexists(select*from供应商where供应商号=@sno)beginprint"参数错误:不存在的供应商号!"RETURN-4endSELECT*FROM订购单WHERE职工号=@enoAND供应商号=@snoRETURN0--调用存储过程,查看E3发给S7的订购单declare@iintexec@i=get_ord"E3","S7"select@ias返回码--调用存储过程,查询在北京工作且向供应商S7发出订购单的职工号declare@iintexec@i=get_ord"E3","S7"select@ias返回码1)检索在某城市工作并且向某供应商发了订购单的职工号。CREATEPROCEDUREget_eno(@cityCHAR(10),@snoCHAR(3))ASIFnotexists(select*from仓库where城市=@city)beginprint"参数错误:不存在的城市!"RETURN-5endIFnotexists(select*from供应商where供应商号=@sno)beginprint"参数错误:不存在的供应商!"RETURN-6end ·34·《数据库系统及应用》习题解答select职工号from订购单where供应商号=@snoand职工号IN(select职工号from仓库where仓库号in(SELECT仓库号FROM仓库WHERE城市=@city))SELECT职工号FROM职工WHERE仓库号IN(SELECT仓库号FROM仓库WHERE城市=@city)AND职工号IN(SELECT职工号FROM订购单WHERE供应商号=@sno)RETURN0--调用存储过程,查询在北京工作且向供应商S7发出订购单的职工号declare@iintexec@i=get_ord"北京","S7"select@ias返回码3.试述触发器的概念和作用。触发器可以看作是一类特殊的存储过程,它在满足某个特定条件时自动触发执行。触发器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时触发器将执行。触发器可以用于数据参照完整性和以下一些场合:s触发器可以通过级联的方式对相关的表进行修改。比如,对父表的修改,可以引起对子孙表的一系列修改,从而保证数据的一致性和完整性。s触发器可以禁止或撤消违反参照完整性的修改。s触发器可以强制比用CHECK约束定义更加复杂的限制。4.利用触发器为图5-1数据库的订购单关系建立参照完整性。。建立插入触发器CREATETRIGGERord_ins_triggerON订购单FORINSERTASIF((SELECTCOUNT(*)FROM职工e,INSERTEDiWHEREe.职工号=i.职工号)=0OR(SELECTCOUNT(*)FROM供应商s,INSERTEDiWHEREs.供应商号=i.供应商号)=0) ·34·《数据库系统及应用》习题解答BEGINRAISERROR("非法职工号或非法供应商号",1,1)ROLLBACKTRANSACTIONEND建立更新触发器略习题七1.讨论数据库安全都与哪些安全问题有关?数据库安全实际涉及到很多方面,除了数据库管理系统应该具有安全保护功能之外,还需要从管理机制、人员行为、操作系统安全和网络安全等多个方面采取措施。2.试述数据库的自主存取控制和强制存取控制的区别和各自的特点。自主存取控制的特点是由用户“自主”地控制数据库对象的访问权限;而强制存取控制的特点是严格的分层次管理,有严格的等级制度。3.试述角色管理在数据库安全控制中的作用。角色管理类似于用户组的管理,可以将数据库的所有用户划分成不同的角色,这样可以简化用户管理,使用户管理和权限管理更加简洁、清楚。4.试述SQLServer的系统预定义角色为安全管理提供了哪些便利。SQLServer的系统管理是由系统管理员(默认是sa用户)负责的,而系统预定义角色正是系统管理员职责的分解,通过一些系统预定义角色的用户来协助系统管理员进行管理,可以减轻系统管理员(sa用户)的工作负担,对系统管理来说又有更明确的职责划分。5.试述语句授权和对象授权各自的含义和作用。语句授权是指对执行创建数据库对象的语句的授权,这种权限一般归系统管理员(sa)或数据库管理员(DBO)管理;对象授权是指对可以在数据库对象执行的操作的授权,这种权限一般由数据库对象拥有者(DBOO)管理,也可以由系统管理员(sa)或数据库管理员(DBO)管理。6.试述GRANT语句中WITHGRANTOPTION子句的作用。WITHGRANTOPTION子句说明被授权用户可以将指定的对象权限授予其他用户。该子句仅对对象权限有效,对语句权限无效。7.试述在REVOKE语句中GRANTOPTIONFOR子句和CASCADE子句的作用。GRANTOPTIONFOR说明只收回WITHGRANTOPTION权限;CASCADE ·34·《数据库系统及应用》习题解答说明级联收回由于WITHGRANTOPTION授予的所有权限。GRANTOPTIONFOR要与CASCADE一同使用,因为要收回WITHGRANTOPTION权限,也应该一同收回由于该子句产生的所有授权。1.试述禁止权限语句DENY的作用。禁止权限语句DENY的作用是禁止用户从角色继承指定的权限。2.什么是数据库的审计功能?系统管理员(或数据库管理员)可以通过审计日志审计、跟踪所有用户对数据库的操作活动,可以确定哪些客户、什么时间、进行了哪些操作(任何操作)等,这种功能称作数据库的审计功能。3.统计数据库有哪些特殊的安全性问题?统计数据库的安全性问题主要是指不允许从统计信息推导出名细信息。习题八1.什么是事务?事务是构成单一逻辑工作单元的操作集合。2.解释事务的ACID性质。事务的ACID性质指事务具有原子性(即不可分割)、一致性(要能保证数据库的一致性)、隔离性(事务的原子性和一致性不受其他事务的影响)和持久性(事务对数据库所施加的所有更新都是永久的)。3.并发控制都会产生哪些干扰问题?并讨论之。并发事务可能会存在的干扰问题主要有:s丢失更新问题s未提交依赖问题s不一致分析问题s幻象读问题讨论略。4.请举出两个并发的程序进行更新操作时相互干扰的例子。可举上题四种问题之一,如下例:若有两个程序并发操作同一个银行帐号,程序1读取银行帐号余额,并从该帐号中扣除本次购物款X元,程序2也读取帐号余额,并对该帐号进行充值Y元,模拟流程如下: ·34·《数据库系统及应用》习题解答时刻程序1程序2T1读帐号余额到变量AT2A=A+XT3读帐号余额到变量BT4B=B+YT5用变量A更新帐号余额T6用变量A更新帐号余额如上表所示,程序1的更新丢失了!1.利用事务概念和封锁技术重做第4题,使干扰不发生。利用事务概念和封锁技术改写程序1和程序2后,相同的操作过程如下表:时刻程序1程序2T1开始事务:读帐号余额到变量A(帐号被封锁)T2A=A+XT3开始事务:读帐号余额到变量B(封锁失败,等待)T4等待T5用变量A更新帐号余额提交事务(解除封锁)T6开始事务:读帐号余额到变量B(帐号被封锁) ·34·《数据库系统及应用》习题解答T7B=B+YT8用变量A更新帐号余额提交事务(解除封锁)T9可见,丢失更新的问题解决了。1.分别解释共享封锁、更新封锁和独占封锁的含义。共享封锁是为读操作设置的一种封锁,目的是想读到一组不变的数据,也就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作。这种封锁可以保证最大的并发性,任何数量的用户都可以同时对同样的数据施加这种共享锁。当需要对一个记录或一组记录进行更新时(只是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。已经实施更新封锁的记录,拒绝来自其他用户的更新封锁或独占封锁。独占封锁也叫排他封锁,这是最严格的一类封锁。当需要对表实施插入、删除或修改操作时,应该使用独占封锁。已经实施独占封锁的表,拒绝来自其他用户的任何封锁,但不拒绝其他用户的一般读操作。2.什么是死锁?如何避免发生死锁?当两个(或多个)并发的事务分别等待对方释放封锁的资源,而使事务处于长期等待状态的现象称为死锁。为了避免死锁,一般可以采取两种方式:s相同顺序法:所有的事务约定都按相同的顺序来封锁表;s一次封锁法:为了完成一个事务,一次性封锁所需要的全部表。3.什么是事务的隔离性?如何划分事务的隔离级别?事务的隔离性是指一个事务应该与其他事务“隔离”,它在完成过程中不受其他事务的影响和干扰。“隔离”则意味着并发程度的降低。为了既能保证数据的一致性、又尽可能提高系统的并发执行效率,为此将隔离级别划分为如下4个级别:s未提交读(READUNCOMMITTED):事务隔离的最低级别,仅可保证不读取物理损坏的数据,这是4个隔离级别中限制最小的级别。s提交读(READCOMMITTED):可以保证不读取“脏”数据。s可重复读(REPEATABLEREAD):可以保证读一致性,避免不一致分析问题。s可串行化(SERIALIZABLE):事务隔离的最高级别,事务之间完全隔离;如果事务在可串行化隔离级别上运行,则可以保证任何并发重叠事务均是串行的。 ·34·《数据库系统及应用》习题解答1.试叙述在备份与恢复技术中数据库日志的作用。日志则是对备份的补充,它可以看作是一个值班日记,它将记录下所有对数据库的更新操作。这样就可以在备份完成时立刻刷新并启用一个数据库日志,数据库日志是实时的,它将忠实地记录下所有对数据库的更新操作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(恢复大部分数据),然后再运行数据库日志,即将备份后所做的更新操作再重新做一遍,从而将数据库完全恢复。2.试述在SQLServer中利用文件和文件组备份为数据库恢复提供了什么样的便利?利用文件和文件组进行备份,则当建立数据库的某个物理存储介质出现故障时,可以只恢复发生故障的存储介质上的物理文件或文件组,而不需要恢复整个数据库,这可以大大缩短数据库恢复所需要的时间。3.针对不同的故障类型(事务故障和介质故障),试讨论恢复的策略和方法。略4.试讨论备份系统数据库的重要性。系统数据库(在SQLServer上特别是master数据库)是管理用户数据库的数据库,如果系统数据库一旦损坏,整个系统的使用都将受到影响。所以系统数据库的安全和可靠是用户数据库可以正常使用的基础。习题九1.理解、定义如下术语,并分别给出两个例子:函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、主属性。略2.找出图5-1所示数据库各个关系中的函数依赖。仓库关系上的函数依赖:仓库号→城市,仓库号→面积职工关系上的函数依赖:职工号→仓库号,职工号→工资订购单关系上的函数依赖:订购单号→职工号,订购单号→供应商号,订购单号→订购日期供应商关系上的函数依赖:供应商号→供应商名,供应商名→供应商号,供应商号→地址,供应商名→地址3.试证明如下结论(引理9.1):X→A1A2…An的充分必要条件是X→Ak成立(k=1,2,…,n)。 ·34·《数据库系统及应用》习题解答证明:略4.设有关系模式R(U,F),U={A,B,C,D,E},F={AB→E,DE→B,B→C,C→E,E→A}1)计算所有函数依赖左部关于函数依赖集F的属性集闭包;(AB)F+={A,B,C,E}(DE)F+={A,B,C,D,E}BF+={A,B,C,E}CF+={A,C,E}EF+={A,E}2)确定关系模式R上的所有侯选关键字;由上面可知,只有属性集DE关于函数依赖集F的闭包为∪,故关系R上的候选关键字有{DE}同理:{BD}F+={A,B,C,D,E},故BD是R上的候选关键字3)求F的所有最小覆盖。根据最小覆盖的定义,应用算法9.2:步骤一:F中所有的函数依赖都已经是单一属性,算法进入下一步步骤二:F中有AB→E,DE→B的左部为复合属性,1.对于AB→E,应用引理9.4,∵∴F与F-{AB→E}∪{A→E}不等价∵∴F与F-{AB→E}∪{B→E}等价F变为{B→E,DE→B,B→C,C→E,E→A}2.对于DE→B,应用引理9.4,∵∴F与F-{DE→B}∪{E→B}不等价∵∴F与F-{DE→B}∪{D→B}不等价F不变算法进入下一步步骤三:逐一检查F中的各函数依赖1.对B→E,令G=F-{B→E},应用引理9.5,∵,∵G与F等价从F中去掉B→EF变为{DE→B,B→C,C→E,E→A} ·34·《数据库系统及应用》习题解答2.对DE→B,令G=F-{DE→B},应用引理9.5,∵∵G与F不等价故不能从F中去掉3.对B→C,令G=F-{B→C},应用引理9.5,∵∵G与F不等价故不能从F中去掉4.对C→E,令G=F-{C→E},应用引理9.5,∵∵G与F不等价故不能从F中去掉5.对E→A,令G=F-{E→A},应用引理9.5,∵∵G与F不等价故不能从F中去掉至此,算法结束,Fm={DE→B,B→C,C→E,E→A}4.假设有一个名为参加的关系,该关系有属性:职工(职工名)、工程(工程名)、时数(花费在工程上的小时数)和工资(职工的工资);一个参加记录描述一个职工花费在一个工程上的总时数和他的工资;另外,一个职工可以参加多个工程,多个职工可以参加同一个工程。请回答如下各问题:用A、B、C、D分别代表属性职工、工程、时数和工资,则:1)确定这个关系的关键字;AB2)找出这个关系中的所有函数依赖;AB->C,A->D3)指出这个关系上的哪些函数依赖会带来操作异常现象;D对关键字AB的部分函数依赖可能会带来如下问题:数据冗余:一个职工参加多个工程,则职工的工资值会重复;更新异常:当改变职工的工资时,可能会只修改了一部分,从而造成数据不一致;插入异常:当一个职工尚未承担工程,但要插入职工信息(如工资)则不允许(因为没有完整的关键字);删除异常:当某个工程结束,删除工程信息时,可能会将职工信息(如工资)一同删除(如果职工只参加了一项工程)。4)这个关系是第几范式关系?1.该关系所有的属性均是原子的,不可分割,故达到1NF2.存在非主属性工资部分依赖于主关键字{职工,工程},故该关系未达到2NF5)计算该关系上函数依赖集的最小覆盖;Fm={AB->C,A->D}6)将该关系分解成尽可能高的范式,并指明是第几范式?分解为R1(A,B,C)和R2(A,D)结果为4NF ·34·《数据库系统及应用》习题解答4.一个关系有4个字段A、B、C、D,这里A和B构成复合关键字,问满足下列函数依赖的关系是第几范式?1)A、B、C、D都函数依赖于AB。BCNF或4NF2)A、B、C、D都函数依赖于AB,而D还函数依赖于C。2NF3)A、B、C、D都函数依赖于AB,而D还函数依赖于B。1NF4)A、B、C、D都函数依赖于AB,而B还函数依赖于C。3NF(存在CàB,而左部C不是关键字,故不属于BCNF)5.设有关系模式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.试叙述概念数据库设计和逻辑数据库设计的区别,并说明各自的主要工作内容。概念数据库设计是不依赖于任何数据库管理系统的,它是对用户信息需求的归纳。概念设计的结果得到的是数据库的概念结构,或称概念数据模型,由于它是从现实世界的角度进行的抽象和描述,所以与具体的硬件环境和软件环境均无关。而在逻辑数据库首先要考虑实现数据库的数据库管理系统所支持的数据模型是什么,并将概念数据模型转换为数据库管理系统支持的数据模型。一般在概念设计阶段主要工作内容有:s确定实体;s确定实体的属性;s确定实体的标识属性(关键字);s确定实体间的联系和联系类型;s确定实现实体间联系的属性(外部关键字或连接属性);s画出表示概念模型的E-R图;除此之外,为了以后对模式进行规范化,还需要:s确定属性间的依赖关系。而在逻辑设计阶段一般主要工作内容有:s确定各个关系模式的主关键字,考虑实体完整性;s确定各个关系模式的外部关键字,考虑参照完整性; ·34·《数据库系统及应用》习题解答s确定各个关系模式中属性的约束、规则和默认值,考虑域完整性;s根据用户需求设计视图;s考虑安全方案和用户使用权限等。1.物理数据库设计主要包括哪些内容?物理数据库设计的内容是设计数据库的存储结构和物理实现方法。一般包括如下内容:s估算数据库的数据存储量;s设计数据库设备;s安排数据库的存储;s设计索引;s设计备份策略等。2.到Sybase公司的网站(http://www.sybase.com.cn)下载PowerDesigner的试用版,实践利用PowerDesigner进行数据库建模的方法和过程。略习题十一1.面向对象数据库是在什么背景下产生的?为什么需要面向对象数据库?在信息管理领域之外还有很多新的应用领域迫切需要使用数据库,如计算机辅助设计(CAD)、多媒体技术(音频、视频文件的存储和处理)等,这些应用往往需要存储大量的复杂类型的数据,同时面向对象的概念和技术也强烈地引发了数据库对复杂数据类型的支持,从而推动了面向对象数据库的发展。由于关系数据库不直接支持复杂数据类型,致使一些必须使用复杂数据类型的应用实现起来不是很方便、并且效率较低。另外关系模型也不支持构造类型和继承,这都使得人们希望发展面向对象的数据库。2.什么是对象的封装性、继承性和多态性?封装性是指将类的数据和操作封装在类定义中,对用户来讲类的“功能”是可见的,而实现部分是封装在类定义中的,用户是看不见的。这种封闭性保证了每个对象的实现都独立于其他对象的细节,从而有利于保证软件的质量。继承性是指可以利用已有的类去定义新的类。如果根据类A定义类B,则说类B继承了类A,同时把类A称作基类,把类B称作子类。子类不仅可以继承基类的所有性质,还可以在子类中定义新的性质。继承性使得基类中的代码可以共享和重用,所以继承性有助于软件可重用性的实现。多态性是指同一个函数可以有多种作用,即:同一个函数根据不同的引用对象可以完成不同的功能; ·34·《数据库系统及应用》习题解答同一个函数即便引用同一个对象,但由于传递的参数不同也可以完成不同的功能。多态性可以为整个应用和所有对象内部提供一个一致的接口,没有必要为相同的动作命名和编写不同的函数,它完全可以根据引用的对象不同、传递的消息不同来完成不同的功能。这样做也与现实世界中管理和运作方法相吻合。1.面向对象数据库的研究方法主要有哪些?面向对象数据库的研究方法目前主要有以下三种:s扩充关系数据模型。将成熟的关系数据库与面向对象数据库方法结合起来,可减少研制工作量、缩短研制周期。这种方法的弱点是不能全面支持面向对象的特征。s在面向对象语言中嵌入数据库功能而形成面向对象数据库。该方法的关键是如何在面向对象语言中增加持久性对象的存储管理。使用此方法受到面向对象语言的一些限制。s开发全新的数据模型,从底层实现面向对象数据库系统。这是最彻底的方法,缺点是难度大,一方面缺乏统一的数据模式及形式化理论,另一方面在查询优化、视图及数据库工具方面仍为空白。2.面向对象数据库应该具备哪些基本特征?一个面向对象数据库系统应该具备如下的基本内容和特征:s在数据模型方面支持对象、复合对象、封装、类、继承、重载、滞后联编、多态性等基本概念。其中复合对象的概念包括支持生成复合对象的构造器(元组、集合、包、列表、数组等)。s数据库管理系统除了具有传统的数据库管理系统所具有的功能(如并发控制、故障和恢复)外,还支持永久对象、长事务处理和嵌套事务,具有版本管理和模式演化的能力,能维护数据完整性,适合在分布式环境下工作。s数据库访问界面要支持消息传递,提供计算能力完备的数据库程序设计语言,能解决数据库语言与宿主语言的某些不匹配问题,提供类似SQL的非过程化查询功能。3.SQL99支持ORDBMS、还是OODBMS?SQL99支持的是ORDBMS。4.比较RDBMS、ORDBMS和OODBMS,然后分别描述一个适合使用RDBMS、ORDBMS和OODBMS的应用,并说明原因。略习题十二1.解释ODBC的概念。ODBC(OpenDataBaseConnectivity)的全称是开放数据库互连,它是一种访问数据库的统一界面标准。 ·34·《数据库系统及应用》习题解答1.应用程序是如何通过ODBC访问数据库的?应用程序通过调用ODBC函数可以完成对数据库的访问操作,它所执行的任务或完成的工作包括:请求对数据源的连接,获取连接句柄;指定事务控制方式;定义接收结果的数据区;向数据源发送SQL语句;接收SQL的查询结果;处理出错信息,并将出错信息返回给应用程序;终止对数据源的连接。2.设有基于SQLServer的pubs数据源,它对应于pubs数据库,写出利用VisualFoxPro访问或操作SQLServer的如下语句:1)连接到pubs数据库;gn=SQLCONNECT("pubs","sa")2)查询employee表的全部信息;=SQLEXEC(gn,"SELECT*FROMemployee")3)为publishers表准备一个带参数的查询,可以指定pub_name(出版社名)进行查询;=SQLPREPARE(gn,"SELECT*FROMpublishersWHEREpub_name=?m_p_name")4)以前一小题为基础,查询“FiveLakesPublishing”出版社的信息;m_p_name="FiveLakesPublishing"=SQLEXEC(gn)5)从sales表中删除stor_id为6380的记录。=SQLEXEC(gn,"DELETEFROMsaleswherestor_id=6380")3.PowerBuilder是个什么类型的软件产品?PowerBuilder是一个面向对象的数据库应用系统开发工具。4.PowerBuilder都可以通过哪些方式访问数据库?PowerBuilder都可以通过各种接口访问数据库,如ODBC、JDBC、OLEDB和各种数据库专用接口等。5.试述PowerBuilder中事务对象的概念。PowerBuilder的事务对象是PowerScript与数据库的通讯区,只有通过事务对象才能完成对数据库的操作。6.使用PowerBuilder完成12.3节中的例子,初步掌握使用PowerBuilder进行开发的方法。略7.试述基于组件的数据库开发的基本思想。克服传统C/S ·34·《数据库系统及应用》习题解答结构的明显缺点(缺乏中心控制、缺乏安全性和沉重的客户端负载等),以面向对象技术为基础,将业务处理逻辑和规则按完整的逻辑单元进行封装,即将相关的类封装成组件,并使它们部署在应用服务器上,客户端应用程序不再直接和数据库打交道,而是通过部署在服务器上的组件完成数据操作。1.查阅有关资料,进一步了解和掌握有关组件开发的技术标准。略2.为什么需要动态HTML?为什么需要Web数据库?在传统的Web服务器中,文本和其他多媒体信息都是以文件的形式来进行存储和管理的,随着信息量的不断增加,系统的速度等性能受到越来越大的影响。另一方面,WWW的应用领域在不断拓展,静态的Web页面也越来越不能满足对信息服务的动态性、实时性和交互性的要求。也就是说,用户已经不满足看技术人员事先做好的静态信息,而希望能够根据自己的需要看到最新的信息,这就需要数据库的支持,可以根据检索数据库的结果动态生成网页。所以可以嵌入数据库检索语句并根据检索结果动态生成网页的HTML称为动态HTML,而可以支持动态生成网页的数据库就是WEB数据库。3.试分别叙述Web服务器、页面服务器和事务服务器的作用。Web服务器接收Web浏览器发送的页面浏览请求,如果其中嵌入了数据请求则交由页面服务器处理。页面服务器处理负责数据库与Web站点的协调和管理,负责解释Web页面中的数据请求,并将从数据库中获得的动态数据嵌入到Web页面中。事务服务器即应用服务器或组件服务器,当页面中的数据访问需要调用相应的业务处理逻辑时,可能需要事务服务器的支持。4.试述在PowerBuilder中Web数据窗口的作用。Web数据窗口是用于HTML的数据窗口,它提供了一种瘦客户端解决方案,可以提供PowerBuilder数据窗口的大部分数据操作功能,而且不需要在Web客户端安装任何PowerBuilder动态连接库(DLL)或其他组件。习题十三1.按软件工程思想(结构化生命周期法)开发一个数据库应用系统应该包括哪些步骤?说明各步骤的主要工作内容。数据库应用系统开发可以分为如下七个步骤:s系统调查及可行性分析;s系统分析(需求分析);s概要设计(总体设计);s详细设计(模块设计);s系统实现(编程);s系统调试与试运行(测试); ·34·《数据库系统及应用》习题解答s系统运行、评价与维护(运行)。系统调查和可行性分析阶段的任务是初步了解信息系统用户的组织机构、业务范畴以及新系统的目标,并且做出可行性分析,包括经济可行性、技术可行性和使用可行性。需求分析阶段的主要任务是了解用户的需求,基本目标是:对现实世界要处理的对象进行详细调查,在了解原系统(手工系统或以前开发的计算机系统)的情况、确定新系统功能的过程中,确定新系统的目标,收集支持新系统目标的数据需求和处理需求。总体设计阶段的主要任务是把用户的信息要求统一到一个整体的逻辑结构或概念模式中,此结构能表达用户的要求,并且独立于任何硬件和数据库管理系统。这一步,从应用程序的角度来讲,要完成子系统的划分和功能模块的划分;从数据库的角度来讲要完成概念模型的设计。详细设计阶段同样是包括数据库设计和应用程序设计两大部分。对数据库设计要根据具体的数据库管理系统设计数据库、设计关系、考虑数据的完整性、考虑数据的安全和备份策略等。对应用程序设计要给出功能模块说明,考虑实施方法,设计存储过程等。编程阶段则根据上一步的设计结果进行具体实施,建立数据库并装入原始数据,建立存储过程,编写和调试应用程序代码等。调试与试运行阶段对各个子系统、各个模块要进行联合调试和测试,并试运行。在试运行阶段要广泛听取用户的意见,并根据运行效果进行评估,修改系统的错误、改进系统的性能。最后一步是将系统交给用户使用,在使用的过程中可能还会出现新的问题,甚至提出新的需求,所以还要不断对系统进行评价和维护。1.试述快速原型方法的基本思想,并说明该方法的步骤及其工作内容。快速原型法(RapidPrototyping)的基本思想是依据原型进行快速开发,对存在的问题进行反复的修正,直至形成用户满意的系统。快速原型开发方法可以分为四个步骤:s系统基本需求的确定:确定用户对系统的基本需求,包括系统的主要性能、总体结构、交互界面等,勾画出用户所需要的初步原型;s对原型的功能选择:根据需要将原型中的功能分类,确定主次关系,以决定先实现哪些功能;s原型的构造与试用:根据原型进行快速开发,并提供给用户试用;s原型的修改和完善:用户可以在试用的过程中发现问题、提出建议,从而不断完善原型,最终得到用户满意的系统。2.试叙述结构化生命周期方法和快速原型方法的各自利弊,并阐述你个人对数据库应用系统开发方法的见解。略3.试述面向对象开发方法的基本思想和步骤。 ·34·《数据库系统及应用》习题解答面向对象开发方法的基本思想和步骤完全融合了结构化生命周期方法和快速原型方法的基本思想和步骤,只是在其中采取了面向对象的技术。具体来说,也包括需求分析、总体设计、详细设计、编程实施等各个阶段,只是在需求分析阶段建立的是面向对象的数据模型,在设计和实现阶段采取面向对象的技术等。1.查阅有关资料,进一步了解面向对象的建模语言UML。略2.如何看待数据库应用系统的开发方法?常常导致系统开发失败的原因有哪些?略习题十四1.简述分布式数据库的特点。分布式数据库应该具有如下特点:s数据的物理分布性;s数据的逻辑整体性;s数据的分布透明性;s场地自治和协调工作;s数据冗余。2.分布式数据库的分布数据独立性的含义是什么?数据的分布独立性是指用户只需关心整体数据库中有哪些数据,而不必关心数据存放在什么地方及存放细节,分布的存储实现是由系统自动完成的。3.分布式数据库有哪些分布策略?SQLServer采用的是什么分布技术?分布式数据库常用的分布策略有:集中式、分割式、复制式、混合式。SQLServer采用的是复制式分布技术。4.试述出版数据库、发行数据库、订阅数据库的概念,并说明三者之间的关系。出版数据库提供复制的源数据;订阅数据库与出版数据库相对应,是存放复制数据的目标数据库;发行数据库则扮演着“存储和转发”的角色,它存储来自出版数据库的出版数据,并将这些数据转发到订阅数据库。5.分别讨论在什么情况下应该使用快照复制、事务复制和合并复制。以静态数据为主时可以单独使用快照复制;当发生在出版服务器上的数据更改希望及时传播到订阅服务器上时应该使用事务复制;当多个订阅服务器需要在不同时刻更新数据并将这些更改传播到出版服务器和其它订阅服务器时应该使用合并复制。6.试述在事务复制中“日志读取器代理”的作用和工作流程。 ·34·《数据库系统及应用》习题解答日志读取器代理程序的作用是监视为事务复制配置的每个数据库的事务日志,当发现有更新事务时将这些事务批量复制到发行服务器上的发行数据库中。然后由发行代理程序将这些更新事务传送到订阅数据库。1.讨论在合并复制中解决更新冲突的策略可以有哪些?略2.试为高校的学籍管理数据库设计分布复制数据模型和复制类型,并说明设计的根据和原则。略习题十五1.什么是数据仓库?数据仓库是支持管理决策过程的、面向主题的、集成的、随时间而增长的持久的数据集合。2.简单叙述数据仓库与决策支持系统的关系。传统的决策支持系统由数据库、模型库、方法库和人机交互等四个部件组成,它是综合利用各种数据、信息、知识、特别是模型技术,辅助各级决策者解决半结构化决策问题的人机交互系统。但是这种决策支持系统并不成功,它缺少不同时期的大量数据的支持,而数据仓库技术则为决策支持系统提供了支持。数据仓库是支持联机分析应用,是为决策支持服务的。也有人说数据仓库就是决策支持系统。3.简述SQLServer的数据仓库解决方案。SQLServer提供了一些组件可以将OLTP数据转换为OLAP数据,并使OLAP信息可由决策者使用,从而构成SQLServer的数据仓库解决方案。4.将数据库中的OLTP数据转换成数据仓库的OLAP数据一般包括哪些过程?包括合并数据、清理数据、聚合数据、将数据组织到多维数据集中等过程。习题十六1.什么是并行数据库?并行数据库的主要研究内容是什么?并行数据库是在并行计算机上具有并行处理能力的数据库系统,它是数据库技术与计算机并行处理技术相结合的产物。并行数据库的研究主要包括以下几个方面:一是实现并行数据库操作的并行算法的研究;二是并行数据库物理存储结构的研究;三是并行查询优化的研究。 ·34·《数据库系统及应用》习题解答1.简单叙述主动数据库的主要特征。主动数据库的最主要特征就是能够提供主动的服务。2.工程数据库主要用于什么领域?工程数据库有哪些特点?工程数据库主要用于计算机辅助设计(CAD)和计算机辅助制造(CAM)等通常称为CAx的工程应用领域。工程数据库具有以下一些特点:s支持复杂多样的工程数据的存储和管理;s支持复杂对象(如图形数据)的表示和处理;s支持变长结构的数据实体的处理;s支持多种工程应用程序;s支持模式的动态修改和扩展;s支持工程长事务和嵌套事务的处理和恢复等。3.什么是知识库?知识库一般从哪两个方面进行研究?数据库除了可以存储常规的数据,还可以存储和管理“知识”,使数据库智能化,这就是所谓的知识库。知识库的研究一般从两个方面进行,一方面是从人工智能出发研究知识库,另一方面是从数据库出发研究知识库。4.试述研究模糊数据库的意义。传统的数据库系统描述和存储的是精确的和确定的客观事物,但不能描述和处理模糊的和不确定的数据。模糊技术与数据库技术相结合,就是希望利用数据库来描述、存储和处理模糊数据,从而提高模糊技术的应用水平。模糊不是目的,研究模糊是人们认知世界所采取的一种手段,人们通过模糊最终要做出正确的结论。所以模糊数据库是人工智能和专家系统的一个很重要的研究领域。5.什么是空间数据库?举例说明空间数据库应该提供哪些特定的查询功能。空间数据是用于表示空间物体的位置、形状、大小和分布特征等各方面信息的数据。空间数据库则是存储空间物体信息的数据库,并能够对空间数据进行高效的查询和处理。空间数据库应该提供以下一些常用的查询方法:s点-线查询,例如查询某一河流(线)上的桥梁(点);s点-面查询,例如查询某一城市(面)的学校(点);s线-面查询,例如查询某一高速公路(线)所经过的城镇(面);s点-点查询,例如查询两个地点之间的距离;s线-线查询,例如查询与某一高速公路相交的所有公路等。'