8. 什么是事务的隔离性?如何划分事务的隔离级别? 事务的隔离性是指一个事务应该与其他事务“隔离”,它在完成过程中不受其他事务的影响和干扰。
“隔离”则意味着并发程度的降低。为了既能保证数据的一致性、又尽可能提高系统的并发执行效率,为此将隔离级别划分为如下4个级别: ", 未提交读(READ UNCOMMITTED):事务隔离的最低级别,仅可保证不读取物理损坏的数据,这是4个隔离级别中限制最小的级别。 ", 提交读(READ COMMITTED):可以保证不读取“脏”数据。 ", 可重复读(REPEATABLE READ):可以保证读一致性,避免不一致分析问题。 《数据库系统及应用》习题解答 ·15· ", 可串行化(SERIALIZABLE):事务隔离的最高级别,事务之间完全隔离;如果事务在可串行化隔离级别上运行,则可以保证任何并发重叠事务均是串行的。 9. 试叙述在备份与恢复技术中数据库日志的作用。 日志则是对备份的补充,它可以看作是一个值班日记,它将记录下所有对数据库的更新操作。这样就可以在备份完成时立刻刷新并启用一个数据库日志,数据库日志 是实时的,它将忠实地记录下所有对数据库的更新操作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(恢复大部分数据),然后再运 行数据库日志,即将备份后所做的更新操作再重新做一遍,从而将数据库完全恢复。
10. 试述在SQL Server中利用文件和文件组备份为数据库恢复提供了什么样的便利? 利用文件和文件组进行备份,则当建立数据库的某个物理存储介质出现故障时,可以只恢复发生故障的存储介质上的物理文件或文件组,而不需要恢复整个数据库,这可以大大缩短数据库恢复所需要的时间。
11. 针对不同的故障类型(事务故障和介质故障),试讨论恢复的策略和方法。 略
12. 试讨论备份系统数据库的重要性。
系统数据库(在SQL Server上特别是master数据库)是管理用户数据库的数据库,如果系统数据库一旦损坏,整个系统的使用都将受到影响。所以系统数据库的安全和可靠是用户数据库可以正常使用的基础。 习题九
1. 理解、定义如下术语,并分别给出两个例子:函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、主属性。 略
2. 找出图5-1所示数据库各个关系中的函数依赖。 仓库关系上的函数依赖: 仓库号→城市,仓库号→面积 职工关系上的函数依赖:
职工号→仓库号,职工号→工资 订购单关系上的函数依赖:
订购单号→职工号,订购单号→供应商号,订购单号→订购日期 供应商关系上的函数依赖:
供应商号→供应商名,供应商名→供应商号,供应商号→地址,供应商名→地址 ·16· 《数据库系统及应用》习题解答 3. 试证明如下结论(引理9.1):
X→A1A2…An的充分必要条件是X→Ak成立(k=1,2, …,n)。
证明:略
4. 设有关系模式R(U,F),U={A,B,C,D,E},F={AB→E,DE→B,B→C,C→E,E→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) 求F的所有最小覆盖。 Fm=F-{AB->E}
5. 假设有一个名为参加的关系,该关系有属性:职工(职工名)、工程(工程名)、时数(花费在工程上的小时数)和工资(职工的工资);一个参加记录描述一个职 工花费在一个工程上的总时数和他的工资;另外,一个职工可以参加多个工程,多个职工可以参加同一个工程。请回答如下各问题:
用A、B、C、D分别代表属性职工、工程、时数和工资,则: 1) 确定这个关系的关键字; AB
2) 找出这个关系中的所有函数依赖; AB->C , A->D
3) 指出这个关系上的哪些函数依赖会带来操作异常现象; D对关键字AB的部分函数依赖可能会带来如下问题:
数据冗余:一个职工参加多个工程,则职工的工资值会重复;
更新异常:当改变职工的工资时,可能会只修改了一部分,从而造成数据不一致;
插入异常:当一个职工尚未承担工程,但要插入职工信息(如工资)则不允许(因为没有完整的关键字);
删除异常:当某个工程结束,删除工程信息时,可能会将职工信息(如工资)一同删除(如果职工只参加了一项工程)。 4) 这个关系是第几范式关系? 2NF
5) 计算该关系上函数依赖集的最小覆盖; Fm={AB->C, A->D}
6) 将该关系分解成尽可能高的范式,并指明是第几范式? 《数据库系统及应用》习题解答 ·17· 分解为R1(A,B,C)和R2(A,D) 结果为4NF
6. 一个关系有4个字段A、B、C、D,这里A和B构成复合关键字,问满足下列函数依赖的关系是第几范式?
1) A、B、C、D都函数依赖于AB。 BCNF或4NF
2) A、B、C、D都函数依赖于AB,而D还函数依赖于C。 2NF
3) A、B、C、D都函数依赖于AB,而D还函数依赖于B。
1NF
4) A、B、C、D都函数依赖于AB,而B还函数依赖于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图;
除此之外,为了以后对模式进行规范化,还需要: ", 确定属性间的依赖关系。
而在逻辑设计阶段一般主要工作内容有: ·18· 《数据库系统及应用》习题解答 ", 确定各个关系模式的主关键字,考虑实体完整性; ", 确定各个关系模式的外部关键字,考虑参照完整性; ", 确定各个关系模式中属性的约束、规则和默认值,考虑域完整性; ", 根据用户需求设计视图; ", 考虑安全方案和用户使用权限等。 2. 物理数据库设计主要包括哪些内容?
物理数据库设计的内容是设计数据库的存储结构和物理实现方法。一般包括如下内容: ", 估算数据库的数据存储量; ", 设计数据库设备; ", 安排数据库的存储; ", 设计索引; ", 设计备份策略等。
3. 到Sybase公司的网站()下载PowerDesigner的试用版,实践利用PowerDesigner进行数据库建模的方法和过程。 略
习题十一
1. 面向对象数据库是在什么背景下产生的?为什么需要面向对象数据库?
在信息管理领域之外还有很多新的应用领域迫切需要使用数据库,如计算机辅助设计(CAD)、多媒体技术(音频、视频文件的存储和处理)等,这些应用往往需 要存储大量
的复杂类型的数据,同时面向对象的概念和技术也强烈地引发了数据库对复杂数据类型的支持,从而推动了面向对象数据库的发展。 由于关系数据库不直接支持复杂数据类型,致使一些必须使用复杂数据类型的应用实现起来不是很方便、并且效率较低。另外关系模型也不支持构造类型和继承,这都使得人们希望发展面向对象的数据库。
2. 什么是对象的封装性、继承性和多态性?
封装性是指将类的数据和操作封装在类定义中,对用户来讲类的“功能”是可见的,而实现部分是封装在类定义中的,用户是看不见的。这种封闭性保证了每个对象的实现都独立于其他对象的细节,从而有利于保证软件的质量。
继承性是指可以利用已有的类去定义新的类。如果根据类A定义类B,则说类B继承了类A,同时把类A称作基类,把类B称作子类。子类不仅可以继承基类的所有性质,还可以在子类中定义新的性质。继承性使得基类中的代码可以共享和重用,所以继承性有助于软件可重用性的实现。
《数据库系统及应用》习题解答 ·19·
多态性是指同一个函数可以有多种作用,即: ", 同一个函数根据不同的引用对象可以完成不同的功能; ", 同一个函数即便引用同一个对象,但由于传递的参数不同也可以完成不同的功能。 多态性可以为整个应用和所有对象内部提供一个一致的接口,没有必要为相同的动作命名和编写不同的函数,它完全可以根据引用的对象不同、传递的消息不同来完成不同的功能。这样做也与现实世界中管理和运作方法相吻合。 3. 面向对象数据库的研究方法主要有哪些?
面向对象数据库的研究方法目前主要有以下三种: ", 扩充关系数据模型。将成熟的关系数据库与面向对象数据库方法结合起来,可减少研制工作量、缩短研制周期。这种方法的弱点是不能全面支持面向对象的特征。 ", 在面向对象语言中嵌入数据库功能而形成面向对象数据库。该方法的关键是如何在面向对象语言中增加持久性对象的存储管理。使用此方法受到面向对象语言的一些限制。 ", 开发全新的数据模型,从底层实现面向对象数据库系统。这是最彻底的方法,缺点是难度大,一方面缺乏统一的数据模式及形式化理论,另一方面在查询优化、视图及数据库工具方面仍为空白。
4. 面向对象数据库应该具备哪些基本特征?
一个面向对象数据库系统应该具备如下的基本内容和特征: ", 在数据模型方面支持对象、复合对象、封装、类、继承、重载、滞后联编、多态性等基本概念。其中复合对象的概念包括支持生成复合对象的构造器(元组、集合、包、列表、数组等)。 ", 数据库管理系统除了具有传统的数据库管理系统所具有的功能(如并发控制、故障和恢复)外,还支持永久对象、长事务处理和嵌套事务,具有版本管理和模式演化的能力,能维护数据完整性,适合在分布式环境下工作。 ", 数据库访问界面要支持消息传递,提供计算能力完备的数据库程序设计语言,能解决数据库语言与宿主语言的某些不匹配问题,提供类似SQL的非过程化查询功能。 5. SQL99支持ORDBMS、还是OODBMS? SQL99支持的是ORDBMS。
6. 比较RDBMS、ORDBMS和OODBMS,然后分别描述一个适合使用RDBMS、ORDBMS和OODBMS的应用,并说明原因。 略
习题十二
1. 解释ODBC的概念。 ·20· 《数据库系统及应用》习题解答
ODBC(Open DataBase Connectivity)的全称是开放数据库互连,它是一种访问数据库的统一界面标准。
2. 应用程序是如何通过ODBC访问数据库的?
应用程序通过调用ODBC函数可以完成对数据库的访问操作,它所执行的任务或完成的工作包括:请求对数据源的连接,获取连接句柄;指定事务控制方式;定义 接收结果的数据区;向数据源发送SQL语句;接收SQL的查询结果;处理出错信息,并将出错信息返回给应用程序;终止对数据源的连接。
3. 设有基于SQL Server的pubs数据源,它对应于pubs数据库,写出利用Visual FoxPro访问或操作SQL Server的如下语句: 1) 连接到pubs数据库;
gn=SQLCONNECT(\2) 查询employee表的全部信息;
=SQLEXEC(gn,\
3) 为publishers表准备一个带参数的查询,可以指定pub_name(出版社名)进行查询; =SQLPREPARE(gn,\4) 以前一小题为基础,查询“Five Lakes Publishing”出版社的信息; m_p_name=\=SQLEXEC(gn)
5) 从sales表中删除stor_id为6380的记录。
=SQLEXEC(gn,\4. PowerBuilder是个什么类型的软件产品?
PowerBuilder是一个面向对象的数据库应用系统开发工具。 5. PowerBuilder都可以通过哪些方式访问数据库?
PowerBuilder都可以通过各种接口访问数据库,如ODBC、JDBC、OLE DB和各种数据库专用接口等。
6. 试述PowerBuilder中事务对象的概念。
PowerBuilder的事务对象是PowerScript与数据库的通讯区,只有通过事务对象才能完成对数据库的操作。
7. 使用PowerBuilder完成12.3节中的例子,初步掌握使用PowerBuilder进行开发的方法。 略
8. 试述基于组件的数据库开发的基本思想。 《数据库系统及应用》习题解答 ·21·
克服传统C/S结构的明显缺点(缺乏中心控制、缺乏安全性和沉重的客户端负载等),以面向对象技术为基础,将业务处理逻辑和规则按完整的逻辑单元进行封 装,即将相关的类封装成组件,并使它们部署在应用服务器上,客户端应用程序不再直接和数据库打交道,而是通过部署在服务器上的组件完成数据操作。
9. 查阅有关资料,进一步了解和掌握有关组件开发的技术标准。 略
10. 为什么需要动态HTML?为什么需要Web数据库?
在传统的Web服务器中,文本和其他多媒体信息都是以文件的形式来进行存储和管理的,随着信息量的不断增加,系统的速度等性能受到越来越大的影响。另一方 面,WWW的应