数据库系统原理04735课后习题参考答案

数据库系统原理04735课后习题答

第一章. 数据库系统基本概念

1.1. 名词解释

DB ——DB 是长期存储在计算机内、有组织的、统一管理的相关数据的集合。DB 能为各种用户共享,具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。 DBMS ——是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问DB 的方法,包括DB 的建立、查询、更新及各种数据控制。

DBS ——是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。

联系——是实体间的相互关系。

联系的元数——与一个联系有关的实体集个数。

1:1联系——如果实体集E1中每个实体至多和实体集E2中一个实体有联系,反之亦然,那么实体集E1和E2的联系称为“一对一联系”,记为“1:1”。

1:N 联系——如果实体集E1中的每个实体可以与实体集E2中的任意个(0个或多个)实体有联系,而E2中的每个实体至多和E1中的一个实体有联系,那么称E1对E2的联系是一对多联系,记作:“1:N ”。

M :N 联系——如果实体集E 1中的每个实体可以与实体集E2中的任意个(0个或多个)实体有联系,反之亦然,那么称E1和E2的联系是“多对多联系”,记作“M :N ”。 数据模型——在数据库技术中,我们用数据模型的概念描述数据库的结构和语义,对现实世界的数据进行抽象。根据数据抽象级别定义了四种模型:概念数据模型、逻辑数据模型、外部数据模型和内部数据模型。

概念模型——表达用户需求观点的数据全局逻辑结构的模型。

逻辑模型——表达计算机实现观点的DB 全局逻辑结构的模型。主要有层次、网状、关系模型等三种。

外部模型——表达用户使用观点的DB 局部逻辑结构的模型。

内部模型——表达DB 物理结构的模型。

层次模型——用树型(层次)结构表示实体类型及实体间联系的数据模型。 网状模型——用有向图结构表示实体类型及实体间联系的数据模型。

关系模型——是由若干个关系模式组成的集合。关系模式相当于记录类型,它的实例是关系,每个关系实际上是一张二维表格。

外模式——用户与数据库系统的接口,是用户用到的那部分数据的描述。外模式由若干个外部记录类型组成。

逻辑模式——是数据库中全部数据的整体逻辑结构的描述。它由若干个逻辑记录类型组成,还包含记录间联系、数据的完整性、安全性等要求。

内模式——是数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件的组织形式,以及数据控制方面的细节。

外模式/逻辑模式映像——存在于外模式和逻辑模式之间,用于定义外模式和逻辑模式之间的对应性,一般放在外模式中描述。

逻辑模式/内模式映像——存在于逻辑模式和内模式之间,用于定义逻辑模式和内模式之间的对应性,一般放在内模式中描述。

数据独立性——是指应用程序和数据库的数据结构之间相互独立,不受影响。在修改数据结构时,尽可能不修改应用程序。分物理数据独立性和逻辑数据独立性两个级别。

物理数据独立性——对内模式修改时,对逻辑模式/内模式像作相应修改,可以尽量不影响

逻辑模式。

逻辑数据独立性——逻辑模式修改时,对外模式/逻辑模式映像作相应修改,可以使外模式和应用程序保持不变。

主语言——在数据库技术中,用于编写应用程序的高级程序设计语言。

DDL ——数据定义语言。DBMS 提供DDL 定义数据库的三级结构、两级映像,定义数据的完整性约束、保密限制等约束。

DML ——数据操纵语言。DBMS 提供DML 实现对数据的操作。基本的数据操作有两类:检索(查询)、更新(插入、删除、修改)。分为过程性DML 和非过程DML 两种。

过程性DML ——是指用户编程时,不仅需要指出“做什么”(需要什么样的数据),还需要指出“怎么做”(怎样获得这些数据)。如层次、网状的DML 。

非过程性DML ——用户编程时,只需要指出“做什么”,不需要提出“怎么做”。如关系型DML 。

DD ——数据库系统中存放三级结构定义的数据库。它还存放数据库运行时的统计信息。 DD 系统——管理DD 的子系统。

1.2. 人工管理阶段的数据管理有哪些特点?

1) 数据不保存在计算机里

2) 没有专门的软件进行对数据库管理

3) 只有程序概念,没有文件概念

4) 数据面向程序

1.3. 文件系统阶段的数据管理有哪些特点?

1) 数据以文件形式长期存储在外部存储器的磁盘上

2) 数据的逻辑结构和物理结构有了区别,但比较简单

3) 文件组织多样化,有了索引文件、链接文件和直接存取文件等

4) 数据不再属于某个特定程序,可重复使用,即数据面向应用

5) 对数据的操作以记录为单位

1.4. 文件系统阶段的数据管理有哪些缺陷?请举例说明?

1) 数据冗余、数据不一致、数据联系弱

2) 比如建立了职工档案、职工工资和职工保健三个文件,职工的电话在三个文件

中重复出现,即数据冗余。

1.5. 数据管理的数据库阶段产生的标志是哪三件事情?

1) 1968年IBM 公司推出层次模型IMS 系统

2) 1969年美国CO DASYL组织发布了DBTG报告

3) 1970年IBM 公司的E .F.Codd连续发表论文,提出关系模型

1.6. 数据库阶段的数据管理有哪些特色?

1) 采用了数据模型表示复杂的数据结构

2) 有较高的数据独立性

3) 数据库系统提供了方便的用户接口

4) 数据库系统提供了四个方面的数据控制功能:数据库的恢复、数据的并发控制、

数据的完整性、数据完全性。

5) 增加了系统的灵活性:对数据的操作不一定以记录为单位,可以以数据项为单

位。

1.7. 高级数据库阶段有哪些技术?

面向对象的概念建模、开放数据库互联技术

1.8. 逻辑记录与物理记录,逻辑文件与物理文件有哪些联系和区别?

数据描述有两种形式:物理数据描述和逻辑物理描述。

物理数据描述是指数据在存储设备上的描述,物理数据是存储在物理设备上的数据,物理记录和物理文件都是用来描述存储数据的细节。

逻辑数据描述是用户或程序员以操作的数据形式的描述,逻辑记录和逻辑文件都是用户观点的数据描述。

1.9. 数据抽象过程有哪些步骤?

1) 根据用户的需求,设计数据的概念模型。

2) 根据转换原则,把概念模式转换成逻辑模型。

3) 根据用户的业务特点,设计不同的外部模型,供程序员使用。

4) 根据逻辑模型设计内部模型,实现数据库。

1.10. 概念模型、逻辑模型、外部模型、内部模型各具有哪些特点?

概念模型:

表达了数据的整体逻辑结构,它是系统用户对整个应用程序涉及数据的全面描述。从用户的需求的观点,对数据建模。独立于硬件和软件。它是数据库设计人员和用户之间的交流工具。

逻辑模型:

表达了数据库的整体逻辑结构,它是设计人员对整个应用程序系统项目数据库的全面描述。从数据库实现的观点,对数据建模。独立于硬件,但依赖软件DBMS 。它是数据库设计人员和应用程序员的交流工具。

外部模型:

逻辑模型的一个逻辑子集,独立于硬件,但依赖软件,反映了用户使用数据库的观点。

内部模型:

是数据库最底层抽象, 它描述数据在外存上存储方式、存储设备和存储方法。与硬件和软件关系密切。

1.11. 试叙述层次、网状和关系三种逻辑模型的区别

层次模型:用树型结构表示,较复杂,表示1:N ,记录间联系用指针实现,过程性DML ;

网状模型:用向图结构表示,较复杂,表示1:N/M:N,记录间联系用指针实现,过程性DML ;

关系模型:用关系模式集合表示,较简单,表示1:N/M:N,记录间联系用关键码实现,非过程性DML ;

1.12. 外部模型使数据库系统有哪些优点?

简化了用户观点;

有助于数据库的安全保护;

外部模型是对概念模型的支持 ;

1.13. 数据独立性和数据联系这两个概念有什么区别?

数据独立性是指应用程序和数据之间相互独立,不受影响。

数据联系是指同一记录内部各字段间的联系,以及和记录之间的联系。

1.14. 试叙述用户、DB 的三级模式结构、磁盘上的物理文件之间有些什么联系和不同?

在用户到数据库之间,DB 的数据结构有三个层次:外部模型、逻辑模型、内部模型。这三个层次要用DB 的数据定义语言定义后的内容是外模式、逻辑模式、内模式。

用户使用DB 的数据操纵语句实际上是对外模式的外部记录进行操作,而不是数据

库的内部记录值;逻辑模式提供了连接内外模式的中间观点,使得两级中任何一级的改变都不受另一级的牵制,逻辑模式不涉及到存储结构、访问技术等细节。内模式并不涉及物理设备的约束,那一部分由操作系统完成。如磁盘读写数据的操作。

1.15. 试述DBMS 的工作模式和主要功能。

DBMS 的工作模式:

1) 接受应用程序的数据请求和处理请求

2) 将用户的数据请求转换成复杂的机器代码

3) 实现对数据库的操作

4) 从对数据库的操作中接受查询结果

5) 对查询结果进行处理

6) 将处理结果返回用户

DBMS 主要功能:

数据库的定义功能

数据库的操纵功能

数据库的保护功能

数据库的维护功能

数据字典

1.16. 什么是DB 的系统缓冲区?其作用是什么?

DBMS 为应用程序在内存中开辟的一个DB 的系统缓冲区。用于数据的传输和格式的转换。

1.17. DBS 由哪几部分组成?它有哪些系统软件?其中DD 有什么作用?

DBS 由DB 、硬件、软件、DBA 组成

它有DBM 、OS 、各种主语言和应用开发软件等系统软件

DD 是用来存放三级数据结构定义的数据库,用来存储数据运行时的统计信息。

1.18. 什么是DBA ?DBA 应具有什么素质?DBA 的职责是什么?

DBA 是控制数据整体结构的一组人员,负责DBS 的正常运行,承担创建、监控和维护数据库结构的责任。

DBA 需具有下来素质:

熟悉全部数据的性质和用途、对所有用户需求的了解、对系统性能的熟悉度、兼有系统分析员和运筹学专家的知识和品质。

DBA 的职责:

定义模式、定义内模式、与用户的联络、定义安全性规则,对用户访问数据库授权、定义完整性规则,监督数据库的运行、数据库的转储和恢复工作。

1.19. 试对DBS 的全局结构作详细解释。

用户、DBMS (查询处理器、存储管理器)、磁盘存储器

1.20. 从模块结构观察,DBMS 由哪些部分组成?

查询处理器、存储管理器

1.21. 使用DBS 的用户有哪几类?

DBA 、专业用户、程序员、终端用户

1.22. DBMS 的查询处理器和存储管理器分别由哪几部分组成?

查询处理器:DDL 解释器、DML 编译器、嵌入式DML 预编译器、查询求值引擎

存储管理器:权限和完整性管理器、事务管理器、文件管理器、缓冲区管理器

1.23. 磁盘存储器中有哪五类主要的数据结构?

1) 数据文件:存储数据库管理的用户数据自身。

2) 数据字典:存储三级结构的描述。

3) 索引:为提高查询速度而设置的逻辑排序手段。

4) 统计数据:存储DBS 运行时统计分析的数据。

5) 日志:存储DBS 运行时对DB 的操作情况。

1.24. DBS 能产生哪些效益?

灵活性、简易性、面向用户、加快应用程序的开发速度、维护方便、标准化

第二章. 数据库设计和ER 模型

2.1 名词解释

数据库工程——数据库应用系统的开发是一项软件工程,但又有自己的特点。

数据库系统生存期——数据库应用系统从规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间。

实体——是一个数据对象,指应用中可以区别的客观存在的事物。

实体集——同一类实体构成的集合。

实体类型——是对实体集中实体的定义。

实体标识符——在一个实体中,能够唯一标识实体的属性或属性集合。

联系——表示一个或多个实体间的关联关系。

联系集——同一类联系构成的集合。

联系类型——对联系集中联系的定义。

属性——实体的某一特性。

简单属性——不可再分隔的属性。

复合属性——可再分解为其它属性的属性。

单值属性——同一实体的属性只能取一个值。

多值属性——同一实体的属性可能取多个值。

存储属性——需要把属性值存入数据库的属性。

派生属性——不需要把属性值存入数据库,属性值可以从其它属性值推导出的属性。 联系元数(度数)——指一个联系涉及的实体集个数。

映射基数——实体集E1和E2之间有二元联系,则参与一个联系中的实体的个数称为映射基数。

完全参与——如果实体集中的每个实体都参与联系集R 的至少一个联系中,称实体集E 完全参与。

部分参与——如果实体集中的只有部分实体参与联系集R 的联系中,称实体集E 部分参与。 关系模型——用二维表格表示实体集,用关键码表示实体间的联系的数据模型。 关系模式——关系模型中的记录类型。

关系实例——是一个属性集相同的元组的集合。

(关系)属性——关系模型中的字段。

(关系)域——关系模型中字段的取值范围。

(关系)元组——关系模型中的记录。

超键——在关系中能唯一标识元组的属性集,称为关系模式的超键。

候选键——不含有多余属性的超键。

主键——用户选作元组标识的候选键。

外键——如果模式R 中的属性K 是其它模式的主键,则K 在模式R 中称为外键。

实体完整性规则——要求关系中元组在组成主键的属性上不能有空值,否则就起不到唯一标识元组的作用了。

参照完整性规则——如果属性集K 是关系模式R1的主键,同时也是关系模式R2的外键,那么在R2中,K 的取值只允许有两种可能,或者为空值,或者等于R1关系中的某个主键值。

弱实体——如一个实体对另一个实体(强实体)具有很强的依赖联系,而且该实体主键的一部分或全部从其强实体中获得,则该实体为弱实体。

子类实体——当较低层次上的实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较低层次上的实体类型为子类实体。

超类实体——当较低层次上的实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较低层次上的实体类型为子类实体。

2.2 数据库设计的规划阶段应做哪些事情?

1) 系统调查。画出应用单位组织结构图。

2) 可行性分析。从技术、经济、效益、法律等各方面可行性进行分析,写出可行

性分析报告,组织专家讨论。

3) 确定数据库系统的总目标,对应用单位的工作流程进行优化,制订项目开发计

划。

获得决策部门批准后,正式进入数据库系统开发。

2.3 数据库设计的需求分析阶段工作主要由哪四步组成?

1) 分析用户活动,产生业务流程图

2) 确定系统范围,产生系统关联图

3) 分析业务活动所涉及的数据,产生数据流图

4) 分析系统数据,产生数据字典

2.4 在数据库设计中,为什么要有概念设计这一阶段?

使设计人员从用户的观点看待数据和处理需求、约束,产生反映用户观点的概念模型。将概念模设计从设计过程中独立开来,可以使数据库设计各阶段任务单一化,减少复杂度,便于组织管理,能较好地适应各种变化,转换成关系模式。

2.5 试述概念设计的主要步骤?

1) 进行数据抽象(聚集和概括方法),设计局部概念模型

2) 将局部概念模型综合成全局概念模型(消除冲突)

3) 评审(用户、DBA 和开发人员评审)

2.6 逻辑设计的目的是什么?试述逻辑设计阶段主要步骤及内容

逻辑设计的目的是将概念模型转换成与所选用的具体机器上所支持的数据模型相符合的逻辑模型。

逻辑设计阶段主要步骤:

1) 将概念模型转换成逻辑模型

2) 设计外模式

3) 设计应用程序和数据库接口

4) 评价模型(定量分析:处理频率、数据容量、性能测量)

5) 修正模型

2.7 什么是数据库结构的物理设计?试述其具体步骤。

物理设计是对于给定的基本数据模型选取一个最适合应用环境的物理结构的过程。数据库的物理结构主要指数据库存储记录格式、存储记录安排、存取方法。

具体步骤:

1) 存储记录结构设计:包括记录的组成、数据项的类型、长度,以及逻辑记录到

存储记录的映射。

2) 确定数据存放位置:可以把经常同时访问的数据组合在一起。

3) 存取方法设计:存取路径分为主存取路径与辅存取路径,前者用于主键检索,

后者用于辅助键检索。

4) 安全性和完整性考虑。

5) 程序设计。

2.8 数据库实现阶段主要有哪几件事情?

1) 定义数据结构

2) 数据装载:人工(刷选数据、转换数据格式、输入数据、校验数据)和计算机

装载(筛选数据、输入数据、效验数据、转换数据、综合数据)

3) 编制和调试应用程序

4) 数据库试运行。

2.9 数据库系统投入运行后,有哪些维护工作?

1) 数据库的转储和恢复。

2) 数据库的安全性、完整性控制。

3) 数据库性能的监督、分析、改进。

4) 数据库的重组织和重构造。

2.10 在概念设计中,如何把多值属性变换成系统容易实现的形式?

将原来的多值属性用几个新的单值属性表示。

将原来的多值属性用一个新的实体类型表示。

2.11 对联系类型有哪两种约束?试详细解释?

联系类型的约束限制了参与联系的实体数目,有技术约束和参数约束。

技术约束表示了一个联系的实体的个数约束, 通过映射基数来表达,有1:1,

1:N,M:N,M:1四种。

参与约束表示了实体集中是部分实体还是全部实体参与联系集中的联系。有部分参与和完全参与两种。

2.12 采用ER 模型的数据库概念设计有哪些主要的步骤?

1) 设计局部ER 模型(确定局部结构范围、定义实体、定义联系、分配属性)

2) 设计全局ER 模型(确定公共实体类型、合并局部ER 模型、消除冲突)

3) 全局ER 模型优化(合并实体类型、消除冗余属性、消除冗余联系)

2.13 在关系模型中,关系具有哪些性质

1) 关系中的每个属性值都是不可分解的。

2) 关系中不允许出现重复组。

3) 由于关系是一个集合,因此不考虑元祖间的顺序,即没有行序。

4) 元祖的属性在理论上也是无序的,但使用时按习惯考虑列的顺序。

2.14 为什么关系中的元组没有先后顺序?且不允许有重复的元组?

因为关系是一个元祖的集合,而元祖在集合中的顺序无关紧要,即没有行序。

集合中的元素不允许重复出现,因此关系中的元组不能重复,可以用键来标识唯一的元组。

2.15 参照完整性规则使用时,有哪些变通?试举例说明。

1) 外键和相应的主键可以不同名,只要定义在相同的值域上即可。

2) R1和R2可以是同一个关系模式,此时表示同一个关系中不同元组间的联系。

3) 外键值是否允许为空,视具体情况而定。

2.16

商品(商品编号,商品名,规格,价格)

职工(职工号,职工名,性别,业绩,商店编号)

2.17 略

2.18 略

2.19 ER 图转换成关系模式集的具体思想是什么?

1) 实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性即为关系

模式的属性,实体标示符即为关系模式的键。

2) 联系类型的转换:

二元联系类型的转换:

a) 如果实体间联系是1:1:1,在任意一个实体模型中加入另两个实体的主键

作为外键。

b) 如果实体间联系是1:1:N,在多方实体模式中加入两个1方的主键作为外

键。

c) 如果实体间联系是1:M:N,把联系类型转换为关系模式,其属性为M 和N

方实体类型的键(作为外键) 加上联系类型的属性,而主键为M 和N 方主键

的组合。

d) 如果实体间联系是M:N:P, 其属性为三方实体类型的键(作为外键) 加上

联系类型的属性,而主键为三方主键的组合。

2.20 采用ER 模型的数据库逻辑设计有哪些步骤?

导出初始化关系模式集、规范化处理、模式评价、模式修正、设计子模式。

2.21 略

2.22 图略

仓库(仓库号,仓库名,地址,负责人)

业务员(业务员编号,姓名,性别)

商店(店号,店面,地址)

商品(品号,品名,价格,规格)

收银员(工号,姓名,性别,年龄,店号)

供应(供应单号,仓库号,店号,经手人) 进货(进货单号,商品号,业务员编号)

2.23 略

2.24 图略 行车人员(驾驶执照号,姓名,地址,电话,邮编) 车辆(机动车牌照号,型号,生产日期,制造厂) 处罚方法(处罚编号,警告,处罚,暂扣驾驶执照) 违章(违章编号,驾驶执照号,机动车牌照号,处罚编号)

第三章. 关系模式设计理论

3.1. 函数依赖——设有关系模式R (U ),X ,Y 是属性集U 的子集,只要r 是R 有当前

关系,对r 中的任意两个元组t 和s ,都有t[X]=s[X]蕴含t[Y]=s[Y],那么就称函数依赖(FD )X →Y 在关系模式R (U )中成立。

平凡的函数依赖——对于FD X→Y ,如果Y ∈X ,那么该FD 就是平凡的FD 。

函数依赖集F 的闭包F+——设F 为函数依赖集,被F 逻辑蕴涵的函数依赖全体构成的集合。 属性集X 的闭包X+——设F 是属性集U 上的FD 集,X 是U 的子集,那么属性集X 的闭包是一个从F 集使用FD 推理规则推出的所有满足X →A 的属性A 的集合。

函数依赖的逻辑蕴涵——设F 是关系模式R 上成立的函数依赖集合,X →Y 是一个FD ,如果对于R 的每一个满足F 的关系r 也满足X →Y ,那么称F 逻辑蕴涵X →Y 。

函数依赖集的等价——如果关系模式R (U )上的两个函数依赖集F 和G ,有F+=G+,则称F 和G 是等价的函数依赖集。

最小依赖集——满足下面三个条件的函数依赖集G :

G 中每个FD 的右边都是单属性;

G 中没有冗余的FD 。即G 中不存在这样的函数依赖X →Y ,使得G -{X→Y}与G 等价; G 中每个FD 的左边没有冗余的属性。即G 中不存在这样的函数依赖X →Y ,X 有一个真子集W ,使得G -{X→Y}U{W→Y}与G 等价。

无损分解——设R 是一个关系模式,F 是R 上的一个FD 集,R 分解成数据库模式。如果对R 中满足F 的每一个关系r ,都有r 在数据库中的各关系模式Ri 上投影连接后仍为r ,则称该数据库模式相对于F 是无损分解的。

泛关系假设——在定义无损分解时,先假设存在泛关系r 的情况下,再去谈论分解。 Chase 过程——P79。

保持函数依赖——P80。

1NF ——关系模式的每一个关系的属性值都是不可分的原子值。

2NF ——关系模式是1NF ,且每一个非主属性都完全函数依赖于候选键。

3NF ——关系模式是1NF ,且每一个非主属性都不传递依赖于候选键。

BCNF ——关系模式是1NF ,且每一个属性都不传递依赖于候选键。

MVD ——P88。

平凡的MVD ——对于属性集U 上的MVD X →→Y ,如果Y ∈X 或XY =U 。则此MVD 是平凡的MVD 。

4NF ——设D 是关系模式R 上成立的FD 和MVD 的集合。如果D 中每个非平凡的MVD X→→Y 的左部都是R 的超键。

3.2. 试解释下面两个“数据冗余”的概念:

文件系统中不可避免的“数据冗余”

关系数据库设计中应尽量避免的“数据冗余”

文件系统中的“数据冗余”:由于在文件之间缺乏联系,造成每个应用程序都有相应的文件,有可能同样的数据在不同文件中重复存储。

关系数据库设计中的“数据冗余”:数据库某一关系中多个元组大量重复存储同样的属性。

3.3. 关系模式的非形式化设计准则有哪几条?这些准则对数据库设计有什么帮助?

1) 尽可能指包含直接联系的属性,不要包含间接联系的属性。

2) 尽可能使得相应关系中不出现插入、删除、修改异常现象。

3) 尽可能使得相应关系中避免放置经常为空值的属性。

4) 尽可能使得关系的等值连接在主键和外键的属性上进行,并保证以后不会产生

额外的元组。

3.4. 对函数依赖X →Y 的定义加以扩充,X 和Y 可以为空属性集,用φ表示, 那么X →

φ,φ→Y ,φ→φ的含义是什么?

1) 一个关系模式R(U)中,X ,Y 是U 的子集,r 是R 的任一具体关系,如果对r

的任意两个元组t1,t2, 由t1[X]=t2[X]必有t1[φ]=t2[φ]。即X →φ表示空属性函数依赖于X 。这是任何关系中都存在的。

2) ) φ→Y 表示Y 函数依赖于空属性。由此可知该关系中所有元组中Y 属性的值

均相同。

3) φ→φ表示空属性函数依赖于空属性。这也是任何关系中都存在的。

+3.7已知关系模式R(ABC),F={A→B ,B →C},求F 。(有43个FD)

+F ={φ→φ,A →φ,B →φ,C →φ,A →B ,B →C ,A →C,AB →φ,AB →A ,AB →B ,AB →C ,AB →BC ,AB →AB ,AB →ABC ,BC →φ,BC →C ,BC →B ,BC →BC ,AC →φ,AC →C ,AC →A ,AC →AC ,ABC →φ,ABC →A ,ABC →B ,ABC →C ,ABC →BC ,ABC →AB ,ABC →ABC}

3.16什么是寄生元组?什么是悬挂元组?各是怎么产生的?

在泛关系模式分解成数据库模式时,泛关系r 在数据库模式中的每一个模式上投影再连接起来,比原关系r 多出来的元组是寄生元组。

在无泛关系模式下,对两个关系进行自然连接中被丢失的元组,被称为悬挂元组。

3.18试解释数据库“丢失信息”与“未丢失信息”两个概念。有什么区别?

分解后是否表示一样的信息,如不一样就是丢失信息,否则就是未丢失信息。 后面题目省略

第四章. 关系运算

4.1. 无限关系——无组数量无限多的关系。

无穷验证——验证一个公式时,必须对关系中所有元组进行验证。

4.10教师关系T (T#,TNAME ,TITLE )

课程关系C (C#,CNAME ,T#)

学生关系S (S#,SNAME ,AGE ,SEX )

选课关系SC (S#,C#,SCORE )

1) 检索年龄小于17岁的女学生的学号和姓名。

πS#,SNAME(σage

2) 检索男学生所学课程的课程号和成绩

πC#,score(σsex=’男’∧σS.S#=SC.S#(SCC)) 3) 检索男学生所学课程的任课教师的工号和姓名

πt#,tname(σsex=’男’ (SSC C T)) 4) 检索至少选修两门课的学生学号

π1(σ1=4∧2!=5(SC×SC))

5) 检索至少有学号为S2和S4学生选修的课程的课程号

Π2(σ2!=5∧1=’’S2 ∧4=’S4’(SC×SC)) 6) 检索wang 同学不学的课程号

Πc#(C)- Πc# (σsname =’wang ’(SSC))

7) 检索全部学生都选修的课程的课程号和课程名

Πc#,cname(C(Πc#,s#(SC) ÷ Πs#(S)))

8) 检索选修课程包含liu 老师所授全部课程的学生学号

Πs# (σtname=’liu ’(SCC T))

4.13为什么要对关系代数表达式进行优化?

对于等价的关系表达式,因表达式中安排选择、投影、连接的顺序不同而执行效率也不一样。

4.14有哪三条启发式规则?对优化起什么作用

尽可能早地执行选择操作 尽可能早地执行投影操作 避免直接做笛卡尔积

作用:合理安排操作顺序,节省时间和空间

第五章. SQL语言

5.1. 基本表——是实际存储在数据库中的表。 视图——是由若干基本表和视图构成的表的定义。 实表——是对基本表的别称。(略)。 虚表——在创建一个视图时,只是把视图的定义存储在数据字典中,而不存储视图定义的数据,在用户使用视图时才去求对应的数据。因此,视图被称为“虚表”。

相关子查询——SELECT 语句嵌套时,子查询中查询条件依赖于外层查询中的值,因此子查询要反复求值供外层查询使用。这种子查询称为相关子查询。

连接查询——查询时要从多个基本表中提取数据,此时把多个基本表写在同一层的FROM 子句中,这种查询形式称为联接查询。

嵌套查询——查询时要从多个基本表中提取数据,此时把多个基本表分别放在不同层次上的FROM 子句中,这种查询形式称为嵌套查询。 导出表——是执行了查询时产生的表。

临时视图——SQL3允许用户用WITH 子句定义一个临时视图(即子查询),置于SELECT 语句的开始处。临时视图本身是用SELECT 语句定义的。

交互式SQL ——SQL 语言在终端交互方式下使用,称为交互式SQL 。 嵌入式SQL ——SQL 语言在语言的程序中使用,称为嵌入式SQL 。 游标——是一个与某一查询结果相联系的符号名,是一个指针。

卷游标——可推进也可后退的游标。

5.2 试叙述SELECT 语句的关系代数特点和元组演算特点。

SELECT 语句中出现的基本表名,都应该理解成基本表中的元组变量,而列名应理解成元组分量,这样SQL 就具有了元组演算的特点。 5.3设教学数据库中有四个关系:

教师关系T (t#,tname ,title ) 课程关系C (c#,cname ,t#)

学生关系S (s#,sname ,age ,sex ) 选课关系SC(s#,c#,score )

试用SQL 的查询语句表示下列查询:

(1)检索年龄小于17岁的女学生的学号和姓名。

select s#,sname from S where age

select c#,score from S,SC where S.s#=SC.s# and sex=’男’

(3)检索男学生所学课程的任课教师的工号和姓名。

select t#,tname from S,SC,C,T where S.s#=SC.s# and SC.c#=C.c# and C.t#=T.t# and sex=’男’ (4)检索至少选修两门课的学生学号。

select s# from SC group by s# having count(*)>2

(5)检索至少有学号为S2和S4学生选修的课程的课程号。

select c# from SC,S where S.s#=SC.s# and S.s#=’S2’or S.s#=’S4’

(6)检索wang 同学不学的课程号。

(7)检索全部学生都选修的课程的课程号和课程名。

(8)检索选修课程包含liu 老师所授全部课程的学生学号。

5.4设教学数据库中有四个关系: 教师关系T (t#,tname ,title ) 课程关系C (c#,cname ,t#)

学生关系S (s#,sname ,age ,sex ) 选课关系SC(s#,c#,score )

试用SQL 的查询语句表示下列查询: (1)统计有学生选修的课程门数。 SELECT COUNT(DISTINCT C#) FROM SC

(2)求选修C4课程的女学生的平均年龄。 SELECT AVG(AGE) FROM S,SC

WHERE S.S#=SC.S# AND C#='004'AND SEX=’F ’ ; 或者,SELECT AVG(AGE)

FROM S

WHERE SEX=’F ’ AND S# IN (SELECT S# FROM SC

WHERE C#='C4') ;

(3)求LIU 老师所授课程的每门课程的学生平均成绩。 SELECT CNAME,AVG(SCORE) FROM T,C,SC

WHERE T.T#=C.T# AND SC.C#=C.C# AND TNAME='LIU' GROUP BY C# ;

(4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列。 SELECT DISTINCT C#,COUNT(S#) FROM SC GROUP BY C#

HAVING COUNT(S#)>10 ORDER BY 2 DESC, C# ASC

(5)检索学号比WANG 同学大,而年龄比他小的学生姓名。 SELECT X.SNAME

FROM S AS X, S AS Y

WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE

WHERE SCORE IS NULL

(6)检索姓名以L 打头的所有学生的姓名和年龄。 SELECT SNAME,AGE FROM S

WHERE SNAME LIKE 'L%'

(8)年龄大于女同学平均年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X

WHERE X.SEX='男' AND X.AGE>(SELECT AVG(AGE) FROM S AS Y

WHERE Y.SEX='女') ;

(9)求年龄大于所有女同学年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X

WHERE X.SEX='男' AND X.AGE>ALL (SELECT AGE FROM S AS Y

WHERE Y.SEX='女')

5.5对于下面的关系R 和S ,试求出下列各种联接操作的执行结果:

① R NATURAL INNER JOIN S

① ④

② R NATURAL RIGHT OUTER JOIN S ③ R RIGHT OUTER JOIN S USING(C ) ④ R INNER JOIN S

⑤ R FULL OUTER JOIN S ON false

解:

A B C D ② A B C D ③ A R.B C S.B D

b 1 a 1 b 1 c 1 d 1 a 1 b 1 c 1 d 1 a 1 b 1 c 1 d 1 b 2 a 2 b 2 c 2 d 2 a 2 b 2 c 2 d 2 a 2 b 2 c 2 d 2 b 4 null b 4 c 4 d 4 null null c 4 d 4

A R.B R.C S.B S.C D ⑤ A R.B R.C S.B S.C D a 1 b 1 c 1 b 1 c 1 d 1 a 1 b 1 c 1 null null null a 1 b 1 c 1 b 2 c 2 d 2 a 2 b 2 c 2 null null null a 1 b 1 c 1 b 4 c 4 d 4 a 3 b 3 c 3 null null null

c 1 a 2 b 2 c 2 b 1 c 1 d 1 null null null b 1 d 1 c 2 a 2 b 2 c 2 b 2 c 2 d 2 null null null b 2 d 2 c 4 a 2 b 2 c 2 b 4 c 4 d 4 null null null b 4 d 4 a 3 b 3 c 3 b 1 c 1 d 1 a 3 b 3 c 3 b 2 c 2 d 2 a 3 b 3 c 3 b 4 c 4 d 4

5.6试用SQL 更新语句表达对5.3题教学数据库中关系S 、SC 、C 的更新操作:

① 往关系C 中插一个课程元组(' C8' ,' VC++' ,' BAO ' )。

② 检索所授每门课程平均成绩均大于80分的教师姓名,并把检索到的值送往另一个已存在的表FACULTY (TNAME )。 ③ 在SC 中删除尚无成绩的选课元组。

④ 把选修LIU 老师课程的女同学选课元组全部删去。 ⑤ 把MATHS 课不及格的成绩全改为60分。

⑥ 把低于所有课程总平均成绩的女同学成绩提高5%。

⑦ 在表SC 中修改C4课程的成绩,若成绩小于等于70分时提高5%,若成绩大于70 分时提高4%(用两种方法实现,一种方法是用两个UPDATE 语句实现,另一种方法是用带CASE 操作的一个UPDATE 语句实现)。 ⑧ 在表SC 中,当某个成绩低于全部课程的平均成绩时,提高5%。 解:① INSERT INTO C

VALUES(' C8' ,' VC++' ,' BAO ' ) ;

② INSERT INTO FACULTY(TNAME)

SELECT DISTINCT TEACHER

FROM (SELECT TEACHER, C.C#, AVG(GRADE)

FROM S, SC

WHERE SC.C#=C.C#

GROUP BY TEACHER, C.C#)

AS RESULT(TEACHER, C#, AVG_GRADE) AS X WHERE 80

FROM RESULT AS Y

WHERE Y.TEACHER=X.TEACHER);

③ DELETE FROM SC

WHERE GRADE IS NULL; ④ DELETE FROM SC

WHERE S# IN(SELECT S# FROM S WHERE SEX=' F ')

AND C# IN(SELECT C# FROM C WHERE TEACHER=' LIU ' ) ;

⑤ UPDATE SC

SET GRADE=60 WHERE GRADE

AND C# IN(SELECT C# FROM C WHERE CNAME=' MATHS ') ;

⑥ UPDATE SC

SET GRADE=GRADE*1.05

WHERE S# IN(SELECT S# FROM S WHERE SEX=' F ' ) AND GRADE

⑦ 用两个UPDATE 语句实现:

UPDATE SC

SET GRADE=GRADE*1.04

WHERE C#=' C4' AND GRADE>70; UPDATE SC

SET GRADE=GRADE*1.05

WHERE C#=' C4' AND GRADE

UPDATE SC

SET GRADE=GRADE*CASE

WHEN GRADE>70 THEN 1.04 ELSE 1.05

END

WHERE C#=' C4' ;

⑧ UPDATE SC

SET GRADE=GRADE*1.05

WHERE GRADE

5.7 预处理方式对于嵌入式SQL 的实现有什么重要意义? 识别出SQL 语句,并处理成函数调用形式

5.8 主语言的程序中使用SQL 语句有哪些规定?

在程序中要区分SQL 语句与主语言语句 允许嵌入的SQL 语句引用主语言的程序变量

SQL 的集合处理方式与主语言的单记录处理方式之间的协调 5.9 SQL的集合处理方式和主语言单记录处理方式间如何协调?

通过游标机制,将集合操作转换成单记录处理方式 5.10 入式SQL 语句何时不必涉及到游标?何时必须涉及到游标?

执行insert 、delete 、update 语句和已知select 语句查询结果是单元组时不涉及游标。当select 语句查询结果为多个元组时必须涉及游标 5.12 什么是存储过程?使用存储过程后,系统具有什么特点?

存储过程是使用SQL 语句和流程控制语句编写的模块,存储过程经过编译和优化后存储在数据库服务器端的数据库中,使用时调用即可。 使用存储过程后的优点: 提供运行速度

增强了SQL 的功能和灵活性 降低网络通信量 减轻程序编写量

间接实现安全控制功能

5.13 什么是SQL/PSM?这个标准中有哪些流程控制语句

SQL/PSM是SQL 标准的一部分,它指定了如何编写持久的层存储模块,提供流程控制语句来表示过程处理的应用逻辑。

有三种流程控制语句:顺序执行,循环语句,条件分支语句

习题6——数据库管理 6.1 名词解释

事务——是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。不论发生何种情况,DBS 必须保证事务能正确、完整地执行。

数据库的一致性——事务运行结果必须保证数据库从一个一致性状态进入另一个一致性状态。

数据库的可恢复性——DBMS 系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态的能力。

并发操作——多个事务同时对同一数据进行操作。 封锁——是一个与数据项有关的变量,相对于该数据项上可能的操作而言,锁描述了该数据项的状态。

X 锁——排它型封锁。如果事务T 对某个数据R 实现了X 锁,那么在T 对R 解锁前,不允许其它事务对R 加任何类型的锁。

S 锁——共享型封锁。如果事务T 对某个数据R 实现了S 锁,仍允许其它事务对R 加S 锁,但R 的所有S 锁解除前,不允许任何事务对R 加X 锁。 调度——事务的执行次序。

串行调度——多个事务依次执行。

并发调度——利用分时的特点,同时处理多个事务。

可串行化调度——在每个事务在各种调度中语句的先后顺序不变的情况下,如果一个并发调度的执行结果与某一串行调度的执行结果等价,则这个并发调度称为可串行化调度。否则是不可串行化调度。

6.2 事务的COMMIT 语句和ROLLBACK 语句各做什么事情? 答:COMMIT 语句提交事务对数据库的所有更新并释放X 锁;

ROLLBACK 语句撤销事务对数据库的所有更新,使数据库恢复到事务执行前的状态,并释放X 锁。

6.3 试述事务的四个性质,并说明每一个性质由DBMS 的哪个子系统实现?每一个性质对DBS 有什么益处?

答:事务的四个性质ACID :

原子性:一个事务对数据库的所有操作,是一个不可分隔的工作单元。不会因事务交叉执行造成数据库的错误。(事务管理子系统)

一致性:一个事务独立执行的结果,就保证数据库的一致性。数据不会因事务的执行而遭受破坏。(完整性子系统)

隔离性:多个事务并发执行时,系统保证这些事务先后单独执行时的结果一样。(并发控制子系统)

持久性:一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。(恢复管理子系统)

6.4 典型的数据库恢复策略是什么?P154 答:(1)平时做好两件事:转储和建立日志

(2)一旦发生数据库故障,分两种情况进行处理:

灾难性故障:拷贝数据库备份到新磁盘,利用日志重做数据库

数据出错:只要用日志撤销不可靠的修改,再利用日志重做已提交的,但还留在内存缓冲区的事务。

6.5 DBS 中有哪些类型的故障?哪些破坏了数据库,哪些没有但使其中的某些数据变得不正确?

答:事务故障(可以预期的事务故障、非预期的事务故障)、系统故障、介质故障。 介质故障破坏了数据库,事务故障和系统故障不破坏数据库但使其中的某些数据变得不正确。

6.6 “检查点机制”的主要思想是什么?

答:DBMS 定时设置检查点,在检查点时刻才真正做到把对DB 的修改写到磁盘,并在日志

文件中写入一条检查点记录(以便恢复时使用)。当DB 需要恢复时,根据日志文件仅对检查后的事务进行REDO 、UNDO 恢复操作。检查点机制大大减少了DB 的恢复时间。

6.7 什么是UNDO 和REDO 操作?为什么要这样设置?

答:REDO 处理的方法是:正向扫描日志文件,根据重做队列的记录对每一个重做事务重新实施对数据库的更新操作。

UNDO 处理的方法是:反向扫描日志文件,根据撤销队列的记录对每一个撤销队列的记录的更新操作执行逆操作。

6.8 COMMIT 操作和检查点操作有些什么联系?你认为应该如何恰当协调这两种操作才有利于DB 的恢复?

答:事务在COMMIT 时,事务对DB 的更新已提交,但对DB 的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。因此事务的真正结束是在COMMIT 后还要加上遇到检查点时刻。

6.9 数据库的并发操作会带来哪些问题?如何解决?

答:丢失数据更新问题、读脏数据问题、不可重复读问题。 通过加X 锁、S 锁解决。

6.10 使用X 锁和S 锁时各有哪些操作?X 锁和S 锁间是如何协调的? 答:X 锁操作有:XFIND(申请加X 锁) 和XRELEASE (解除X 锁)。

S 锁操作有:SFIND(申请加S 锁) 、UPDX(S锁升级为X 锁) 、SRELEASE(解除S 锁) S 锁可以升级为X 锁。

6.11 为什么X 锁需保留到事务终点,而S 锁可随时解除?

答:在一个事务对数据加上X 锁后,并且对数据进行了修改,如果过早地解锁,有可能使其它事务读取了未提交的数据(且随后被退回),引起丢失其它事务更新。因此X 锁的解除应合并到事务的结束(COMMIT 和ROLLBACK )操作中。 S 锁只允许读数据,所以S 锁可以随时解除。

6.12 什么是封锁的粒度?封锁粒度的大小对并发系统有什么影响? 答:封锁的粒度——封锁对象的大小。

封锁粒度与系统的并发度和并发控制的开销密切相关。封锁粒度越大、并发度越小、系统开销越小;封锁粒度越小、并发度越高、系统开销越大。

6.13 在封锁技术中,封锁协议可分哪三个级别?各解决了并发调度中的什么问题?

答:一级封锁协议:事务在修改数据前加X 锁,直到事务结束才释放。解决了丢失数据更新问题。

二级封锁协议:事务在修改数据前加X 锁,直到事务结束才释放。事务在读数据前加S 锁,读完数据后立即释放S 锁。解决了丢失更新问题、读脏数据问题。

三级封锁协议:事务在修改数据前加X 锁,直到事务结束才释放。事务在读数据前加S 锁,直到事务结束时才释放。解决了丢失数据更新问题、读脏数据问题、不可重复读问题。

6.14 试叙述“串行调度”与“可串行调度”的区别。

答:如果多个事务依次执行,则称事务串行调度。 如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。

6.15 SQL 中事务存取模式的定义和隔离级别的定义与数据库的并发控制有什么关系? 答:事务的存取模式是对事务的读/写操作的限制。 事务的隔离机制是对事务并发控制的约束。隔离机制从高到低有四个级别:可串行化,可重复读,读提交数据和可以读未提交数据。

6.16 什么是数据库的完整性?DBMS 的完整性子系统的主要功能是什么? 答:是指数据的正确性、有效性、完整性。

完整性子系统的主要功能:

监督事务的执行,并测试是否违反完整性规则。

如有违反现象,则采取恰当的操作:拒绝操作、报告违反情况、错误更改等。

6.17 SQL 中的完整性约束有哪些?

答:三大类:域约束、基本表约束(候选键定义、外键定义、“检查约束”定义)、断言。

6.18 参照完整性规则在SQL 中有哪几种方法实现?

答:参照完整性规则,在SQL 中可以用外键子句、检查子句、断言等三种方式实现。

6.19 删除参照关系的元组时,对依赖关系有哪些影响?修改参照关系的主键时,对依赖关系有哪些影响?

答:删除参照关系的元组时,对依赖关系的影响可以采取下列三种做法之一: RESTRICT 方式、CASCADE 方式和SET NULL方式。(解释略) 修改参照关系的主键值时,对依赖关系的影响也可以采取与上述类似的三种做法之一。(解释略)

6.20 试对SQL 中检查约束(CHECK )子句和断言两种完整性约束进行比较,各说明什么对象?如何激活?能保证数据库的一致性吗?

答:检查子句主要用于对属性值、元组值加以限制和约束。断言实际上是一种涉及面广的检查子句,用CREATE 语句来定义。 这两种约束都是在进行插入或修改时激活,进行检查。 检查子句只在定义它的基本表中有效,而对其他基本表无约束力,因此在与检查子句有关的其他基本表进行修改时,就不能保证这个基本表中检查子句的语义了。 而断言能保证完整性约束彻底实现。

6.21 设教学数据库的关系如下: S (S#,SNAME ,AGE ,SEX ) SC (S#,C#,SCORE ) C (C#,CNAME ,T#)

试用多种方法定义下列完整性约束:

⑴ 在关系S 中插入的学生年龄值应在16~25岁之间。

⑵ 在关系SC 中插入元组时,其S#值和C#值必须分别在S 和C 中出现。

⑶ 在关系C 中删除一个元组时,首先要把关系SC 中具有同样C#值的元组全部删去。 ⑷ 在关系S 中把某个S#值修改为新值时,必须同时把关系SC 中那些同样的S#值也修改为新值。

解:这里每个约束用一种方式定义。 (1)用检查子句定义: CHECK (AGE BETWEEN 16 AND 25); (2)在关系SC 的定义中,用外键子句定义: FOREIGN KEY (S#) REFERENCES S (S#); FOREIGN KEY (C#) REFERENCES C (C#); (3)在关系SC 的定义中,用外键子句定义: FOREIGN KEY (C#) REFERENCES C (C#) ON DELETE CASCADE ; (4)在关系SC 的定义中,用外键子句定义: FOREIGN KEY (S#) REFERENCES S (S#) ON UPDATE CASCADE ;

6.22 在教学数据库中的关系T 、C 、S 、SC 中,试用SQL 的断言机制定义下列两个完整性约束:

⑴ 学生必须在选修MA THS 课后,才能选修其他课程。 ⑵ 每个男学生最多选修20门课程。 解:(1)这个约束可用下列形式表达: 不存在一个学生的选课,这个学生没学过Maths 课。 这样就能很容易地写出断言: CREATE ASSERTION ASSE1 CHECK (NOT EXISTS( SELECT S# FROM SC X WHERE NOT EXISTS (SELECT * FROM SC Y, C WHERE Y .C#=C.C# AND Y .S#=X.S# AND CNAME=’Maths ’))) ; (2)CREATE ASSERTION ASSE2 CHECK (20>=ALL(SELECT COUNT(C#) FROM S, SC WHERE S.S#=SC.S# AND SEX=’M ’ GROUP BY S.S#));

6.23 什么是触发器?触发器有哪两个级别? 答:触发器是一个能由系统自动执行对数据库修改的语句。触发器有元祖级触发器和语句级触发器两种。

6.24 什么是数据库的安全性?有哪些级别的安全措施?

答:DB 的安全性是指保护DB ,防止不合法的使用,以免数据的泄密、更新或破坏。为了保护DB ,防止恶意的滥用,可以在从低到高五个级别上设置各种安全措施:环境级、职员级、OS 级、网络级、DBS 级。

6.25 对银行的DBS 应采取哪些安全措施?分别属于哪一级?

答:环境级:保护机房和设备,防止人为破坏。

职员级:正确授予用户权限

OS 级:防止从OS 访问数据库

网络级:保证网络软件的安全性

DBS 级:DBS 检查用户身份的合法性和权限的正确性。

6.26 什么是“权限”?用户访问数据库有哪些权限?对数据库模式有哪些修改权限? 答:用户(或应用程序)使用DB 的方式称为权限。

用户访问DB 有四种权限:Read 、Insert 、Update 和Delete 。

用户修改DB 模式有四种权限:Index 、Resource 、Alteration 和Drop 。

6.27 SQL 的视图机制有哪些优点?

答:SQL 的视图机制使系统具有三个优点:数据安全性,逻辑独立性和操作简便性。

6.28 SQL2中的用户权限有哪几类?并做必要的解释。

答:SQL2中用户权限有六类:SELECT 、INSERT 、DELETE 、UPDATE 、REFERENCES 和USAGE 。前四类权限表示:查、插、删、修操作。REFERENCES 允许用户定义新关系时,引用其他关系的主键作为外键。USAGE 允许用户使用已定义的域。

6.29 试解释SQL 中“用户”与“角色”两个概念。为什么要有“角色”机制?

答:SQL 中,用户是实际的人或是访问数据库的应用程序。而角色是一组具有相同权限的用户。角色属于目录一级的概念。在大型DBS 中,用户的数量可能非常大,使用数据库的权限也各不相同。为了便于管理,引入了角色的概念。

6.30 安全性措施中强制存取控制是如何实现的?

答:这个方法的基本思想是把数据分成若干个密级级别,用户也分成相应的若干个许可证级别。密级和许可证级别都是严格有序的。在系统运行时,规定用户只能查看比它级别低或同级的数据,用户只能修改和它同级的数据。用这种方法来保证系统的安全性。

6.31 统计数据库是如何防止用户获取单记录信息的?

答:在统计数据系统运行时,对查询应作下列限制:

① 一个查询查到的记录个数不能太少,至少应是n ;

② 两个查询查到的记录的“交”数目不能太多,至多是m ;

系统可以调整n 和m 的值,使得用户很难获取个别记录的信息,但要做到完全杜绝是不可能的。

6.32 数据库的并发控制、恢复、完整性和安全性之间有些什么联系的区别?

答:这四个方面是一个有机的整体,不可偏废某一方面。DBMS 的这四个子系统一起保证了DBS 的正常运行。

第七章——SQL Server 2000简介及应用

7.1 SQL Server 2000版本有哪四种?各自的适用范围是什么?

答:企业版:作为生产数据库服务器使用

标准版:作为小工作组或部门的数据库服务器使用

个人版:供移动的用户使用

开发版:供程序员使用

7.2 在安装SQL Server 2000时,安装程序会自动创建哪些系统数据库和范例数据库?这些数据库各有哪些用途?

答:(1)Master 数据库:记录了所有SQL Server2000的系统信息、登录账号、系统配置设置、系统中所有数据库及其系统信息以及存储介质信息。

(2)Model 数据库:模板数据库

(3)Msdb 数据库:主要用于存储任务计划信息、事件处理信息、备份恢复信息以及异常报告等。

(4)Tempdb 数据库:存放所有临时表和临时的存储程序

(5)Northwind 数据库:范例数据库

7.3 SQL Server 2000中主要有哪些工具?各有哪些功能?

答:(1)查询分析器:执行T-SQL

(2)导入和导出数据:提供导入、导出及数据转换的功能

(3)服务管理器:启动、停止服务

(4)服务器网络实用工具:网络配置界面

(5)客户端网络实用工具:配置客户端到服务器端的连接

(6)联机丛书:提供联机文档,操作说明

(7)企业管理器:用来管理数据库的应用程序

(8)事件探查器:检查运行情况和事件

(9)IIS 中配置SQL XML支持:配置XML 支持功能

7.4 什么是服务管理器?有哪些优点?

答:服务管理器用来启动、暂停和停止服务。

优点:(1)是一种DBA 工具,用它可以启动指定的SQL Server实例与进程

(2)提供了在任意服务器上启动和停止任意SQL Server进程的简便方法。

(3)提供了对SQL Server进程运行状态的可视化指示

7.5 什么是查询分析器?有哪些优点?

答:查询分析器提供图形界面来执行一个或多个T-SQL 语句。

优点:用户可以交互地设计和测试T-SQL 语句、批处理和脚本。

7.6 什么是企业管理器?有哪些优点? DB 的可恢复性防止DB 被破坏或DB 中数据有错误。 DB 的并发控制是为了避免DB 中数据有错误或用户读取“脏数据”这两件事的发生。 DB 的完整性是为了保证DB 中数据是正确的,避免非法的更新。 DB 的安全性也是为了保护DB ,防止不合法的使用,以免数据的泄露、非法更改和破坏。

答:企业管理器是用户管理SQL Server的主要管理工具和图形界面。

优点:可以完成几乎所有的管理工作。让用户用图形化的方法进行操作。能连接多个SQL Server 实例。遵从MMC 用户界面。

7.7 什么是存储过程?有哪些优点?

答:存储过程是存放在服务器上的预先编译好的SQL 语句。

优点:提供了安全机制、改进了执行性能、减少了网络流量和增强了代码重用性。

7.8 什么是触发器?有哪些优点?

答:触发器是SQL Server 提供给程序员和数据分析员来保证数据完整性的一种方法,是与表事件相关的特殊的存储过程。

优点:开销低,可以完成复杂的完整性约束。

7.9 什么是用户自定义函数?有哪些优点和缺点?

答:用户自定义函数是将一个或多个T-SQL 语句组成的子程序定义成函数,从而实现代码的封装和重用。

优点:同时具有视图和存储过程的优点,还可接受参数,性能高。

缺点:可移植性差

7.10 在SQL Server 2000中,数据库的恢复工作如何进行?

答:使用还原数据库的功能。

7.11 数据的导入和导出工作的功能是什么?

答:完成多个数据库之间的数据转换和转移

7.12 用户要访问SQL Server数据库的数据,必须经过哪三个认证过程?

答:身份认证、数据库合法用户认证、操作权限认证。

7.13 SQL Server 2000中,有哪两种身份认证模式?

答:SQL Server验证模式和混合模式

7.14 什么是角色?其作用是什么?

答:具有一组相同权限的用户称为角色。作用:便于对用户和权限的管理。

7.15 什么是T-SQL ?

答:对标准SQL 扩展的语言,称为Transact-SQL ,简称为T-SQL 。

7.16 名词解释

临时表——临时存放数据的表

局部临时表——在批处理或过程内部使用的临时表

全局临时表——所有用户都可以使用的临时表

表变量——存放表的变量,类似于临时表

第八章——PB9.0简介及应用

8.1 PB 有哪些特点?

答:(1)采用面向对象的编程方法和事件驱动的工作原理

(2)支持跨平台开发,具有开发的数据库连接系统

(3)无序记住各种语句格式即可轻松编写语句

(4)人性化设计

(5)独特的库文件画板和层次清晰的系统资源树

(6)提供了11种不同的“显示风格”的数据窗口

(7)提供规范化的工作空间对象。

8.2 PB9.0的开发空间有哪三个层次?

答:工作空间、目标和库文件

8.3 什么是“数据窗口”?它有什么特点?

答:数据窗口画板是PB 中功能最强大的画板。在其中创建的数据窗口对象可以实现对数据库的各种操作,并按照不同的风格显示数据。数据窗口画板通过提供多个工作区来完成与数据窗口对象相关的工作。

第九章——数据库技术的发展

9.1 在面向对象技术中有哪些基本数据类型?有哪些复合数据类型?

答:基本数据类型有:整型、浮点型、字符、字符串、布尔型和枚举型。

复合类型:行类型、数组类型、列表类型、包类型、集合类型

9.2 什么是对象联系图?图中,椭圆、小圆圈、单箭头→、双箭头→→、双线箭头、双向箭头←→各表示什么含义?

答:描述类型定义间嵌套和递归联系的图称为对象联系图。图中,每个对象可以有若干属性,属性的类型可以是基本数据类型、元组类型或集合类型,而元组或集合是以指针形式(引用类型)实现。

对象联系图中椭圆表示对象类型(相当于实体类型);小圆圈表示属性是基本数据类型,单箭头(→)表示属性值是单值;双箭头(→→)表示属性值是多值;双线箭头(=>)表示对象类型之间的子类与超类联系(从子类指向超类);双向箭头()表示两个属性之间值的联系为逆联系。

9.3 什么是UML ?

答:UML 是20世纪90年代中期Booch 、Rumbaugh 和Jacobson 等三位专家源于早先的方法和符号,但并不拘泥于早先的方法和符号,设计了一个标准的建立模型语言。经过修改后,OMG 组织在1997年推出UML 1.0和UML 1.1版,确定UML 为面向对象开发的行业标准语言,并得到了微软、Oracle 、IBM 等大厂商的支持和认证。

9.4 名词解释

类图——类图描述了面向对象模型的静态结构,主要包括三部分内容:类,类的内部结构,类参与的联系。

类——类是“对象类”的简称,类是表示共享公共结构和公共行为的对象集。

对象——对象是一个实体,在应用范围内扮演着意义明确的角色,有状态、行为和身份三重

含义。

关联——关联是对类的实例之间联系的命名。

关联元数——与关联有关的类的个数,称为关联元数或度数。

关联角色——关联的端部,也就是与关联相连的类,称为关联角色。

重复度——重复度是指在一个给定的联系中有多少对象参与。

关联类——在关联本身也有属性或自己的操作时,或者关联也参与其他类的联系时,这种关联称为关联类。

鉴别器——在类之间具有概化/特化联系时,用以指出概化基础的属性,称为鉴别器。 抽象类——抽象类是一种没有直接实例,但它的子孙可以有直接实例的类。

具体类——具体类是指有直接实例的类

概化——数据的概化/特化(generalization /specialization )是对概念之间联系进行抽象的一种方法。当在较低层上抽象表达了与之联系的较高层上抽象的特殊情况时,就称较高层上抽象是较低层上抽象的“概化”, 而较低层上抽象是较高层上抽象的“特化”。这种概化联系是一种“是”(is a)的联系。

聚合——聚合是一种表达成分对象和聚合对象之间的part-of (一部分)联系。 复合——复合是属于整体对象的一个部分对象,并与整体对象共存亡。

递归聚合——聚合对象本身又是自己的成分对象。

9.5 类图中的重复度与ER 图中实体的基数有什么异同?

答:重复度类似于ER 模型中实体基数的概念。但是这是两个相反的概念。

实体基数是指与一个实体有联系的另一端实体数目的最小、最大值,基数应写在这一端实体的边上。

而重复度是指参与关联的这一端对象数目的最小、最大值,重复度应写在这一端类的边上。

9.6 试比较概化、聚合、复合三个概念的区别。

答:这三个概念都表达了类图中类之间的联系,但表达的内容不一样。

概化表达了子类与超类之间的“is a”联系。

聚合表达了成分对象和聚合对象之间“is part of”的联系。

复合是较强形式的聚合,此时一部分对象只属于一个整体对象,并与整体对象共存亡。

9.7(1)略

(2)ER 图:

UML 类图:

9.8 ODBC技术与传统的数据库编程方式有什么区别?

答:传统的DB 编程方式是“主语言+DML”,但一个应用程序却不能访问不同DB 服务器上的数据。

ODBC 技术实际上是一个公共接口API ,使用ODBC 技术,同一个应用程序就可以访问不同DB 服务器上的数据。

9.9 ODBC技术有什么作用?其卓越贡献是什么?

答:ODBC 技术的作用是使应用程序与DBMS 在逻辑上可以分离,使应用程序具有数据库无关性。

ODBC 的卓越贡献是使应用程序具有良好的互用性和可移植性,并且具备同时访问多种DBS 的能力,从而克服了传统数据库应用程序的缺陷。对用户而言,ODBC 驱动程序屏蔽掉了不同DBS 的差异。

9.10 ODBC体系结构有哪几层?

答:ODBC 的体系结构有四层:应用程序,驱动程序管理器,DBMS 驱动程序、数据源。 应用程序要完成ODBC 外部接口的所有工作,用C 语言和ODBC 函数来编应用程序。 驱动程序管理器管理应用程序和DBMS 驱动程序之间的交互作用,为应用程序加载和调用DBMS 驱动程序。

DBMS 驱动程序执行ODBC 函数,解释执行SQL 语句。

数据源是驱动程序与DB 连接的桥梁。

9.11 ODBC数据库应用程序的主要功能是什么?主要完成哪些任务?

答:ODBC 数据库应用程序的主要功能有四个:调用ODBC 函数,递交SQL 语句给DBMS ,检索出结果,并进行处理。

应用程序要完成ODBC 外部接口的所有工作。主要完成以下8个任务:

连接数据库;向数据源发送SQL 语句;为SQL 语句执行结果分配存储空间,定义所读取的数据格式;读取结果;处理错误;向用户提交处理结果;请求事务的提交和回退操作;断开与数据源的连接。

9.12 什么是驱动程序管理器?它的主要功能是什么?

答:驱动程序管理器是一个动态连接库,用于连接各种DBS 的DBMS 驱动程序,管理应用程序和DBMS 驱动程序之间的交互作用。

驱动程序管理器的主要功能有五点:为应用程序加载DBMS 驱动程序;检查ODBC 函数的合法性;为不同驱动程序的ODBC 函数提供单一的入口;调用正确的DBMS 驱动程序;提供驱动程序信息。

9.13 什么是DBMS 驱动程序?主要任务是什么?

答:DBMS 驱动程序实际上是一个DBMS ,执行ODBC 函数,解释执行SQL 语句,实现对数据源的各种操作。

驱动程序主要任务有六个:建立应用程序与数据源的连接;向数据源提交用户请求执行的SQL 语句;进行数据格式和类型的转换;把处理结果返回给应用程序;将DBS 的错误转换成ODBC 标准错误代码返回给应用程序;根据需要定义和使用光标。

9.14 什么是ODBC 数据源?

答:数据源是驱动程序与DBS 连接的桥梁,用于表达一个ODBC 驱动程序和DBMS 特殊连接的命名。

数据源分成三类:用户数据源,系统数据源,文件数据源。

9.15 什么是SQL/CLI?

答:SQL/CLI是指应用层调用接口,是ODBC 技术的延续。

9.16 在SQL/CLI中,宿主程序与数据库交互的有关信息记录在运行时数据结果中。请回答这些信息将保存在哪四种类型的记录中?这四种记录用于保存什么信息?

答:(1)环境信息:用作一个容器,设置环境信息,以保存一个或多个数据库连接

(2)连接记录:保存一个特定数据库连接所需的信息,表示应用系统与数据源之间的连接

(3)语句记录:保存一个SQL 语句所需的信息。

(4)描述记录:保存元组或参数的有关信息。

9.17 有哪些典型的数据库应用系统开发工具?这些工具有些什么共同的特点?

答:典型的数据库应用系统开发工具有四个:PowerBuilder8.0,Delphi6.0,Visual Basic 6.0,和Developer/2000。这些工具都属于4GL 的软件开发工具,具有基于Windows 界面、C/S结构、面向对象的可视化等特点。

数据库系统原理04735课后习题答

第一章. 数据库系统基本概念

1.1. 名词解释

DB ——DB 是长期存储在计算机内、有组织的、统一管理的相关数据的集合。DB 能为各种用户共享,具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。 DBMS ——是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问DB 的方法,包括DB 的建立、查询、更新及各种数据控制。

DBS ——是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。

联系——是实体间的相互关系。

联系的元数——与一个联系有关的实体集个数。

1:1联系——如果实体集E1中每个实体至多和实体集E2中一个实体有联系,反之亦然,那么实体集E1和E2的联系称为“一对一联系”,记为“1:1”。

1:N 联系——如果实体集E1中的每个实体可以与实体集E2中的任意个(0个或多个)实体有联系,而E2中的每个实体至多和E1中的一个实体有联系,那么称E1对E2的联系是一对多联系,记作:“1:N ”。

M :N 联系——如果实体集E 1中的每个实体可以与实体集E2中的任意个(0个或多个)实体有联系,反之亦然,那么称E1和E2的联系是“多对多联系”,记作“M :N ”。 数据模型——在数据库技术中,我们用数据模型的概念描述数据库的结构和语义,对现实世界的数据进行抽象。根据数据抽象级别定义了四种模型:概念数据模型、逻辑数据模型、外部数据模型和内部数据模型。

概念模型——表达用户需求观点的数据全局逻辑结构的模型。

逻辑模型——表达计算机实现观点的DB 全局逻辑结构的模型。主要有层次、网状、关系模型等三种。

外部模型——表达用户使用观点的DB 局部逻辑结构的模型。

内部模型——表达DB 物理结构的模型。

层次模型——用树型(层次)结构表示实体类型及实体间联系的数据模型。 网状模型——用有向图结构表示实体类型及实体间联系的数据模型。

关系模型——是由若干个关系模式组成的集合。关系模式相当于记录类型,它的实例是关系,每个关系实际上是一张二维表格。

外模式——用户与数据库系统的接口,是用户用到的那部分数据的描述。外模式由若干个外部记录类型组成。

逻辑模式——是数据库中全部数据的整体逻辑结构的描述。它由若干个逻辑记录类型组成,还包含记录间联系、数据的完整性、安全性等要求。

内模式——是数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件的组织形式,以及数据控制方面的细节。

外模式/逻辑模式映像——存在于外模式和逻辑模式之间,用于定义外模式和逻辑模式之间的对应性,一般放在外模式中描述。

逻辑模式/内模式映像——存在于逻辑模式和内模式之间,用于定义逻辑模式和内模式之间的对应性,一般放在内模式中描述。

数据独立性——是指应用程序和数据库的数据结构之间相互独立,不受影响。在修改数据结构时,尽可能不修改应用程序。分物理数据独立性和逻辑数据独立性两个级别。

物理数据独立性——对内模式修改时,对逻辑模式/内模式像作相应修改,可以尽量不影响

逻辑模式。

逻辑数据独立性——逻辑模式修改时,对外模式/逻辑模式映像作相应修改,可以使外模式和应用程序保持不变。

主语言——在数据库技术中,用于编写应用程序的高级程序设计语言。

DDL ——数据定义语言。DBMS 提供DDL 定义数据库的三级结构、两级映像,定义数据的完整性约束、保密限制等约束。

DML ——数据操纵语言。DBMS 提供DML 实现对数据的操作。基本的数据操作有两类:检索(查询)、更新(插入、删除、修改)。分为过程性DML 和非过程DML 两种。

过程性DML ——是指用户编程时,不仅需要指出“做什么”(需要什么样的数据),还需要指出“怎么做”(怎样获得这些数据)。如层次、网状的DML 。

非过程性DML ——用户编程时,只需要指出“做什么”,不需要提出“怎么做”。如关系型DML 。

DD ——数据库系统中存放三级结构定义的数据库。它还存放数据库运行时的统计信息。 DD 系统——管理DD 的子系统。

1.2. 人工管理阶段的数据管理有哪些特点?

1) 数据不保存在计算机里

2) 没有专门的软件进行对数据库管理

3) 只有程序概念,没有文件概念

4) 数据面向程序

1.3. 文件系统阶段的数据管理有哪些特点?

1) 数据以文件形式长期存储在外部存储器的磁盘上

2) 数据的逻辑结构和物理结构有了区别,但比较简单

3) 文件组织多样化,有了索引文件、链接文件和直接存取文件等

4) 数据不再属于某个特定程序,可重复使用,即数据面向应用

5) 对数据的操作以记录为单位

1.4. 文件系统阶段的数据管理有哪些缺陷?请举例说明?

1) 数据冗余、数据不一致、数据联系弱

2) 比如建立了职工档案、职工工资和职工保健三个文件,职工的电话在三个文件

中重复出现,即数据冗余。

1.5. 数据管理的数据库阶段产生的标志是哪三件事情?

1) 1968年IBM 公司推出层次模型IMS 系统

2) 1969年美国CO DASYL组织发布了DBTG报告

3) 1970年IBM 公司的E .F.Codd连续发表论文,提出关系模型

1.6. 数据库阶段的数据管理有哪些特色?

1) 采用了数据模型表示复杂的数据结构

2) 有较高的数据独立性

3) 数据库系统提供了方便的用户接口

4) 数据库系统提供了四个方面的数据控制功能:数据库的恢复、数据的并发控制、

数据的完整性、数据完全性。

5) 增加了系统的灵活性:对数据的操作不一定以记录为单位,可以以数据项为单

位。

1.7. 高级数据库阶段有哪些技术?

面向对象的概念建模、开放数据库互联技术

1.8. 逻辑记录与物理记录,逻辑文件与物理文件有哪些联系和区别?

数据描述有两种形式:物理数据描述和逻辑物理描述。

物理数据描述是指数据在存储设备上的描述,物理数据是存储在物理设备上的数据,物理记录和物理文件都是用来描述存储数据的细节。

逻辑数据描述是用户或程序员以操作的数据形式的描述,逻辑记录和逻辑文件都是用户观点的数据描述。

1.9. 数据抽象过程有哪些步骤?

1) 根据用户的需求,设计数据的概念模型。

2) 根据转换原则,把概念模式转换成逻辑模型。

3) 根据用户的业务特点,设计不同的外部模型,供程序员使用。

4) 根据逻辑模型设计内部模型,实现数据库。

1.10. 概念模型、逻辑模型、外部模型、内部模型各具有哪些特点?

概念模型:

表达了数据的整体逻辑结构,它是系统用户对整个应用程序涉及数据的全面描述。从用户的需求的观点,对数据建模。独立于硬件和软件。它是数据库设计人员和用户之间的交流工具。

逻辑模型:

表达了数据库的整体逻辑结构,它是设计人员对整个应用程序系统项目数据库的全面描述。从数据库实现的观点,对数据建模。独立于硬件,但依赖软件DBMS 。它是数据库设计人员和应用程序员的交流工具。

外部模型:

逻辑模型的一个逻辑子集,独立于硬件,但依赖软件,反映了用户使用数据库的观点。

内部模型:

是数据库最底层抽象, 它描述数据在外存上存储方式、存储设备和存储方法。与硬件和软件关系密切。

1.11. 试叙述层次、网状和关系三种逻辑模型的区别

层次模型:用树型结构表示,较复杂,表示1:N ,记录间联系用指针实现,过程性DML ;

网状模型:用向图结构表示,较复杂,表示1:N/M:N,记录间联系用指针实现,过程性DML ;

关系模型:用关系模式集合表示,较简单,表示1:N/M:N,记录间联系用关键码实现,非过程性DML ;

1.12. 外部模型使数据库系统有哪些优点?

简化了用户观点;

有助于数据库的安全保护;

外部模型是对概念模型的支持 ;

1.13. 数据独立性和数据联系这两个概念有什么区别?

数据独立性是指应用程序和数据之间相互独立,不受影响。

数据联系是指同一记录内部各字段间的联系,以及和记录之间的联系。

1.14. 试叙述用户、DB 的三级模式结构、磁盘上的物理文件之间有些什么联系和不同?

在用户到数据库之间,DB 的数据结构有三个层次:外部模型、逻辑模型、内部模型。这三个层次要用DB 的数据定义语言定义后的内容是外模式、逻辑模式、内模式。

用户使用DB 的数据操纵语句实际上是对外模式的外部记录进行操作,而不是数据

库的内部记录值;逻辑模式提供了连接内外模式的中间观点,使得两级中任何一级的改变都不受另一级的牵制,逻辑模式不涉及到存储结构、访问技术等细节。内模式并不涉及物理设备的约束,那一部分由操作系统完成。如磁盘读写数据的操作。

1.15. 试述DBMS 的工作模式和主要功能。

DBMS 的工作模式:

1) 接受应用程序的数据请求和处理请求

2) 将用户的数据请求转换成复杂的机器代码

3) 实现对数据库的操作

4) 从对数据库的操作中接受查询结果

5) 对查询结果进行处理

6) 将处理结果返回用户

DBMS 主要功能:

数据库的定义功能

数据库的操纵功能

数据库的保护功能

数据库的维护功能

数据字典

1.16. 什么是DB 的系统缓冲区?其作用是什么?

DBMS 为应用程序在内存中开辟的一个DB 的系统缓冲区。用于数据的传输和格式的转换。

1.17. DBS 由哪几部分组成?它有哪些系统软件?其中DD 有什么作用?

DBS 由DB 、硬件、软件、DBA 组成

它有DBM 、OS 、各种主语言和应用开发软件等系统软件

DD 是用来存放三级数据结构定义的数据库,用来存储数据运行时的统计信息。

1.18. 什么是DBA ?DBA 应具有什么素质?DBA 的职责是什么?

DBA 是控制数据整体结构的一组人员,负责DBS 的正常运行,承担创建、监控和维护数据库结构的责任。

DBA 需具有下来素质:

熟悉全部数据的性质和用途、对所有用户需求的了解、对系统性能的熟悉度、兼有系统分析员和运筹学专家的知识和品质。

DBA 的职责:

定义模式、定义内模式、与用户的联络、定义安全性规则,对用户访问数据库授权、定义完整性规则,监督数据库的运行、数据库的转储和恢复工作。

1.19. 试对DBS 的全局结构作详细解释。

用户、DBMS (查询处理器、存储管理器)、磁盘存储器

1.20. 从模块结构观察,DBMS 由哪些部分组成?

查询处理器、存储管理器

1.21. 使用DBS 的用户有哪几类?

DBA 、专业用户、程序员、终端用户

1.22. DBMS 的查询处理器和存储管理器分别由哪几部分组成?

查询处理器:DDL 解释器、DML 编译器、嵌入式DML 预编译器、查询求值引擎

存储管理器:权限和完整性管理器、事务管理器、文件管理器、缓冲区管理器

1.23. 磁盘存储器中有哪五类主要的数据结构?

1) 数据文件:存储数据库管理的用户数据自身。

2) 数据字典:存储三级结构的描述。

3) 索引:为提高查询速度而设置的逻辑排序手段。

4) 统计数据:存储DBS 运行时统计分析的数据。

5) 日志:存储DBS 运行时对DB 的操作情况。

1.24. DBS 能产生哪些效益?

灵活性、简易性、面向用户、加快应用程序的开发速度、维护方便、标准化

第二章. 数据库设计和ER 模型

2.1 名词解释

数据库工程——数据库应用系统的开发是一项软件工程,但又有自己的特点。

数据库系统生存期——数据库应用系统从规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间。

实体——是一个数据对象,指应用中可以区别的客观存在的事物。

实体集——同一类实体构成的集合。

实体类型——是对实体集中实体的定义。

实体标识符——在一个实体中,能够唯一标识实体的属性或属性集合。

联系——表示一个或多个实体间的关联关系。

联系集——同一类联系构成的集合。

联系类型——对联系集中联系的定义。

属性——实体的某一特性。

简单属性——不可再分隔的属性。

复合属性——可再分解为其它属性的属性。

单值属性——同一实体的属性只能取一个值。

多值属性——同一实体的属性可能取多个值。

存储属性——需要把属性值存入数据库的属性。

派生属性——不需要把属性值存入数据库,属性值可以从其它属性值推导出的属性。 联系元数(度数)——指一个联系涉及的实体集个数。

映射基数——实体集E1和E2之间有二元联系,则参与一个联系中的实体的个数称为映射基数。

完全参与——如果实体集中的每个实体都参与联系集R 的至少一个联系中,称实体集E 完全参与。

部分参与——如果实体集中的只有部分实体参与联系集R 的联系中,称实体集E 部分参与。 关系模型——用二维表格表示实体集,用关键码表示实体间的联系的数据模型。 关系模式——关系模型中的记录类型。

关系实例——是一个属性集相同的元组的集合。

(关系)属性——关系模型中的字段。

(关系)域——关系模型中字段的取值范围。

(关系)元组——关系模型中的记录。

超键——在关系中能唯一标识元组的属性集,称为关系模式的超键。

候选键——不含有多余属性的超键。

主键——用户选作元组标识的候选键。

外键——如果模式R 中的属性K 是其它模式的主键,则K 在模式R 中称为外键。

实体完整性规则——要求关系中元组在组成主键的属性上不能有空值,否则就起不到唯一标识元组的作用了。

参照完整性规则——如果属性集K 是关系模式R1的主键,同时也是关系模式R2的外键,那么在R2中,K 的取值只允许有两种可能,或者为空值,或者等于R1关系中的某个主键值。

弱实体——如一个实体对另一个实体(强实体)具有很强的依赖联系,而且该实体主键的一部分或全部从其强实体中获得,则该实体为弱实体。

子类实体——当较低层次上的实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较低层次上的实体类型为子类实体。

超类实体——当较低层次上的实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较低层次上的实体类型为子类实体。

2.2 数据库设计的规划阶段应做哪些事情?

1) 系统调查。画出应用单位组织结构图。

2) 可行性分析。从技术、经济、效益、法律等各方面可行性进行分析,写出可行

性分析报告,组织专家讨论。

3) 确定数据库系统的总目标,对应用单位的工作流程进行优化,制订项目开发计

划。

获得决策部门批准后,正式进入数据库系统开发。

2.3 数据库设计的需求分析阶段工作主要由哪四步组成?

1) 分析用户活动,产生业务流程图

2) 确定系统范围,产生系统关联图

3) 分析业务活动所涉及的数据,产生数据流图

4) 分析系统数据,产生数据字典

2.4 在数据库设计中,为什么要有概念设计这一阶段?

使设计人员从用户的观点看待数据和处理需求、约束,产生反映用户观点的概念模型。将概念模设计从设计过程中独立开来,可以使数据库设计各阶段任务单一化,减少复杂度,便于组织管理,能较好地适应各种变化,转换成关系模式。

2.5 试述概念设计的主要步骤?

1) 进行数据抽象(聚集和概括方法),设计局部概念模型

2) 将局部概念模型综合成全局概念模型(消除冲突)

3) 评审(用户、DBA 和开发人员评审)

2.6 逻辑设计的目的是什么?试述逻辑设计阶段主要步骤及内容

逻辑设计的目的是将概念模型转换成与所选用的具体机器上所支持的数据模型相符合的逻辑模型。

逻辑设计阶段主要步骤:

1) 将概念模型转换成逻辑模型

2) 设计外模式

3) 设计应用程序和数据库接口

4) 评价模型(定量分析:处理频率、数据容量、性能测量)

5) 修正模型

2.7 什么是数据库结构的物理设计?试述其具体步骤。

物理设计是对于给定的基本数据模型选取一个最适合应用环境的物理结构的过程。数据库的物理结构主要指数据库存储记录格式、存储记录安排、存取方法。

具体步骤:

1) 存储记录结构设计:包括记录的组成、数据项的类型、长度,以及逻辑记录到

存储记录的映射。

2) 确定数据存放位置:可以把经常同时访问的数据组合在一起。

3) 存取方法设计:存取路径分为主存取路径与辅存取路径,前者用于主键检索,

后者用于辅助键检索。

4) 安全性和完整性考虑。

5) 程序设计。

2.8 数据库实现阶段主要有哪几件事情?

1) 定义数据结构

2) 数据装载:人工(刷选数据、转换数据格式、输入数据、校验数据)和计算机

装载(筛选数据、输入数据、效验数据、转换数据、综合数据)

3) 编制和调试应用程序

4) 数据库试运行。

2.9 数据库系统投入运行后,有哪些维护工作?

1) 数据库的转储和恢复。

2) 数据库的安全性、完整性控制。

3) 数据库性能的监督、分析、改进。

4) 数据库的重组织和重构造。

2.10 在概念设计中,如何把多值属性变换成系统容易实现的形式?

将原来的多值属性用几个新的单值属性表示。

将原来的多值属性用一个新的实体类型表示。

2.11 对联系类型有哪两种约束?试详细解释?

联系类型的约束限制了参与联系的实体数目,有技术约束和参数约束。

技术约束表示了一个联系的实体的个数约束, 通过映射基数来表达,有1:1,

1:N,M:N,M:1四种。

参与约束表示了实体集中是部分实体还是全部实体参与联系集中的联系。有部分参与和完全参与两种。

2.12 采用ER 模型的数据库概念设计有哪些主要的步骤?

1) 设计局部ER 模型(确定局部结构范围、定义实体、定义联系、分配属性)

2) 设计全局ER 模型(确定公共实体类型、合并局部ER 模型、消除冲突)

3) 全局ER 模型优化(合并实体类型、消除冗余属性、消除冗余联系)

2.13 在关系模型中,关系具有哪些性质

1) 关系中的每个属性值都是不可分解的。

2) 关系中不允许出现重复组。

3) 由于关系是一个集合,因此不考虑元祖间的顺序,即没有行序。

4) 元祖的属性在理论上也是无序的,但使用时按习惯考虑列的顺序。

2.14 为什么关系中的元组没有先后顺序?且不允许有重复的元组?

因为关系是一个元祖的集合,而元祖在集合中的顺序无关紧要,即没有行序。

集合中的元素不允许重复出现,因此关系中的元组不能重复,可以用键来标识唯一的元组。

2.15 参照完整性规则使用时,有哪些变通?试举例说明。

1) 外键和相应的主键可以不同名,只要定义在相同的值域上即可。

2) R1和R2可以是同一个关系模式,此时表示同一个关系中不同元组间的联系。

3) 外键值是否允许为空,视具体情况而定。

2.16

商品(商品编号,商品名,规格,价格)

职工(职工号,职工名,性别,业绩,商店编号)

2.17 略

2.18 略

2.19 ER 图转换成关系模式集的具体思想是什么?

1) 实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性即为关系

模式的属性,实体标示符即为关系模式的键。

2) 联系类型的转换:

二元联系类型的转换:

a) 如果实体间联系是1:1:1,在任意一个实体模型中加入另两个实体的主键

作为外键。

b) 如果实体间联系是1:1:N,在多方实体模式中加入两个1方的主键作为外

键。

c) 如果实体间联系是1:M:N,把联系类型转换为关系模式,其属性为M 和N

方实体类型的键(作为外键) 加上联系类型的属性,而主键为M 和N 方主键

的组合。

d) 如果实体间联系是M:N:P, 其属性为三方实体类型的键(作为外键) 加上

联系类型的属性,而主键为三方主键的组合。

2.20 采用ER 模型的数据库逻辑设计有哪些步骤?

导出初始化关系模式集、规范化处理、模式评价、模式修正、设计子模式。

2.21 略

2.22 图略

仓库(仓库号,仓库名,地址,负责人)

业务员(业务员编号,姓名,性别)

商店(店号,店面,地址)

商品(品号,品名,价格,规格)

收银员(工号,姓名,性别,年龄,店号)

供应(供应单号,仓库号,店号,经手人) 进货(进货单号,商品号,业务员编号)

2.23 略

2.24 图略 行车人员(驾驶执照号,姓名,地址,电话,邮编) 车辆(机动车牌照号,型号,生产日期,制造厂) 处罚方法(处罚编号,警告,处罚,暂扣驾驶执照) 违章(违章编号,驾驶执照号,机动车牌照号,处罚编号)

第三章. 关系模式设计理论

3.1. 函数依赖——设有关系模式R (U ),X ,Y 是属性集U 的子集,只要r 是R 有当前

关系,对r 中的任意两个元组t 和s ,都有t[X]=s[X]蕴含t[Y]=s[Y],那么就称函数依赖(FD )X →Y 在关系模式R (U )中成立。

平凡的函数依赖——对于FD X→Y ,如果Y ∈X ,那么该FD 就是平凡的FD 。

函数依赖集F 的闭包F+——设F 为函数依赖集,被F 逻辑蕴涵的函数依赖全体构成的集合。 属性集X 的闭包X+——设F 是属性集U 上的FD 集,X 是U 的子集,那么属性集X 的闭包是一个从F 集使用FD 推理规则推出的所有满足X →A 的属性A 的集合。

函数依赖的逻辑蕴涵——设F 是关系模式R 上成立的函数依赖集合,X →Y 是一个FD ,如果对于R 的每一个满足F 的关系r 也满足X →Y ,那么称F 逻辑蕴涵X →Y 。

函数依赖集的等价——如果关系模式R (U )上的两个函数依赖集F 和G ,有F+=G+,则称F 和G 是等价的函数依赖集。

最小依赖集——满足下面三个条件的函数依赖集G :

G 中每个FD 的右边都是单属性;

G 中没有冗余的FD 。即G 中不存在这样的函数依赖X →Y ,使得G -{X→Y}与G 等价; G 中每个FD 的左边没有冗余的属性。即G 中不存在这样的函数依赖X →Y ,X 有一个真子集W ,使得G -{X→Y}U{W→Y}与G 等价。

无损分解——设R 是一个关系模式,F 是R 上的一个FD 集,R 分解成数据库模式。如果对R 中满足F 的每一个关系r ,都有r 在数据库中的各关系模式Ri 上投影连接后仍为r ,则称该数据库模式相对于F 是无损分解的。

泛关系假设——在定义无损分解时,先假设存在泛关系r 的情况下,再去谈论分解。 Chase 过程——P79。

保持函数依赖——P80。

1NF ——关系模式的每一个关系的属性值都是不可分的原子值。

2NF ——关系模式是1NF ,且每一个非主属性都完全函数依赖于候选键。

3NF ——关系模式是1NF ,且每一个非主属性都不传递依赖于候选键。

BCNF ——关系模式是1NF ,且每一个属性都不传递依赖于候选键。

MVD ——P88。

平凡的MVD ——对于属性集U 上的MVD X →→Y ,如果Y ∈X 或XY =U 。则此MVD 是平凡的MVD 。

4NF ——设D 是关系模式R 上成立的FD 和MVD 的集合。如果D 中每个非平凡的MVD X→→Y 的左部都是R 的超键。

3.2. 试解释下面两个“数据冗余”的概念:

文件系统中不可避免的“数据冗余”

关系数据库设计中应尽量避免的“数据冗余”

文件系统中的“数据冗余”:由于在文件之间缺乏联系,造成每个应用程序都有相应的文件,有可能同样的数据在不同文件中重复存储。

关系数据库设计中的“数据冗余”:数据库某一关系中多个元组大量重复存储同样的属性。

3.3. 关系模式的非形式化设计准则有哪几条?这些准则对数据库设计有什么帮助?

1) 尽可能指包含直接联系的属性,不要包含间接联系的属性。

2) 尽可能使得相应关系中不出现插入、删除、修改异常现象。

3) 尽可能使得相应关系中避免放置经常为空值的属性。

4) 尽可能使得关系的等值连接在主键和外键的属性上进行,并保证以后不会产生

额外的元组。

3.4. 对函数依赖X →Y 的定义加以扩充,X 和Y 可以为空属性集,用φ表示, 那么X →

φ,φ→Y ,φ→φ的含义是什么?

1) 一个关系模式R(U)中,X ,Y 是U 的子集,r 是R 的任一具体关系,如果对r

的任意两个元组t1,t2, 由t1[X]=t2[X]必有t1[φ]=t2[φ]。即X →φ表示空属性函数依赖于X 。这是任何关系中都存在的。

2) ) φ→Y 表示Y 函数依赖于空属性。由此可知该关系中所有元组中Y 属性的值

均相同。

3) φ→φ表示空属性函数依赖于空属性。这也是任何关系中都存在的。

+3.7已知关系模式R(ABC),F={A→B ,B →C},求F 。(有43个FD)

+F ={φ→φ,A →φ,B →φ,C →φ,A →B ,B →C ,A →C,AB →φ,AB →A ,AB →B ,AB →C ,AB →BC ,AB →AB ,AB →ABC ,BC →φ,BC →C ,BC →B ,BC →BC ,AC →φ,AC →C ,AC →A ,AC →AC ,ABC →φ,ABC →A ,ABC →B ,ABC →C ,ABC →BC ,ABC →AB ,ABC →ABC}

3.16什么是寄生元组?什么是悬挂元组?各是怎么产生的?

在泛关系模式分解成数据库模式时,泛关系r 在数据库模式中的每一个模式上投影再连接起来,比原关系r 多出来的元组是寄生元组。

在无泛关系模式下,对两个关系进行自然连接中被丢失的元组,被称为悬挂元组。

3.18试解释数据库“丢失信息”与“未丢失信息”两个概念。有什么区别?

分解后是否表示一样的信息,如不一样就是丢失信息,否则就是未丢失信息。 后面题目省略

第四章. 关系运算

4.1. 无限关系——无组数量无限多的关系。

无穷验证——验证一个公式时,必须对关系中所有元组进行验证。

4.10教师关系T (T#,TNAME ,TITLE )

课程关系C (C#,CNAME ,T#)

学生关系S (S#,SNAME ,AGE ,SEX )

选课关系SC (S#,C#,SCORE )

1) 检索年龄小于17岁的女学生的学号和姓名。

πS#,SNAME(σage

2) 检索男学生所学课程的课程号和成绩

πC#,score(σsex=’男’∧σS.S#=SC.S#(SCC)) 3) 检索男学生所学课程的任课教师的工号和姓名

πt#,tname(σsex=’男’ (SSC C T)) 4) 检索至少选修两门课的学生学号

π1(σ1=4∧2!=5(SC×SC))

5) 检索至少有学号为S2和S4学生选修的课程的课程号

Π2(σ2!=5∧1=’’S2 ∧4=’S4’(SC×SC)) 6) 检索wang 同学不学的课程号

Πc#(C)- Πc# (σsname =’wang ’(SSC))

7) 检索全部学生都选修的课程的课程号和课程名

Πc#,cname(C(Πc#,s#(SC) ÷ Πs#(S)))

8) 检索选修课程包含liu 老师所授全部课程的学生学号

Πs# (σtname=’liu ’(SCC T))

4.13为什么要对关系代数表达式进行优化?

对于等价的关系表达式,因表达式中安排选择、投影、连接的顺序不同而执行效率也不一样。

4.14有哪三条启发式规则?对优化起什么作用

尽可能早地执行选择操作 尽可能早地执行投影操作 避免直接做笛卡尔积

作用:合理安排操作顺序,节省时间和空间

第五章. SQL语言

5.1. 基本表——是实际存储在数据库中的表。 视图——是由若干基本表和视图构成的表的定义。 实表——是对基本表的别称。(略)。 虚表——在创建一个视图时,只是把视图的定义存储在数据字典中,而不存储视图定义的数据,在用户使用视图时才去求对应的数据。因此,视图被称为“虚表”。

相关子查询——SELECT 语句嵌套时,子查询中查询条件依赖于外层查询中的值,因此子查询要反复求值供外层查询使用。这种子查询称为相关子查询。

连接查询——查询时要从多个基本表中提取数据,此时把多个基本表写在同一层的FROM 子句中,这种查询形式称为联接查询。

嵌套查询——查询时要从多个基本表中提取数据,此时把多个基本表分别放在不同层次上的FROM 子句中,这种查询形式称为嵌套查询。 导出表——是执行了查询时产生的表。

临时视图——SQL3允许用户用WITH 子句定义一个临时视图(即子查询),置于SELECT 语句的开始处。临时视图本身是用SELECT 语句定义的。

交互式SQL ——SQL 语言在终端交互方式下使用,称为交互式SQL 。 嵌入式SQL ——SQL 语言在语言的程序中使用,称为嵌入式SQL 。 游标——是一个与某一查询结果相联系的符号名,是一个指针。

卷游标——可推进也可后退的游标。

5.2 试叙述SELECT 语句的关系代数特点和元组演算特点。

SELECT 语句中出现的基本表名,都应该理解成基本表中的元组变量,而列名应理解成元组分量,这样SQL 就具有了元组演算的特点。 5.3设教学数据库中有四个关系:

教师关系T (t#,tname ,title ) 课程关系C (c#,cname ,t#)

学生关系S (s#,sname ,age ,sex ) 选课关系SC(s#,c#,score )

试用SQL 的查询语句表示下列查询:

(1)检索年龄小于17岁的女学生的学号和姓名。

select s#,sname from S where age

select c#,score from S,SC where S.s#=SC.s# and sex=’男’

(3)检索男学生所学课程的任课教师的工号和姓名。

select t#,tname from S,SC,C,T where S.s#=SC.s# and SC.c#=C.c# and C.t#=T.t# and sex=’男’ (4)检索至少选修两门课的学生学号。

select s# from SC group by s# having count(*)>2

(5)检索至少有学号为S2和S4学生选修的课程的课程号。

select c# from SC,S where S.s#=SC.s# and S.s#=’S2’or S.s#=’S4’

(6)检索wang 同学不学的课程号。

(7)检索全部学生都选修的课程的课程号和课程名。

(8)检索选修课程包含liu 老师所授全部课程的学生学号。

5.4设教学数据库中有四个关系: 教师关系T (t#,tname ,title ) 课程关系C (c#,cname ,t#)

学生关系S (s#,sname ,age ,sex ) 选课关系SC(s#,c#,score )

试用SQL 的查询语句表示下列查询: (1)统计有学生选修的课程门数。 SELECT COUNT(DISTINCT C#) FROM SC

(2)求选修C4课程的女学生的平均年龄。 SELECT AVG(AGE) FROM S,SC

WHERE S.S#=SC.S# AND C#='004'AND SEX=’F ’ ; 或者,SELECT AVG(AGE)

FROM S

WHERE SEX=’F ’ AND S# IN (SELECT S# FROM SC

WHERE C#='C4') ;

(3)求LIU 老师所授课程的每门课程的学生平均成绩。 SELECT CNAME,AVG(SCORE) FROM T,C,SC

WHERE T.T#=C.T# AND SC.C#=C.C# AND TNAME='LIU' GROUP BY C# ;

(4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列。 SELECT DISTINCT C#,COUNT(S#) FROM SC GROUP BY C#

HAVING COUNT(S#)>10 ORDER BY 2 DESC, C# ASC

(5)检索学号比WANG 同学大,而年龄比他小的学生姓名。 SELECT X.SNAME

FROM S AS X, S AS Y

WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE

WHERE SCORE IS NULL

(6)检索姓名以L 打头的所有学生的姓名和年龄。 SELECT SNAME,AGE FROM S

WHERE SNAME LIKE 'L%'

(8)年龄大于女同学平均年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X

WHERE X.SEX='男' AND X.AGE>(SELECT AVG(AGE) FROM S AS Y

WHERE Y.SEX='女') ;

(9)求年龄大于所有女同学年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X

WHERE X.SEX='男' AND X.AGE>ALL (SELECT AGE FROM S AS Y

WHERE Y.SEX='女')

5.5对于下面的关系R 和S ,试求出下列各种联接操作的执行结果:

① R NATURAL INNER JOIN S

① ④

② R NATURAL RIGHT OUTER JOIN S ③ R RIGHT OUTER JOIN S USING(C ) ④ R INNER JOIN S

⑤ R FULL OUTER JOIN S ON false

解:

A B C D ② A B C D ③ A R.B C S.B D

b 1 a 1 b 1 c 1 d 1 a 1 b 1 c 1 d 1 a 1 b 1 c 1 d 1 b 2 a 2 b 2 c 2 d 2 a 2 b 2 c 2 d 2 a 2 b 2 c 2 d 2 b 4 null b 4 c 4 d 4 null null c 4 d 4

A R.B R.C S.B S.C D ⑤ A R.B R.C S.B S.C D a 1 b 1 c 1 b 1 c 1 d 1 a 1 b 1 c 1 null null null a 1 b 1 c 1 b 2 c 2 d 2 a 2 b 2 c 2 null null null a 1 b 1 c 1 b 4 c 4 d 4 a 3 b 3 c 3 null null null

c 1 a 2 b 2 c 2 b 1 c 1 d 1 null null null b 1 d 1 c 2 a 2 b 2 c 2 b 2 c 2 d 2 null null null b 2 d 2 c 4 a 2 b 2 c 2 b 4 c 4 d 4 null null null b 4 d 4 a 3 b 3 c 3 b 1 c 1 d 1 a 3 b 3 c 3 b 2 c 2 d 2 a 3 b 3 c 3 b 4 c 4 d 4

5.6试用SQL 更新语句表达对5.3题教学数据库中关系S 、SC 、C 的更新操作:

① 往关系C 中插一个课程元组(' C8' ,' VC++' ,' BAO ' )。

② 检索所授每门课程平均成绩均大于80分的教师姓名,并把检索到的值送往另一个已存在的表FACULTY (TNAME )。 ③ 在SC 中删除尚无成绩的选课元组。

④ 把选修LIU 老师课程的女同学选课元组全部删去。 ⑤ 把MATHS 课不及格的成绩全改为60分。

⑥ 把低于所有课程总平均成绩的女同学成绩提高5%。

⑦ 在表SC 中修改C4课程的成绩,若成绩小于等于70分时提高5%,若成绩大于70 分时提高4%(用两种方法实现,一种方法是用两个UPDATE 语句实现,另一种方法是用带CASE 操作的一个UPDATE 语句实现)。 ⑧ 在表SC 中,当某个成绩低于全部课程的平均成绩时,提高5%。 解:① INSERT INTO C

VALUES(' C8' ,' VC++' ,' BAO ' ) ;

② INSERT INTO FACULTY(TNAME)

SELECT DISTINCT TEACHER

FROM (SELECT TEACHER, C.C#, AVG(GRADE)

FROM S, SC

WHERE SC.C#=C.C#

GROUP BY TEACHER, C.C#)

AS RESULT(TEACHER, C#, AVG_GRADE) AS X WHERE 80

FROM RESULT AS Y

WHERE Y.TEACHER=X.TEACHER);

③ DELETE FROM SC

WHERE GRADE IS NULL; ④ DELETE FROM SC

WHERE S# IN(SELECT S# FROM S WHERE SEX=' F ')

AND C# IN(SELECT C# FROM C WHERE TEACHER=' LIU ' ) ;

⑤ UPDATE SC

SET GRADE=60 WHERE GRADE

AND C# IN(SELECT C# FROM C WHERE CNAME=' MATHS ') ;

⑥ UPDATE SC

SET GRADE=GRADE*1.05

WHERE S# IN(SELECT S# FROM S WHERE SEX=' F ' ) AND GRADE

⑦ 用两个UPDATE 语句实现:

UPDATE SC

SET GRADE=GRADE*1.04

WHERE C#=' C4' AND GRADE>70; UPDATE SC

SET GRADE=GRADE*1.05

WHERE C#=' C4' AND GRADE

UPDATE SC

SET GRADE=GRADE*CASE

WHEN GRADE>70 THEN 1.04 ELSE 1.05

END

WHERE C#=' C4' ;

⑧ UPDATE SC

SET GRADE=GRADE*1.05

WHERE GRADE

5.7 预处理方式对于嵌入式SQL 的实现有什么重要意义? 识别出SQL 语句,并处理成函数调用形式

5.8 主语言的程序中使用SQL 语句有哪些规定?

在程序中要区分SQL 语句与主语言语句 允许嵌入的SQL 语句引用主语言的程序变量

SQL 的集合处理方式与主语言的单记录处理方式之间的协调 5.9 SQL的集合处理方式和主语言单记录处理方式间如何协调?

通过游标机制,将集合操作转换成单记录处理方式 5.10 入式SQL 语句何时不必涉及到游标?何时必须涉及到游标?

执行insert 、delete 、update 语句和已知select 语句查询结果是单元组时不涉及游标。当select 语句查询结果为多个元组时必须涉及游标 5.12 什么是存储过程?使用存储过程后,系统具有什么特点?

存储过程是使用SQL 语句和流程控制语句编写的模块,存储过程经过编译和优化后存储在数据库服务器端的数据库中,使用时调用即可。 使用存储过程后的优点: 提供运行速度

增强了SQL 的功能和灵活性 降低网络通信量 减轻程序编写量

间接实现安全控制功能

5.13 什么是SQL/PSM?这个标准中有哪些流程控制语句

SQL/PSM是SQL 标准的一部分,它指定了如何编写持久的层存储模块,提供流程控制语句来表示过程处理的应用逻辑。

有三种流程控制语句:顺序执行,循环语句,条件分支语句

习题6——数据库管理 6.1 名词解释

事务——是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。不论发生何种情况,DBS 必须保证事务能正确、完整地执行。

数据库的一致性——事务运行结果必须保证数据库从一个一致性状态进入另一个一致性状态。

数据库的可恢复性——DBMS 系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态的能力。

并发操作——多个事务同时对同一数据进行操作。 封锁——是一个与数据项有关的变量,相对于该数据项上可能的操作而言,锁描述了该数据项的状态。

X 锁——排它型封锁。如果事务T 对某个数据R 实现了X 锁,那么在T 对R 解锁前,不允许其它事务对R 加任何类型的锁。

S 锁——共享型封锁。如果事务T 对某个数据R 实现了S 锁,仍允许其它事务对R 加S 锁,但R 的所有S 锁解除前,不允许任何事务对R 加X 锁。 调度——事务的执行次序。

串行调度——多个事务依次执行。

并发调度——利用分时的特点,同时处理多个事务。

可串行化调度——在每个事务在各种调度中语句的先后顺序不变的情况下,如果一个并发调度的执行结果与某一串行调度的执行结果等价,则这个并发调度称为可串行化调度。否则是不可串行化调度。

6.2 事务的COMMIT 语句和ROLLBACK 语句各做什么事情? 答:COMMIT 语句提交事务对数据库的所有更新并释放X 锁;

ROLLBACK 语句撤销事务对数据库的所有更新,使数据库恢复到事务执行前的状态,并释放X 锁。

6.3 试述事务的四个性质,并说明每一个性质由DBMS 的哪个子系统实现?每一个性质对DBS 有什么益处?

答:事务的四个性质ACID :

原子性:一个事务对数据库的所有操作,是一个不可分隔的工作单元。不会因事务交叉执行造成数据库的错误。(事务管理子系统)

一致性:一个事务独立执行的结果,就保证数据库的一致性。数据不会因事务的执行而遭受破坏。(完整性子系统)

隔离性:多个事务并发执行时,系统保证这些事务先后单独执行时的结果一样。(并发控制子系统)

持久性:一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。(恢复管理子系统)

6.4 典型的数据库恢复策略是什么?P154 答:(1)平时做好两件事:转储和建立日志

(2)一旦发生数据库故障,分两种情况进行处理:

灾难性故障:拷贝数据库备份到新磁盘,利用日志重做数据库

数据出错:只要用日志撤销不可靠的修改,再利用日志重做已提交的,但还留在内存缓冲区的事务。

6.5 DBS 中有哪些类型的故障?哪些破坏了数据库,哪些没有但使其中的某些数据变得不正确?

答:事务故障(可以预期的事务故障、非预期的事务故障)、系统故障、介质故障。 介质故障破坏了数据库,事务故障和系统故障不破坏数据库但使其中的某些数据变得不正确。

6.6 “检查点机制”的主要思想是什么?

答:DBMS 定时设置检查点,在检查点时刻才真正做到把对DB 的修改写到磁盘,并在日志

文件中写入一条检查点记录(以便恢复时使用)。当DB 需要恢复时,根据日志文件仅对检查后的事务进行REDO 、UNDO 恢复操作。检查点机制大大减少了DB 的恢复时间。

6.7 什么是UNDO 和REDO 操作?为什么要这样设置?

答:REDO 处理的方法是:正向扫描日志文件,根据重做队列的记录对每一个重做事务重新实施对数据库的更新操作。

UNDO 处理的方法是:反向扫描日志文件,根据撤销队列的记录对每一个撤销队列的记录的更新操作执行逆操作。

6.8 COMMIT 操作和检查点操作有些什么联系?你认为应该如何恰当协调这两种操作才有利于DB 的恢复?

答:事务在COMMIT 时,事务对DB 的更新已提交,但对DB 的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。因此事务的真正结束是在COMMIT 后还要加上遇到检查点时刻。

6.9 数据库的并发操作会带来哪些问题?如何解决?

答:丢失数据更新问题、读脏数据问题、不可重复读问题。 通过加X 锁、S 锁解决。

6.10 使用X 锁和S 锁时各有哪些操作?X 锁和S 锁间是如何协调的? 答:X 锁操作有:XFIND(申请加X 锁) 和XRELEASE (解除X 锁)。

S 锁操作有:SFIND(申请加S 锁) 、UPDX(S锁升级为X 锁) 、SRELEASE(解除S 锁) S 锁可以升级为X 锁。

6.11 为什么X 锁需保留到事务终点,而S 锁可随时解除?

答:在一个事务对数据加上X 锁后,并且对数据进行了修改,如果过早地解锁,有可能使其它事务读取了未提交的数据(且随后被退回),引起丢失其它事务更新。因此X 锁的解除应合并到事务的结束(COMMIT 和ROLLBACK )操作中。 S 锁只允许读数据,所以S 锁可以随时解除。

6.12 什么是封锁的粒度?封锁粒度的大小对并发系统有什么影响? 答:封锁的粒度——封锁对象的大小。

封锁粒度与系统的并发度和并发控制的开销密切相关。封锁粒度越大、并发度越小、系统开销越小;封锁粒度越小、并发度越高、系统开销越大。

6.13 在封锁技术中,封锁协议可分哪三个级别?各解决了并发调度中的什么问题?

答:一级封锁协议:事务在修改数据前加X 锁,直到事务结束才释放。解决了丢失数据更新问题。

二级封锁协议:事务在修改数据前加X 锁,直到事务结束才释放。事务在读数据前加S 锁,读完数据后立即释放S 锁。解决了丢失更新问题、读脏数据问题。

三级封锁协议:事务在修改数据前加X 锁,直到事务结束才释放。事务在读数据前加S 锁,直到事务结束时才释放。解决了丢失数据更新问题、读脏数据问题、不可重复读问题。

6.14 试叙述“串行调度”与“可串行调度”的区别。

答:如果多个事务依次执行,则称事务串行调度。 如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。

6.15 SQL 中事务存取模式的定义和隔离级别的定义与数据库的并发控制有什么关系? 答:事务的存取模式是对事务的读/写操作的限制。 事务的隔离机制是对事务并发控制的约束。隔离机制从高到低有四个级别:可串行化,可重复读,读提交数据和可以读未提交数据。

6.16 什么是数据库的完整性?DBMS 的完整性子系统的主要功能是什么? 答:是指数据的正确性、有效性、完整性。

完整性子系统的主要功能:

监督事务的执行,并测试是否违反完整性规则。

如有违反现象,则采取恰当的操作:拒绝操作、报告违反情况、错误更改等。

6.17 SQL 中的完整性约束有哪些?

答:三大类:域约束、基本表约束(候选键定义、外键定义、“检查约束”定义)、断言。

6.18 参照完整性规则在SQL 中有哪几种方法实现?

答:参照完整性规则,在SQL 中可以用外键子句、检查子句、断言等三种方式实现。

6.19 删除参照关系的元组时,对依赖关系有哪些影响?修改参照关系的主键时,对依赖关系有哪些影响?

答:删除参照关系的元组时,对依赖关系的影响可以采取下列三种做法之一: RESTRICT 方式、CASCADE 方式和SET NULL方式。(解释略) 修改参照关系的主键值时,对依赖关系的影响也可以采取与上述类似的三种做法之一。(解释略)

6.20 试对SQL 中检查约束(CHECK )子句和断言两种完整性约束进行比较,各说明什么对象?如何激活?能保证数据库的一致性吗?

答:检查子句主要用于对属性值、元组值加以限制和约束。断言实际上是一种涉及面广的检查子句,用CREATE 语句来定义。 这两种约束都是在进行插入或修改时激活,进行检查。 检查子句只在定义它的基本表中有效,而对其他基本表无约束力,因此在与检查子句有关的其他基本表进行修改时,就不能保证这个基本表中检查子句的语义了。 而断言能保证完整性约束彻底实现。

6.21 设教学数据库的关系如下: S (S#,SNAME ,AGE ,SEX ) SC (S#,C#,SCORE ) C (C#,CNAME ,T#)

试用多种方法定义下列完整性约束:

⑴ 在关系S 中插入的学生年龄值应在16~25岁之间。

⑵ 在关系SC 中插入元组时,其S#值和C#值必须分别在S 和C 中出现。

⑶ 在关系C 中删除一个元组时,首先要把关系SC 中具有同样C#值的元组全部删去。 ⑷ 在关系S 中把某个S#值修改为新值时,必须同时把关系SC 中那些同样的S#值也修改为新值。

解:这里每个约束用一种方式定义。 (1)用检查子句定义: CHECK (AGE BETWEEN 16 AND 25); (2)在关系SC 的定义中,用外键子句定义: FOREIGN KEY (S#) REFERENCES S (S#); FOREIGN KEY (C#) REFERENCES C (C#); (3)在关系SC 的定义中,用外键子句定义: FOREIGN KEY (C#) REFERENCES C (C#) ON DELETE CASCADE ; (4)在关系SC 的定义中,用外键子句定义: FOREIGN KEY (S#) REFERENCES S (S#) ON UPDATE CASCADE ;

6.22 在教学数据库中的关系T 、C 、S 、SC 中,试用SQL 的断言机制定义下列两个完整性约束:

⑴ 学生必须在选修MA THS 课后,才能选修其他课程。 ⑵ 每个男学生最多选修20门课程。 解:(1)这个约束可用下列形式表达: 不存在一个学生的选课,这个学生没学过Maths 课。 这样就能很容易地写出断言: CREATE ASSERTION ASSE1 CHECK (NOT EXISTS( SELECT S# FROM SC X WHERE NOT EXISTS (SELECT * FROM SC Y, C WHERE Y .C#=C.C# AND Y .S#=X.S# AND CNAME=’Maths ’))) ; (2)CREATE ASSERTION ASSE2 CHECK (20>=ALL(SELECT COUNT(C#) FROM S, SC WHERE S.S#=SC.S# AND SEX=’M ’ GROUP BY S.S#));

6.23 什么是触发器?触发器有哪两个级别? 答:触发器是一个能由系统自动执行对数据库修改的语句。触发器有元祖级触发器和语句级触发器两种。

6.24 什么是数据库的安全性?有哪些级别的安全措施?

答:DB 的安全性是指保护DB ,防止不合法的使用,以免数据的泄密、更新或破坏。为了保护DB ,防止恶意的滥用,可以在从低到高五个级别上设置各种安全措施:环境级、职员级、OS 级、网络级、DBS 级。

6.25 对银行的DBS 应采取哪些安全措施?分别属于哪一级?

答:环境级:保护机房和设备,防止人为破坏。

职员级:正确授予用户权限

OS 级:防止从OS 访问数据库

网络级:保证网络软件的安全性

DBS 级:DBS 检查用户身份的合法性和权限的正确性。

6.26 什么是“权限”?用户访问数据库有哪些权限?对数据库模式有哪些修改权限? 答:用户(或应用程序)使用DB 的方式称为权限。

用户访问DB 有四种权限:Read 、Insert 、Update 和Delete 。

用户修改DB 模式有四种权限:Index 、Resource 、Alteration 和Drop 。

6.27 SQL 的视图机制有哪些优点?

答:SQL 的视图机制使系统具有三个优点:数据安全性,逻辑独立性和操作简便性。

6.28 SQL2中的用户权限有哪几类?并做必要的解释。

答:SQL2中用户权限有六类:SELECT 、INSERT 、DELETE 、UPDATE 、REFERENCES 和USAGE 。前四类权限表示:查、插、删、修操作。REFERENCES 允许用户定义新关系时,引用其他关系的主键作为外键。USAGE 允许用户使用已定义的域。

6.29 试解释SQL 中“用户”与“角色”两个概念。为什么要有“角色”机制?

答:SQL 中,用户是实际的人或是访问数据库的应用程序。而角色是一组具有相同权限的用户。角色属于目录一级的概念。在大型DBS 中,用户的数量可能非常大,使用数据库的权限也各不相同。为了便于管理,引入了角色的概念。

6.30 安全性措施中强制存取控制是如何实现的?

答:这个方法的基本思想是把数据分成若干个密级级别,用户也分成相应的若干个许可证级别。密级和许可证级别都是严格有序的。在系统运行时,规定用户只能查看比它级别低或同级的数据,用户只能修改和它同级的数据。用这种方法来保证系统的安全性。

6.31 统计数据库是如何防止用户获取单记录信息的?

答:在统计数据系统运行时,对查询应作下列限制:

① 一个查询查到的记录个数不能太少,至少应是n ;

② 两个查询查到的记录的“交”数目不能太多,至多是m ;

系统可以调整n 和m 的值,使得用户很难获取个别记录的信息,但要做到完全杜绝是不可能的。

6.32 数据库的并发控制、恢复、完整性和安全性之间有些什么联系的区别?

答:这四个方面是一个有机的整体,不可偏废某一方面。DBMS 的这四个子系统一起保证了DBS 的正常运行。

第七章——SQL Server 2000简介及应用

7.1 SQL Server 2000版本有哪四种?各自的适用范围是什么?

答:企业版:作为生产数据库服务器使用

标准版:作为小工作组或部门的数据库服务器使用

个人版:供移动的用户使用

开发版:供程序员使用

7.2 在安装SQL Server 2000时,安装程序会自动创建哪些系统数据库和范例数据库?这些数据库各有哪些用途?

答:(1)Master 数据库:记录了所有SQL Server2000的系统信息、登录账号、系统配置设置、系统中所有数据库及其系统信息以及存储介质信息。

(2)Model 数据库:模板数据库

(3)Msdb 数据库:主要用于存储任务计划信息、事件处理信息、备份恢复信息以及异常报告等。

(4)Tempdb 数据库:存放所有临时表和临时的存储程序

(5)Northwind 数据库:范例数据库

7.3 SQL Server 2000中主要有哪些工具?各有哪些功能?

答:(1)查询分析器:执行T-SQL

(2)导入和导出数据:提供导入、导出及数据转换的功能

(3)服务管理器:启动、停止服务

(4)服务器网络实用工具:网络配置界面

(5)客户端网络实用工具:配置客户端到服务器端的连接

(6)联机丛书:提供联机文档,操作说明

(7)企业管理器:用来管理数据库的应用程序

(8)事件探查器:检查运行情况和事件

(9)IIS 中配置SQL XML支持:配置XML 支持功能

7.4 什么是服务管理器?有哪些优点?

答:服务管理器用来启动、暂停和停止服务。

优点:(1)是一种DBA 工具,用它可以启动指定的SQL Server实例与进程

(2)提供了在任意服务器上启动和停止任意SQL Server进程的简便方法。

(3)提供了对SQL Server进程运行状态的可视化指示

7.5 什么是查询分析器?有哪些优点?

答:查询分析器提供图形界面来执行一个或多个T-SQL 语句。

优点:用户可以交互地设计和测试T-SQL 语句、批处理和脚本。

7.6 什么是企业管理器?有哪些优点? DB 的可恢复性防止DB 被破坏或DB 中数据有错误。 DB 的并发控制是为了避免DB 中数据有错误或用户读取“脏数据”这两件事的发生。 DB 的完整性是为了保证DB 中数据是正确的,避免非法的更新。 DB 的安全性也是为了保护DB ,防止不合法的使用,以免数据的泄露、非法更改和破坏。

答:企业管理器是用户管理SQL Server的主要管理工具和图形界面。

优点:可以完成几乎所有的管理工作。让用户用图形化的方法进行操作。能连接多个SQL Server 实例。遵从MMC 用户界面。

7.7 什么是存储过程?有哪些优点?

答:存储过程是存放在服务器上的预先编译好的SQL 语句。

优点:提供了安全机制、改进了执行性能、减少了网络流量和增强了代码重用性。

7.8 什么是触发器?有哪些优点?

答:触发器是SQL Server 提供给程序员和数据分析员来保证数据完整性的一种方法,是与表事件相关的特殊的存储过程。

优点:开销低,可以完成复杂的完整性约束。

7.9 什么是用户自定义函数?有哪些优点和缺点?

答:用户自定义函数是将一个或多个T-SQL 语句组成的子程序定义成函数,从而实现代码的封装和重用。

优点:同时具有视图和存储过程的优点,还可接受参数,性能高。

缺点:可移植性差

7.10 在SQL Server 2000中,数据库的恢复工作如何进行?

答:使用还原数据库的功能。

7.11 数据的导入和导出工作的功能是什么?

答:完成多个数据库之间的数据转换和转移

7.12 用户要访问SQL Server数据库的数据,必须经过哪三个认证过程?

答:身份认证、数据库合法用户认证、操作权限认证。

7.13 SQL Server 2000中,有哪两种身份认证模式?

答:SQL Server验证模式和混合模式

7.14 什么是角色?其作用是什么?

答:具有一组相同权限的用户称为角色。作用:便于对用户和权限的管理。

7.15 什么是T-SQL ?

答:对标准SQL 扩展的语言,称为Transact-SQL ,简称为T-SQL 。

7.16 名词解释

临时表——临时存放数据的表

局部临时表——在批处理或过程内部使用的临时表

全局临时表——所有用户都可以使用的临时表

表变量——存放表的变量,类似于临时表

第八章——PB9.0简介及应用

8.1 PB 有哪些特点?

答:(1)采用面向对象的编程方法和事件驱动的工作原理

(2)支持跨平台开发,具有开发的数据库连接系统

(3)无序记住各种语句格式即可轻松编写语句

(4)人性化设计

(5)独特的库文件画板和层次清晰的系统资源树

(6)提供了11种不同的“显示风格”的数据窗口

(7)提供规范化的工作空间对象。

8.2 PB9.0的开发空间有哪三个层次?

答:工作空间、目标和库文件

8.3 什么是“数据窗口”?它有什么特点?

答:数据窗口画板是PB 中功能最强大的画板。在其中创建的数据窗口对象可以实现对数据库的各种操作,并按照不同的风格显示数据。数据窗口画板通过提供多个工作区来完成与数据窗口对象相关的工作。

第九章——数据库技术的发展

9.1 在面向对象技术中有哪些基本数据类型?有哪些复合数据类型?

答:基本数据类型有:整型、浮点型、字符、字符串、布尔型和枚举型。

复合类型:行类型、数组类型、列表类型、包类型、集合类型

9.2 什么是对象联系图?图中,椭圆、小圆圈、单箭头→、双箭头→→、双线箭头、双向箭头←→各表示什么含义?

答:描述类型定义间嵌套和递归联系的图称为对象联系图。图中,每个对象可以有若干属性,属性的类型可以是基本数据类型、元组类型或集合类型,而元组或集合是以指针形式(引用类型)实现。

对象联系图中椭圆表示对象类型(相当于实体类型);小圆圈表示属性是基本数据类型,单箭头(→)表示属性值是单值;双箭头(→→)表示属性值是多值;双线箭头(=>)表示对象类型之间的子类与超类联系(从子类指向超类);双向箭头()表示两个属性之间值的联系为逆联系。

9.3 什么是UML ?

答:UML 是20世纪90年代中期Booch 、Rumbaugh 和Jacobson 等三位专家源于早先的方法和符号,但并不拘泥于早先的方法和符号,设计了一个标准的建立模型语言。经过修改后,OMG 组织在1997年推出UML 1.0和UML 1.1版,确定UML 为面向对象开发的行业标准语言,并得到了微软、Oracle 、IBM 等大厂商的支持和认证。

9.4 名词解释

类图——类图描述了面向对象模型的静态结构,主要包括三部分内容:类,类的内部结构,类参与的联系。

类——类是“对象类”的简称,类是表示共享公共结构和公共行为的对象集。

对象——对象是一个实体,在应用范围内扮演着意义明确的角色,有状态、行为和身份三重

含义。

关联——关联是对类的实例之间联系的命名。

关联元数——与关联有关的类的个数,称为关联元数或度数。

关联角色——关联的端部,也就是与关联相连的类,称为关联角色。

重复度——重复度是指在一个给定的联系中有多少对象参与。

关联类——在关联本身也有属性或自己的操作时,或者关联也参与其他类的联系时,这种关联称为关联类。

鉴别器——在类之间具有概化/特化联系时,用以指出概化基础的属性,称为鉴别器。 抽象类——抽象类是一种没有直接实例,但它的子孙可以有直接实例的类。

具体类——具体类是指有直接实例的类

概化——数据的概化/特化(generalization /specialization )是对概念之间联系进行抽象的一种方法。当在较低层上抽象表达了与之联系的较高层上抽象的特殊情况时,就称较高层上抽象是较低层上抽象的“概化”, 而较低层上抽象是较高层上抽象的“特化”。这种概化联系是一种“是”(is a)的联系。

聚合——聚合是一种表达成分对象和聚合对象之间的part-of (一部分)联系。 复合——复合是属于整体对象的一个部分对象,并与整体对象共存亡。

递归聚合——聚合对象本身又是自己的成分对象。

9.5 类图中的重复度与ER 图中实体的基数有什么异同?

答:重复度类似于ER 模型中实体基数的概念。但是这是两个相反的概念。

实体基数是指与一个实体有联系的另一端实体数目的最小、最大值,基数应写在这一端实体的边上。

而重复度是指参与关联的这一端对象数目的最小、最大值,重复度应写在这一端类的边上。

9.6 试比较概化、聚合、复合三个概念的区别。

答:这三个概念都表达了类图中类之间的联系,但表达的内容不一样。

概化表达了子类与超类之间的“is a”联系。

聚合表达了成分对象和聚合对象之间“is part of”的联系。

复合是较强形式的聚合,此时一部分对象只属于一个整体对象,并与整体对象共存亡。

9.7(1)略

(2)ER 图:

UML 类图:

9.8 ODBC技术与传统的数据库编程方式有什么区别?

答:传统的DB 编程方式是“主语言+DML”,但一个应用程序却不能访问不同DB 服务器上的数据。

ODBC 技术实际上是一个公共接口API ,使用ODBC 技术,同一个应用程序就可以访问不同DB 服务器上的数据。

9.9 ODBC技术有什么作用?其卓越贡献是什么?

答:ODBC 技术的作用是使应用程序与DBMS 在逻辑上可以分离,使应用程序具有数据库无关性。

ODBC 的卓越贡献是使应用程序具有良好的互用性和可移植性,并且具备同时访问多种DBS 的能力,从而克服了传统数据库应用程序的缺陷。对用户而言,ODBC 驱动程序屏蔽掉了不同DBS 的差异。

9.10 ODBC体系结构有哪几层?

答:ODBC 的体系结构有四层:应用程序,驱动程序管理器,DBMS 驱动程序、数据源。 应用程序要完成ODBC 外部接口的所有工作,用C 语言和ODBC 函数来编应用程序。 驱动程序管理器管理应用程序和DBMS 驱动程序之间的交互作用,为应用程序加载和调用DBMS 驱动程序。

DBMS 驱动程序执行ODBC 函数,解释执行SQL 语句。

数据源是驱动程序与DB 连接的桥梁。

9.11 ODBC数据库应用程序的主要功能是什么?主要完成哪些任务?

答:ODBC 数据库应用程序的主要功能有四个:调用ODBC 函数,递交SQL 语句给DBMS ,检索出结果,并进行处理。

应用程序要完成ODBC 外部接口的所有工作。主要完成以下8个任务:

连接数据库;向数据源发送SQL 语句;为SQL 语句执行结果分配存储空间,定义所读取的数据格式;读取结果;处理错误;向用户提交处理结果;请求事务的提交和回退操作;断开与数据源的连接。

9.12 什么是驱动程序管理器?它的主要功能是什么?

答:驱动程序管理器是一个动态连接库,用于连接各种DBS 的DBMS 驱动程序,管理应用程序和DBMS 驱动程序之间的交互作用。

驱动程序管理器的主要功能有五点:为应用程序加载DBMS 驱动程序;检查ODBC 函数的合法性;为不同驱动程序的ODBC 函数提供单一的入口;调用正确的DBMS 驱动程序;提供驱动程序信息。

9.13 什么是DBMS 驱动程序?主要任务是什么?

答:DBMS 驱动程序实际上是一个DBMS ,执行ODBC 函数,解释执行SQL 语句,实现对数据源的各种操作。

驱动程序主要任务有六个:建立应用程序与数据源的连接;向数据源提交用户请求执行的SQL 语句;进行数据格式和类型的转换;把处理结果返回给应用程序;将DBS 的错误转换成ODBC 标准错误代码返回给应用程序;根据需要定义和使用光标。

9.14 什么是ODBC 数据源?

答:数据源是驱动程序与DBS 连接的桥梁,用于表达一个ODBC 驱动程序和DBMS 特殊连接的命名。

数据源分成三类:用户数据源,系统数据源,文件数据源。

9.15 什么是SQL/CLI?

答:SQL/CLI是指应用层调用接口,是ODBC 技术的延续。

9.16 在SQL/CLI中,宿主程序与数据库交互的有关信息记录在运行时数据结果中。请回答这些信息将保存在哪四种类型的记录中?这四种记录用于保存什么信息?

答:(1)环境信息:用作一个容器,设置环境信息,以保存一个或多个数据库连接

(2)连接记录:保存一个特定数据库连接所需的信息,表示应用系统与数据源之间的连接

(3)语句记录:保存一个SQL 语句所需的信息。

(4)描述记录:保存元组或参数的有关信息。

9.17 有哪些典型的数据库应用系统开发工具?这些工具有些什么共同的特点?

答:典型的数据库应用系统开发工具有四个:PowerBuilder8.0,Delphi6.0,Visual Basic 6.0,和Developer/2000。这些工具都属于4GL 的软件开发工具,具有基于Windows 界面、C/S结构、面向对象的可视化等特点。


相关文章

  • 大学几乎所有学科的课本答案[2]
  • 大学几乎所有学科的课本答案! 来源: 任明嘉的日志 经济金融 [PDF格式]<会计学原理>同步练习题答案 [Word格式]<成本会计>习题及答案(自学推荐,23页) [Word格式]<成本会计>配套习题集 ...查看


  • 数据库原理及应用教程第3版课后题答案
  • 第一章习题参考答案 一.选择题 1. C 2. B 3. D 4. C 5. D 6. A 7. A 8. B 9. D 10. B 11. C 12. D 13. A 14. D 15. B 16. C 17. D 18. A 19. D ...查看


  • 大学课后题答案
  • 不用买参考书了!大学课本答案大全!--爱死你了!( 为什么大四才发现啊) 2008-12-18 16:50 | (分类:) 注册可用 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程 ...查看


  • 在大学里寻找课后答案的必去之处
  • 3500份课后答案,很值得收藏,这里只介绍了一部分. 还有很多,可以去课后答案网(http://www.khdaw.com/bbs)查找. ##################[公共基础课-答案]#################### 新 ...查看


  • 大学课本答案大全
  • 不用买参考书了!大学课本答案大全! 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程第四册答案 http://www.10xiao.com/thread-7-1-1.html 新视野 ...查看


  • 自考数据库系统原理试题
  • 07.10 08.1 08.10 09.1 09.10-- 10.1 10.10-- 11.1-- 全国2007年10月高等教育自学考试 数据库系统原理试题 课程代码:04735 一.单项选择题(本大题共15小题,每小题2分,共30分) 在 ...查看


  • [多媒体技术应用教程]的课后习题答案
  • 习题参考答案 第一章 参考答案 一.单项选择题 1.B 2.A 3.B 4.A 5.D 6.A 二. 多项选择题 1.CG 2.BCEGHI 3.ABCEF 第2章 参考答案 一.选择题 1.A 2.C 3.A 4. BD 5. ABCD ...查看


  • 大学计算机基础课后习题详细答案
  • 第一章课后习题参考答案 一.填空题 1. 处理.处理 2. 黑盒.程序 3. 输入设备.运算器.存储器.控制器.输出设备 4. 运算器.控制器.中央处理器 5. 存储器.数据 6. 计算机硬件.软件 7. 电子管.晶体管.集成电路.超大规模 ...查看


  • [ARM嵌入式系统结构与编程]习题答案 邱铁编著
  • <ARM 嵌入式系统结构与编程>邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷[1**********] <ARM 嵌入式系统结构与编程>第1~4章思考与练习 题答案 此答案仅供教师教学用 第1章 绪论 思 ...查看


热门内容