1、数据库系统及应用 (第二版)习题解答习题一1. 什么是数据库?数据库是相互关联的数据的集合,它用综合的方法组织数据,具有较小的数据冗余,可供多个用户共享,具有较高的数据独立性,具有安全控制机制,能够保证数据的安全、可靠,允许并发地使用数据库,能有效、及时地处理数据,并能保证数据的一致性和完整性。2. 简要概述数据库、数据库管理系统和数据库系统各自的含义。数据库、数据库管理系统和数据库系统是三个不同的概念,数据库强调的是相互关联的数据,数据库管理系统是管理数据库的系统软件,而数据库系统强调的是基于数据库的计算机应用系统。3. 数据独立性的含义是什么?数据独立性是指数据的组织和存储方法与应用程序互
2、不依赖、彼此独立的特性。这种特性使数据的组织和存储方法与应用程序互不依赖,从而大大降低应用程序的开发代价和维护代价。4. 数据完整性的含义是什么?保证数据正确的特性在数据库中称之为数据完整性。5. 简要概述数据库管理员的职责。数据库管理员的职责可以概括如下:(1) 首先在数据库规划阶段要参与选择和评价与数据库有关的计算机软件和硬件,要与数据库用户共同确定数据库系统的目标和数据库应用需求,要确定数据库的开发计划;(2) 在数据库设计阶段要负责数据库标准的制定和共用数据字典的研制,要负责各级数据库模式的设计,负责数据库安全、可靠方面的设计;(3) 在数据库运行阶段首先要负责对用户进行数据库方面的培
3、训;负责数据库的转储和恢复;负责对数据库中的数据进行维护;负责监视数据库的性能,并调整、改善数据库的性能,提高系统的效率;继续负责数据库安全系统的管理;在运行过程中发现问题、解决问题。6. 文件系统用于数据管理存在哪些明显的缺陷?文件系统用于数据管理明显存在如下缺陷:数据库系统及应用习题解答2(1) 数据冗余大。这是因为每个文件都是为特定的用途设计的,因此就会造成同样的数据在多个文件中重复存储。(2) 数据不一致性。这往往是由数据冗余造成的,在进行更新时,稍不谨慎就会造成同一数据在不同文件中的不一致。(3) 程序和数据之间的独立性差。应用程序依赖于文件的存储结构,使得若修改文件的存储结构则必须
4、修改程序。(4) 数据联系弱。文件与文件之间是独立的,文件之间的联系必须通过程序来构造。因此,文件系统是一个不具有弹性的、无结构的数据集合,不能反映现实世界事物之间的联系。习题二1. 数据的三种范畴的含义是什么?数据需要我们的认识、理解、整理、规范和加工,然后才能存放到数据库中。数据从现实生活进入到数据库实际经历了现实世界阶段(认识、理解) 、信息世界阶段(规范、提升)和机器世界阶段(管理) ,我们也把之称为数据的三种范畴,数据在三种范畴中的概念、术语都有些不同。2. 对以下问题分析实体之间的联系,并分别画出 E-R 图:工程师和工程项目1) 实体之间的联系:设每名工程师可以参加多个工程项目,
5、每个工程项目可以由多名工程师工作,则二者属于多对多的关系,2) 则 E-R 图如下:乘务员和火车1) 实体之间的联系:设每辆火车上可以有多个乘务员工作,每名乘务员只可以在一列火车上工作,则二者属于一对多的关系,工程师工 程 师 号号列车号职称姓名工程项目项目号金额项目名参加M n工程师号项目号参加天数数据库系统及应用习题解答 32) 则 E-R 图如下:公司和产品类型1) 实体之间的联系:设每个公司可以生产多种产品类型,每种产品类型可以由多家公司生产,则二者属于多对多的关系,2) 则 E-R 图如下:火车列 车 号 号列车号生产厂家列车名乘务员乘务员号工资姓名工作1 n列车号乘务员号职位公司公
6、司编号 负责人公司名产品类型类型 ID类型名生产M N公司号类型 ID投产年份数据库系统及应用习题解答4维修工和机器1) 实体之间的联系:设每个维修工可以维修多台机器,每台机器需要由多名维修工修理,则二者属于多对多的关系,2) 则 E-R 图如下:投资者和股票1) 实体之间的联系:设每个投资者可以持有多只股票,每只股票可以由多名投资者持有,则二者属于多对多的关系,2) 则 E-R 图如下:3. 试述为什么要讨论实体之间的联系类型?维修工维修工号 时薪姓名机器机器 ID机器价机器名修理M N维修工号机器 ID维修工时投资者投资者号 帐号余额姓名股票股票号股票价股票名持有M N投资者号股票号数量数
7、据库系统及应用习题解答 5实体之间的联系类型决定了数据库设计时的结果,与数据库的设计质量密切相关。4. 多对多联系如何转换成一对多联系?并举例说明。通过引入一个表示联系的实体,将原来两个实体之间的一个多对多的联系转换成分别与表示联系的实体之间的两个一对多的联系。例如,仓库和材料两个实体之间存在着多对多的联系,即一个仓库可以存放多种材料,一种材料可以存放在多个仓库;通过引入一个库存实体转换为仓库与库存之间的一对多联系和材料与库存之间的一对多联系。5. 解释连接陷阱的概念,在操作数据库时如何避免连接陷阱?所谓连接陷阱就是误认为本来不存在联系的两个实体之间存在联系,从而强行进行连接操作,自然得到错误
8、的结果。为了避免连接陷阱,必须明确实体之间的联系和联系类型,只在有联系的实体之间进行关联操作。6. 传统的三大数据模型是哪些?它们分别是如何表示实体之间的联系的?传统的三大数据模型是层次模型、网状模型和关系模型。层次模型用层次结构表示联系,它的典型代表 IMS 用层次型表示联系;网状模型用网状结构表示联系,它的典型代表CODASYL 用系表示联系;关系模型用关系表示联系。7. 解释存储数据独立性和概念数据独立性的区别。存储数据独立性强调的是应用程序与数据的存储结构相互独立的特性,即修改数据的存储方法或数据结构时不影响应用程序;而概念数据独立性强调的是应用程序与数据的概念结构相互独立的特性,即修
9、改概念结构中的字段时不影响应用程序。8. 为什么说概念数据库和外部数据库物理上并不真正存在?只有存储数据库是物理上存在的数据库,概念数据库是存储数据库的抽象,它反映了数据库的全局逻辑结构;而外部数据库是概念数据库的部分抽取,它反映了数据库的局部逻辑结构。9. 说明在 DBMS 中存储模式、概念模式和外部模式的作用。存储模式描述了数据库的存储结构,它包括对存储数据库中每个文件以及字段的描述,包括用于实现辅助关键字或存储文件间联系的指针字段的细节。存储数据库利用存储模式组织和存取存储数据库中的文件。如果要修改存储数据库的结构(例如,用倒排文件代替多链表) ,那么仅仅需要把这些修改反映在存储模式中,
10、以使数据库存储系统能够操作新的存储数据库。按这种方法,数据库管理系统可以提供存储(物理)数据独立性。概念模式是对概念数据库的描述,它包括对概念文件及概念文件之间联系的描述。概念数据库不包含真正的数据,一切都是由存储数据库决定的。外部模式则是对外部数据库的描述,它需要说明外部文件、构成外部文件的字段及这些外部文件之间的联系。数据库管理系统提供了外部模式与概念模式之间的映象以及概念模式与存储模式之间的数据库系统及应用习题解答6映象,使用户通过外部数据库或概念数据库来操作存储数据库。习题三1. 解释属性与值域的区别。属性是二维表中的列,而值域是列或属性的取值范围。2. 关系模型的三个组成部分是什么?
11、关系数据模型包括关系数据结构、关系操作集合和关系完整性约束三个重要因素。3. 对关系模型的操作都包括哪些?关系数据模型中的操作包括:(1) 传统的集合运算:并(Union) 、交(Intersection) 、差(Difference ) 、广义笛卡尔积(Extended Cartesian Product) ;(2) 专门的关系运算:选择(Select) 、投影(Project) 、连接(Join) 、除(Divide) ;(3) 有关的数据操作:查询(Query) 、插入(Insert) 、删除(Delete) 、修改(Update ) 。4. 关系模型的完整性规则都有哪些?在关系数据模型
12、中一般将数据完整性分为实体完整性、参照完整性和用户定义完整性。5. 试述外部关键字的概念和作用,外部关键字是否允许为空值,为什么?如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。外部关键字用于实现表与表之间的参照完整性。外部关键字是否允许为空值取决于语义的规定。外部关键字的取值或者为空值、或者为被参照关系中的某个关键字字段的值。6. 分别叙述在进行插入、删除、更新操作时都需要进行哪些完整性检查,并说明理由。(1) 执行插入操作时需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。首先检查实体完整性规则,如果插入元组的主关键字的属性不为空值、并且
13、相应的属性值在关系中不存在(即保持唯一性) ,则可以执行插入操作,否则不可以执行插入操作。接着再检查参照完整性规则,如果是向被参照关系插入元组,则无须检查参照完整性;如果是向参照关系插入元组,则要检查外部关键字属性上的值是否在被参照关系中存在对应的主关键字的值,如果存在则可以执行插入操作,否则不允许执行插入操作。另外,如果插入元组的外部关键字允许为空值,则当外部关键字是空值时也允许执行插入操作。最后检查用户定义完整性规则,如果插入的元组在相应的属性值上遵守了用户定义完整性规则,则可以执行插入操作,否则不可以执行插入操作。数据库系统及应用习题解答 7(2) 执行删除操作时一般只需要检查参照完整性
14、规则。如果删除的是参照关系的元组,则不需要进行参照完整性检查,可以执行删除操作。如果删除的是被参照关系的元组,则检查被删除元组的主关键字属性的值是否被参照关系中某个元组的外部关键字引用,如果未被引用则可以执行删除操作;否则可能有三种情况:1) 不可以执行删除操作,即拒绝删除;2) 可以删除,但需同时将参照关系中引用了该元组的对应元组一起删除,即执行级联删除;3) 可以删除,但需同时将参照关系中引用了该元组的对应元组的外部关键字置为空值,即空值删除。(3) 执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。7. 试述关系的自然连接和等值连
15、接的异同之处。自然连接和等值连接都是基于相等比较运算的连接,但是自然连接要去掉重复的属性,而等值连接却不需要去掉重复的属性。8. 以图 3-6 的数据库为例(可参照图 5-1,该数据库的实例) ,用关系代数完成以下检索:注意:此处暂以 * 表示连接运算符。1) 检索在仓库 WH2 工作的职工的工资。 职工号,工资 ( 仓库号=“WH2“ (职工)2) 检索在上海工作的职工的工资。 职工号,工资 ( 城市=“上海“ (仓库) * 职工)3) 检索北京的供应商的名称。 供应商名 ( 地址=“北京“ (供应商)4) 检索目前与职工 E6 有业务联系的供应商的名称。 供应商名 ( 职工号=“E6“ (
16、订购单 ) * 供应商)5) 检索所有职工的工资都大于 1220 元的仓库所在的城市。 城市 (仓库) - 城市 ( 工资1230) AND 供应商号 IN(SELECT 供应商号 FROM 供应商 WHERE 地址=北京 )14) 检索出仓库的个数。SELECT COUNT(*) FROM 仓库15) 检索出有最大面积的仓库信息。SELECT * FROM 仓库WHERE 面积 =(SELECT MAX(面积) FROM 仓库)16) 检索出所有仓库的平均面积。SELECT AVG(面积) FROM 仓库数据库系统及应用习题解答 13按城市算仓库面积:SELECT 城市,AVG( 面积)FR
17、OM 仓库Group by 城市17) 检索出向 S4 供应商发出订购单的那些仓库的平均面积。SELECT AVG(面积)FROM 仓库 WHERE 仓库号 IN(SELECT 仓库号 FROM 职工 WHERE 职工号 IN(SELECT 职工号 FROM 订购单 WHERE 供应商号=S4)18) 检索出每个城市的供应商个数。SELECT 地址,COUNT(*) FROM 供应商 GROUP BY 地址19) 检索出每个仓库中工资多于 1220 元的职工个数。SELECT 仓库号,COUNT(*)FROM 职工 WHERE 工资1220GROUP BY 仓库号存在问题:WH4 无职工,应在
18、结果显示 0改进:SELECT 仓库号,人数=(select COUNT( 职工号) from 职工 where 仓库.仓库号=职工.仓库号 and 工资1220) FROM 仓库20) 检索出和面积最小的仓库有联系的供应商的个数。SELECT COUNT(distinct 供应商号 ) FROM 订购单 WHERE 职工号 IN(SELECT 职工号 FROM 职工 WHERE 仓库号 IN(SELECT 仓库号 FROM 仓库 WHERE 面积=数据库系统及应用习题解答14(SELECT MIN(面积) FROM 仓库)-另一个写法:SELECT COUNT(*) FROM 供应商 WHE
19、RE 供应商号 IN(SELECT 供应商号 FROM 订购单 WHERE 职工号 IN(SELECT 职工号 FROM 职工 WHERE 仓库号 IN(SELECT 仓库号 FROM 仓库 WHERE 面积=(SELECT MIN(面积) FROM 仓库)21) 检索出工资低于本仓库平均工资的职工信息。SELECT * FROM 职工 outWHERE 工资 C , A-D3) 指出这个关系上的哪些函数依赖会带来操作异常现象;D 对关键字 AB 的部分函数依赖可能会带来如下问题:数据冗余:一个职工参加多个工程,则职工的工资值会重复;数据库系统及应用习题解答26更新异常:当改变职工的工资时,可
20、能会只修改了一部分,从而造成数据不一致;插入异常:当一个职工尚未承担工程,但要插入职工信息(如工资)则不允许(因为没有完整的关键字) ;删除异常:当某个工程结束,删除工程信息时,可能会将职工信息(如工资)一同删除(如果职工只参加了一项工程) 。4) 这个关系是第几范式关系?1.该关系所有的属性均是原子的,不可分割,故达到 1NF2.存在非主属性工资部分依赖于主关键字职工,工程 ,故该关系未达到 2NF5) 计算该关系上函数依赖集的最小覆盖;Fm=AB-C, A-D6) 将该关系分解成尽可能高的范式,并指明是第几范式?分解为 R1(A,B,C)和 R2(A,D)结果为 4NF6. 一个关系有 4
21、 个字段 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(存在 CB,而左部 C 不是关键字,故不属于 BCNF)7. 设有关系模式 R(A, B, C, D, E),并有函数依赖AB D, AC E, BCD,DA,EB,现将 R 分解成关系模式 S(A, B,
22、C)和其他一些关系模式,请给出在关系模式 S 上成立的函数依赖。ACB,BCA习题十1. 试叙述概念数据库设计和逻辑数据库设计的区别,并说明各自的主要工作内容。概念数据库设计是不依赖于任何数据库管理系统的,它是对用户信息需求的归纳。概念设计的结果得到的是数据库的概念结构,或称概念数据模型,由于它是从现实世界的角度进行的抽象和描述,所以与具体的硬件环境和软件环境均无关。而在逻辑数据库首先要考虑实现数据库的数据库管理系统所支持的数据模型是什么,并将概念数据模型转换为数据库管理数据库系统及应用习题解答 27系统支持的数据模型。一般在概念设计阶段主要工作内容有: 确定实体; 确定实体的属性; 确定实体
23、的标识属性(关键字) ; 确定实体间的联系和联系类型; 确定实现实体间联系的属性(外部关键字或连接属性) ; 画出表示概念模型的 E-R 图;除此之外,为了以后对模式进行规范化,还需要: 确定属性间的依赖关系。而在逻辑设计阶段一般主要工作内容有: 确定各个关系模式的主关键字,考虑实体完整性; 确定各个关系模式的外部关键字,考虑参照完整性; 确定各个关系模式中属性的约束、规则和默认值,考虑域完整性; 根据用户需求设计视图; 考虑安全方案和用户使用权限等。2. 物理数据库设计主要包括哪些内容?物理数据库设计的内容是设计数据库的存储结构和物理实现方法。一般包括如下内容: 估算数据库的数据存储量; 设
24、计数据库设备; 安排数据库的存储; 设计索引; 设计备份策略等。3. 到 Sybase 公司的网站(http:/)下载 PowerDesigner 的试用版,实践利用 PowerDesigner 进行数据库建模的方法和过程。略习题十一1. 面向对象数据库是在什么背景下产生的?为什么需要面向对象数据库?在信息管理领域之外还有很多新的应用领域迫切需要使用数据库,如计算机辅助设计(CAD ) 、多媒体技术(音频、视频文件的存储和处理)等,这些应用往往需要存储大量的复杂类型的数据,同时面向对象的概念和技术也强烈地引发了数据库对复杂数据类型的支持,从而推动了面向对象数据库的发展。由于关系数据库不直接支持
25、复杂数据类型,致使一些必须使用复杂数据类型的应用实现数据库系统及应用习题解答28起来不是很方便、并且效率较低。另外关系模型也不支持构造类型和继承,这都使得人们希望发展面向对象的数据库。2. 什么是对象的封装性、继承性和多态性?封装性是指将类的数据和操作封装在类定义中,对用户来讲类的“功能”是可见的,而实现部分是封装在类定义中的,用户是看不见的。这种封闭性保证了每个对象的实现都独立于其他对象的细节,从而有利于保证软件的质量。继承性是指可以利用已有的类去定义新的类。如果根据类 A 定义类 B,则说类 B 继承了类 A,同时把类 A 称作基类,把类 B 称作子类。子类不仅可以继承基类的所有性质,还可
26、以在子类中定义新的性质。继承性使得基类中的代码可以共享和重用,所以继承性有助于软件可重用性的实现。多态性是指同一个函数可以有多种作用,即: 同一个函数根据不同的引用对象可以完成不同的功能; 同一个函数即便引用同一个对象,但由于传递的参数不同也可以完成不同的功能。多态性可以为整个应用和所有对象内部提供一个一致的接口,没有必要为相同的动作命名和编写不同的函数,它完全可以根据引用的对象不同、传递的消息不同来完成不同的功能。这样做也与现实世界中管理和运作方法相吻合。3. 面向对象数据库的研究方法主要有哪些?面向对象数据库的研究方法目前主要有以下三种: 扩充关系数据模型。将成熟的关系数据库与面向对象数据
27、库方法结合起来,可减少研制工作量、缩短研制周期。这种方法的弱点是不能全面支持面向对象的特征。 在面向对象语言中嵌入数据库功能而形成面向对象数据库。该方法的关键是如何在面向对象语言中增加持久性对象的存储管理。使用此方法受到面向对象语言的一些限制。 开发全新的数据模型,从底层实现面向对象数据库系统。这是最彻底的方法,缺点是难度大,一方面缺乏统一的数据模式及形式化理论,另一方面在查询优化、视图及数据库工具方面仍为空白。4. 面向对象数据库应该具备哪些基本特征?一个面向对象数据库系统应该具备如下的基本内容和特征: 在数据模型方面支持对象、复合对象、封装、类、继承、重载、滞后联编、多态性等基本概念。其中
28、复合对象的概念包括支持生成复合对象的构造器(元组、集合、包、列表、数组等) 。 数据库管理系统除了具有传统的数据库管理系统所具有的功能(如并发控制、故障和恢复)外,还支持永久对象、长事务处理和嵌套事务,具有版本管理和模式演化的能力,能维护数据完整性,适合在分布式环境下工作。 数据库访问界面要支持消息传递,提供计算能力完备的数据库程序设计语言,能解决数据库语言与宿主语言的某些不匹配问题,提供类似 SQL 的非过程化查询功能。数据库系统及应用习题解答 295. SQL99 支持 ORDBMS、还是 OODBMS?SQL99 支持的是 ORDBMS。6. 比较 RDBMS、ORDBMS 和 OODB
29、MS,然后分别描述一个适合使用RDBMS、ORDBMS 和 OODBMS 的应用,并说明原因。略习题十二1. 解释 ODBC 的概念。ODBC(Open DataBase Connectivity)的全称是开放数据库互连,它是一种访问数据库的统一界面标准。2. 应用程序是如何通过 ODBC 访问数据库的?应用程序通过调用 ODBC 函数可以完成对数据库的访问操作,它所执行的任务或完成的工作包括:请求对数据源的连接,获取连接句柄;指定事务控制方式;定义接收结果的数据区;向数据源发送 SQL 语句;接收 SQL 的查询结果;处理出错信息,并将出错信息返回给应用程序;终止对数据源的连接。3. 设有基
30、于 SQL Server 的 pubs 数据源,它对应于 pubs 数据库,写出利用 Visual FoxPro 访问或操作 SQL Server 的如下语句:1) 连接到 pubs 数据库;gn=SQLCONNECT(“pubs“,“sa“)2) 查询 employee 表的全部信息;=SQLEXEC(gn,“SELECT * FROM employee“)3) 为 publishers 表准备一个带参数的查询,可以指定 pub_name(出版社名)进行查询;=SQLPREPARE(gn,“SELECT * FROM publishers WHERE pub_name=?m_p_name“)
31、4) 以前一小题为基础,查询“Five Lakes Publishing”出版社的信息;m_p_name=“Five Lakes Publishing“=SQLEXEC(gn)5) 从 sales 表中删除 stor_id 为 6380 的记录。=SQLEXEC(gn,“DELETE FROM sales where stor_id=6380“)4. PowerBuilder 是个什么类型的软件产品?PowerBuilder 是一个面向对象的数据库应用系统开发工具。5. PowerBuilder 都可以通过哪些方式访问数据库?PowerBuilder 都可以通过各种接口访问数据库,如 ODBC
32、、JDBC、OLE DB 和各种数据数据库系统及应用习题解答30库专用接口等。6. 试述 PowerBuilder 中事务对象的概念。PowerBuilder 的事务对象是 PowerScript 与数据库的通讯区,只有通过事务对象才能完成对数据库的操作。7. 使用 PowerBuilder 完成 12.3 节中的例子,初步掌握使用 PowerBuilder 进行开发的方法。略8. 试述基于组件的数据库开发的基本思想。克服传统 C/S 结构的明显缺点(缺乏中心控制、缺乏安全性和沉重的客户端负载等) ,以面向对象技术为基础,将业务处理逻辑和规则按完整的逻辑单元进行封装,即将相关的类封装成组件,并
33、使它们部署在应用服务器上,客户端应用程序不再直接和数据库打交道,而是通过部署在服务器上的组件完成数据操作。9. 查阅有关资料,进一步了解和掌握有关组件开发的技术标准。略10. 为什么需要动态 HTML?为什么需要 Web 数据库?在传统的 Web 服务器中,文本和其他多媒体信息都是以文件的形式来进行存储和管理的,随着信息量的不断增加,系统的速度等性能受到越来越大的影响。另一方面,WWW 的应用领域在不断拓展,静态的 Web 页面也越来越不能满足对信息服务的动态性、实时性和交互性的要求。也就是说,用户已经不满足看技术人员事先做好的静态信息,而希望能够根据自己的需要看到最新的信息,这就需要数据库的
34、支持,可以根据检索数据库的结果动态生成网页。所以可以嵌入数据库检索语句并根据检索结果动态生成网页的 HTML 称为动态 HTML,而可以支持动态生成网页的数据库就是 WEB 数据库。11. 试分别叙述 Web 服务器、页面服务器和事务服务器的作用。Web 服务器接收 Web 浏览器发送的页面浏览请求,如果其中嵌入了数据请求则交由页面服务器处理。页面服务器处理负责数据库与 Web 站点的协调和管理,负责解释 Web 页面中的数据请求,并将从数据库中获得的动态数据嵌入到 Web 页面中。事务服务器即应用服务器或组件服务器,当页面中的数据访问需要调用相应的业务处理逻辑时,可能需要事务服务器的支持。12. 试述在 PowerBuilder 中 Web 数据窗口的作用。Web 数据窗口是用于 HTML 的数据窗口,它提供了一种瘦客户端解决方案,可以提供PowerBuilder 数据窗口的大部分数据操作功能,而且不需要在 Web 客户端安装任何