《数据库原理》习题解答

更新时间:2024-03-21 01:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 数据库系统概论

1、 试回答下列问题: (1)什么是数据库?

(2)什么是数据库管理系统? (3)什么是数据库系统?

(4)数据库DB与数据库管理系统DBMS,数据库系统DBS之间的差别? (5)数据库发展的三个重要阶段是什么? 解答:

(1)数据是描述现实世界中各种具体事物或抽象概念的可存储并具有明确意义的信息。数据库是具有逻辑关系和确定意义的数据集合;它是针对明确的应用目标而设计、建立和加载的。每个数据库都具有一组用户,并为这些用户的应用服务;一个数据库表示了现实世界的某些方面。

(2)数据库管理系统是一个通用的软件系统,由一组计算机程序构成。数据库管理系统能够对数据库进行有效的管理,包括存储管理、安全性管理、完整性管理等。数据库管理系统提供了一个软件环境,使用户能方便快速的建立、维护、检索、存取和处理数据库中的信息。

(3)数据库系统是数据库和数据库管理系统的相加,它是具有管理和控制数据库功能的计算机系统。

(4)数据库DB(Data Base)是现实世界中相互关联的大量数据及数据间关系的集合。 数据库管理系统DBMS(Data Base Management System)是对数据库中的数据进行存储和管理的软件系统,包括存储、管理、检索和控制数据库中数据的各种语言和工具,是一套系统软件。数据库系统DBS(Data Base System)是一个数据库系统,应该包括数据库应用系统,数据库应用开发接口,数据库管理系统,操作系统和数据库,数据库系统在不同的硬件和不同的操作系统下,运行不同的DBMS软件版本。

(5)数据库发展的三个重要阶段是:第一代:层次和网状数据库系统;第二代:关系数据库系统RDBMS;第三代:面向对象的数据库系统OODBMS。 2、 试述文件系统的缺点。 解答:

文件系统具有以下缺点:

(1)数据共享性差,冗余度大。文件与应用程序紧密相关,相同的数据集合在不同的应用程序中使用时,经常需要重复定义、重复存储。

(2)数据不一致性。由于数据的重复存储,单独管理,给数据的修改和维护带来了困难,容易造成数据不一致。

(3)数据独立性差。由于文件与应用程序紧密,当文件的系统结构发生改变时,我们必须修改应用程序,包括记录结构的定义和应用程序的数据处理部分。此外,如果应用程序发生改变也可能影响文件的定义。

(4)数据结构化程度低。文件系统中数据组织成记录,记录由字段组成,记录内部有了一定的结构。但是文件之间是孤立的。从整体上看是无结构的,没有反映现实事物之间的内在联系,因此很难对数据进行合理的组织以适应不同的应用的需要。在一个应用系统中不增加新文件就不能增加新的应用,不易于扩展新的应用。 3、 试说明数据字典的主要内容。 解答:

数据字典一个特殊文件,它存储的主要内容是元数据。元数据是描述数据库的说明信息的数据,包括数据库中每个文件的结构、每个数据项的存储格式和数据类型、数据的完整性约束等。

4、 解释下列概念:内模式,概念模式,外模式,视图抽象,概念抽象,物理抽象。 解答:

内模式:数据库的内模式抽象的描述了概念数据库如何在物理存储设备上存储。数据库的内模式包括两方面。第一方面是存储策略的描述,包括数据和索引的存储方式、存储记录的描述、记录定位方法等。第二方面是存取路径的描述,包括索引的定义、HASH结构定义等。

概念模式:数据库的概念模式综合了外模式中所有视图,反映了所有数据库用户所关心的现实世界的抽象,形成了数据库的整体逻辑结构。

外模式:数据库的外模式是面向用户的数据库模式,它是所有视图的集合。视图是按照不同用户的观点抽象所得的多个逻辑数据结构,它概述了每个用户所关心的数据。

视图抽象:视图抽象把现实世界中的信息按照不同用户的观点抽象为多个逻辑数据结构,每个逻辑结构称为一个视图。

概念抽象:概念抽象把数据库的外模式抽象为数据库的概念模式。

物理抽象:物理抽象把数据库的概念模式进一步抽象成为数据库的内模式。 5、 试述数据库系统采使用三层模式结构的好处有哪些? 解答:

数据库的三层模式结构的好处在于:

(1)保证了数据的独立性:概念模式和内模式分开,保证数据的物理独立性,把外模式和概念模式分开,保证数据逻辑的独立性。

(2)简化用户接口:用户不需要了解数据库实际存储情况,也不需要对数据库存储结构了解,只要按照外模式编写应用程序就可以访问数据库。

(3)有利于数据共享:所有用户使用统一概念模式导出的不同外模式,减少数据冗余,有利于多种应用程序间共享数据。

(4)有利于数据安全保密:每个用户只能操作属于自己的外模式数据视图,不能对数据库其他部分进行修改,保证了数据安全性。 6、试回答下列问题: (1)什么是数据模型?

(2)实体-联系模型的主要概念是什么?并给出解释。

(3)关系数据模型、网络数据模型和层次数据模型的区别是什么? (4)数据库模式与数据库实例的区别是什么? (5)说明物理数据独立性与逻辑数据独立性的差别? 解答:

(1)数据模型是一组描述数据库的概念。这些概念精确的描述数据、数据之间的联系、数据的语义和完整性约束。很多数据模型还包括一个操作集合。这些操作用来说明对数据库的存取和更新。数据模型应满足三方面要求:一是能真实的模拟现实世界;二是容易为人们理解;三是便于在计算机上实现。

(2)实体-联系模型是一种基于对象的数据模型。它使用实体、属性、键属性、实体间联系这四个概念来抽象描述现实世界,可以用来实现数据的视图抽象。

实体对应于现实世界中可区别的客观对象或抽象概念。属性是实体特征的抽象。实体型是属性的集合。当一个实体型的所有属性的值都确定以后,我们就得到这个实体型的一个实例。在一个实体型的属性中有一组特殊的属性,这组属性的值可以区别出该实体型的不同实例。这组特殊属性称为实体型的键属性。实体间联系对应于客观世界中各种对象或抽象概念之间的联系。

实体-联系模型除了具有实体、属性、键属性、实体间联系的概念以外,还具有表示完整性约束的能力。一个重要的完整性约束是实体间联系的基数。设实体间联系RS把实体型E1和E2联系在一起。如果RS的基数为1:n,则E1的每个实例可以与E2 的多个实体实例想关联,而E2的每个实体实例只能与E1的一个实体实例相关联。

(3)对象类是由一组变量和一组程序代码构成。变量表示对象类的特征。一个对象类的程序代码定义了该对象变量上的操作,成为这个对象类的方法。一个对象的变量可以是另一个对象。对象的嵌套层数没有任何限制。

当一个对象类的每个变量都赋以确定的值以后,我们就得到了这个对象类的一个对象。对象是对象类的一个实例。

(4)关系数据模型、网络数据模型和层次数据模型是依据描述实体与实体之间的联系的不同方式来划分的:用二维表格来表示实体和实体之间联系的模型叫做关系数据模型;用图结构来表示实体和实体之间联系的模型叫做网络数据模型;用树结构来表示实体和实体之间联系的模型叫做层次模型。

关系数据模型的核心是数学概念关系。一个关系可以视为一个表。每个表具有固定个数的列。每一列具有一个名字,称为关系的属性。每一行数据称为一个元组。关系数据库模型使用关系表示数据和数据之间的联系。

网络数据模型的核心是记录和系。记录表示数据。一个记录具有多个数据域。每个数据域表示一个数据项。数据之间的联系由系表示。系可以视为一个指针。

层次数据模型类似于网络数据模型。层次数据模型也使用记录和系表示数据和数据之间的联系。层次数据模型与网络数据模型的不同在于记录不能被组织成为任意的图,必须组织成树的集合。

(5)数据库模式是一个数据库的基于特定数据模型的结构定义。数据库模式与程序设计语言中的类型定义类似,是一个数据库的框架。

在任意一个特定的时刻,数据库中存储的数据称为一个数据库实例。数据库实例与程序设计语言中的变量值的概念对应。

数据库模式是相对稳定的,很少变化。数据库实例是动态的,随数据库更新操作而变化。 7、数据库语言一般都包括哪些子语言?每种子语言的功能是什么? 解答:

数据库语言包括两个子语言:数据定义子语言和数据操纵子语言。

数据定义子语言用来定义数据库模式,简记作DDL。DDL包括数据库模式定义和数据库存储结构与存取方法定义两方面。数据定义子语言的处理程序也相应的分为两部分。一部分是数据库模式定义处理程序。另一部分是存储结构和存取方法定义处理程序。数据库模式定义处理程序接受用DDL表示的数据库模式定义,把其变换为内部表示形式,存储到数据库系统中称为数据字典的特殊文件中。存储结构和存取方法定义处理程序接收用DDL表示的数据库的存储结构和存取方法定义,在存储设备上创建相关的数据库文件,建立起物理数据库。数据定义子语言也包括数据库模式的删除与修改功能。

数据操纵子语言用来表示用户对数据库的操作请求。一般说来,数据库操纵语言能够表示下列数据库操作:查询数据库中的信息;向数据库插入新的信息;从数据库删除信息;修改数据库中的信息。数据操纵语言分为两类:过程性语言和非过程性语言。过程性语言要求

用户既说明需要数据库中的什么数据,也

户说明需要数据库中的什么数据,不需要说明怎样搜索这些数据。 8、关系数据库管理系统的功能主要划分为哪些部分?各自作用是什么? 解答:

关系数据库管理系统的功能主要分为4部分:

(1)数据描述语言DDL。它是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。

(2)数据操纵语言DML。它是终端用户、应用程序实现对数据库中的数据进行各种操纵的语言。DML包括的基本操作功能有:增加、删除、修改、检索、显示输出等。

(3)数据库运行控制。DBMS实现对数据库的各种操作,是在数据库管理程序控制下完成的。它是DBMS运行的核心,主要包括:事务管理和并发控制;数据完整性约束检查;数据库建立和维护;通讯功能。

(4)数据库维护和服务。数据库的维护功能主要指对数据库和数据对象的安全保护,以及数据库的初始化、恢复和重构等。数据库的服务功能主要指数据库初始数据的装入、数据的导入导出、数据在网上的发布、图形的或报表的显示和输出功能等。 9、试述数据库管理系统的体系结构分类和各自的优缺点? 解答:

DBMS的三种体系结构:

(1)物理中心数据库:一台大型的中心计算机存放数据库管理系统和数据库,通过网络连接大量终端。

? ? ?

一台大型的中心计算机存放数据库管理系统和数据库,通过网络连接大量终端。 花费较小的控制开销,如事务调度、一致性检查、并发和恢复等。 数据在网上传输的代价高。

(2)分布式数据库:一个分布式数据库是由分布于计算机网络上的多个逻辑相关的数据库组成的集合,网络中的每个结点具有独立处理的能力(称为场地自治),可执行局部应用,同时,每个结点通过网络通讯系统也能执行两个结点以上的全局应用。

? ?

克服了中心数据库的弱点:降低了数据传输代价;

提高了系统的可靠性,局部系统发生故障,其他部分还可继续工作; n 各个数据库的位置是透明的,方便系统的扩充; ?

为了协调整个系统的事务活动,事务管理的性能花费高。

(3)客户服务器结构:一台大型的服务器计算机存放数据库服务器和数据库,通过网络连接大量客户端计算机。

?

是前两种方式的折中,数据集中放在服务器节点上;

? 数据库服务器提供客户端的服务请求,应客户的请求实现对数据的操作,把客户请求的局部数据传送到客户端进行处理;

? ?

客户端的DBMS没有并发控制要求,功能比较简单。 客户端和服务器端分工明确,各司其职。

10、何为数据库服务器?数据库服务器负责的功能有哪些? 解答:

一个数据库服务器是指运行在局域网中的一台或多台服务器计算机上的数据库管理系统软件。 数据库服务器为客户应用提供服务,这些服务主要包括查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。 11、当前数据库发展的新趋势有哪些方面? 解答:

当前数据库发展的新趋势有:(1)对象关系数据库;(2)面向对象(设计的)关系数据库系统;(3)数据仓库;(4)移动计算和易用性;(5)支持Web的异构数据库互连;(6)支持三层结构的应用程序服务器。

第二章 关系数据库系统

1、 试解释下列概念:

笛卡尔乘积,关系,属性,元组,关系模式,候选键,主键,键属性,外部键 解答:

笛卡尔乘积:设D1、?、Dn是n个域。D1、?、Dn上的笛卡尔乘积定义为集合D1×…×Dn={(d1,?,dn)|di∈Di,1≤i≤n}。

关系:笛卡尔乘积D1×…×Dn的任意一个子集合称为一个定义在域D1、?、Dn上的关系。

属性:关系的属性是为关系的域附加的名字。

元组:设A1 、A2 、?、An是值域为D1 、D2 、?、Dn的n个属性。具有属性A1 、A2 、?、An的关系R是一个元组集合,其中每个元组是一个映射集合

{{A1}→D1,{A2}→D2,?,{An}→Dn}

关系模式:关系模式是一个系统R(U,D,DOM,I,F),其中,R是关系名,U是R的属性集合{A1 、A2 、?、An},D是U中的属性集合{D1 、D2 、?、Dn},DOM是U到D的映射,I是完整性约束集合,F是属性键的函数依赖关系。

候选键:关系模式R(U)的属性集合k?U是候选键,如果①R(U)的任何一个关系实例的任意两个元组在属性集合k上的值都不相同;②k的任何子集都不满足条件①。 主键:一个关系模式可能具有多个候选键。当一个关系中具有多个候选键时,我们选择一个作为该关系模式的主键。

属性:候选键中的属性称为键属性。

外部键:设X是关系模式R(U)的一个属性集合。如果X是另一个关系模式R’(U’)的主属性,则称X是R(U)关于R’(U’)的外部键。

2、 试述关系数据模型的完整性约束规则。

解答:

(1)实体完整性约束。如果A是关系模式R(U)的主属性,则A不能接受空值,即R(U)的任何一个实例关系中不存在任何元组在A上的值为空值。“空值”在这里是指未知或不存在。保证主属性不空与关系模式用主键唯一识别元组是统一的,只有这样才能体现用关系来描述实体。

(2)关联完整性约束。设X是关系模式R(U)关于关系模式R’(U’)的外部键。如果K是R(U)的关系实例的一个元组的外部键值,则R’(U’)实例中必存在一个元组T,T在X上

的值为K。

3、 集合论中的关系与关系数据库中的关系有何不同?

解答:

集合论中的关系可以是无限关系,但是无限关系在数据库系统中无意义。 4、试回答下列问题:

(1)可以表示任何关系代数操作的五种基本代数操作是什么? (2)连接、等值连接、自然连接、复合连接、半连接的区别是什么? (3)元组关系演算表达式和域演算表达式的区别是什么? 解答;

(1)可以表示任何关系代数操作的五种基本代数操作是并操作,差操作,笛卡尔乘积,投影操作和选择操作。

(2)设R是n元关系,S是m元关系,A是R的属性,B是S的属性,A和B的值域具有相同的数据类型,θ∈{=,≠,>,<,≥,≤}。R和S的连接操作R??AθB S

就是

在R和S的笛卡尔乘积R×S中选择满足条件AθB的元组。等值连接就是θ为“=”时的连接操作。自然连接是除去重复属性的等值连接,而且要求连接属性必须是两个关系的公共属性。复合连接类似于自然连接,只是连接结果不包含连接属性。半连接R?

(3)元组关系演算表达式和域演算表达式的区别在于公式中的变量的不同。元组关系演算表达式的一般形式为{t|φ(t)},变量t是φ中唯一的自由元组变量。域演算表达式的一般形式为{t1t2?tk|φ(t1t2?tk)},其中t1、t2、?、tk分别是元组变量t的各个分量的域变量。 5、关系R、S和S’如图2-1所示,试计算: (1)R∪S’;(2)R-S’;(3)R??(4)R??A=C S;

S;(5)σ

A=C(R×S)

关系R 关系S 关系S’

图2-1

解答:

A a c d B b b e B b e b C C a d A b c b B c b d 本题各小题的结果如图2-2所示:

(1)R∪S’ (2)R-S’ 3)R??

(4)R??S (5)σ

图2-2

6、设有如图2-3所示的关系R、S和T,计算: (1)R1=R∪S (2)R2=R-S (3)R3=R??T (4)R4=R??T A

A=C(R×T)

A=C(R×S)

A=C S

A a c d b b B B b e c d A A d B B e A a c d B B b e B e b b C a c d A a a c c d B b b b b e C c d c d a A a d d B b b e B e b b C a c d R S T

图2-3 关系R、S和T

解答:本题各小题的结果如图2-4所示。

R1 R2 R3 A a b c d b d B D e c a a e

R4 R5 R6 ?? A a a a b b c B D d d e e c B b c b c b b C b c d c d d

图2-4 计算结果

7、设有如图2-5所示的关系R、W和D,计算: (1)R1=П(2)R2=σ

Y,T(R) p>5∧T=e(R)

A A b c B D e c A d b d B A a c B b c b C b c d

A A b c B D e c A c B c C c A a b c A a a a b b c B d d d e e c B b c b c b b C b c d c d d (3)R3=R??W

(4)R4=П

[2],[1],[6](σ[3]=[5](R×D))

(5)R5=R÷D

R W D

图2-5关系R、W和D

解答:本题各小题的结果如图2-6所示。

R1 R2

R3 R4 R5

P 2 2 7 7 Q B b g g T c c c c Y D d d d B m n m n Q B a b g g

图2-6 计算结果

8、设有如图2-7所示的三个关系S、C和SC。将下列关系代数表达式用汉语表示出来,并求其结果。

P 2 9 2 7 7 Y D f f f d

P 2 7 Q b g

Y d f e T c e d P 9 7 Q A g T E e Y F f P 2 9 2 9 7 7 Q b a b a g g T c e e d e c Y d f f e f d T C c d Y d d f B M n n T C e Y d f S

学号 98601 98602 98603 98604 98605 姓名 王晓燕 李波 陈志坚 张兵 张兵 年龄 20 23 21 20 22 C

课程号 C601 C602 C603 C604 课程名 高等数学 数据结构 操作系统 编译原理 教师姓名 周振兴 刘建平 刘建平 王志伟 SC

学号 98601 98601 98601 98601 98602 98603 98603 98603 98604 98604 98605 98605 课程号 C601 C602 C603 C604 C601 C601 C602 C604 C601 C604 C601 C603 成绩 90 90 85 87 90 75 70 56 90 85 95 80 办公室 416 415 415 415 性别 女 男 男 男 女 籍贯 北京 上海 长沙 上海 武汉 图2-7 关系S、C和SC

(1)∏2,6,7(σ

籍贯=上海

(S??SC))

(2)∏2,9,8(S??SC??σ(3)∏2,3(S??(П解答:

课程名=操作系统

(C))

1,2(SC)÷П1(C)))

(1)检索籍贯为上海的学生的姓名、学号和选修的课程号,其结果为图2-8中的R1。 (2)检索选修操作系统的学生姓名、课程号和成绩,其结果为图2-8中的R2。 (3)检索选修了全部课程的学生姓名和年龄,其结果为图2-8中的R3。

R1

姓名 李波 张兵 张兵 学号 98602 98604 98604 R2

姓名 王晓燕 张兵 课程号 C603 C603 R3

姓名 王晓燕 年龄 20 成绩 85 80 课程号 C601 C601 C604 图2-8 关系R1、R2和R3

9、设有如图2-9所示的关系S、SC和C,试用关系代数表达式表示下列查询语句。

S

S# 1 2 5 SNAME 李强 刘丽 张友 AGE 23 22 22 C

C# k1 k5 k8 CNAME C语言 TEACHER 王华 SEX 男 女 男 数据库原理 程军 编译原理 SC

程军 S# 1 2 5 2 5 5 C# k1 k1 k1 k5 k5 k8 GRADE 83 85 92 90 84 80 图2-9关系S、C和SC

(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。 (2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。 (3)检索至少选修“李强”同学不学课程的课程号(C#)。 (4)检索“李强”同学不学课程的课程号(C#)。 (5)检索至少选修两门课程的学生学号(S#)。

(6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。 (8)检索选修课程号为k1和k5的学生学号(SNAME)。 (9)检索选修全部课程的学生姓名(SNAME)。

(10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。

(11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。 解答:

本题各个查询语句对应的关系代数表达式表示如下:

(1)∏C#,CNAME(σ(2)∏S#,CNAME(σ

TEACHER=’程军’(C)) AGE>21∧SEX=’男’(C))

teacher=’程军’(C))))

(3)∏SNAME(S??(∏S#,C#(SC)÷∏C#(σ(4)∏C#(C)-∏C#(σ(5)∏S#(σ

name=’李强’(S)??SC))

[1]=[4]∧[2]≠5(SC×SC)

(6)∏C#,CNAME(C??(∏S#,C#(SC)÷∏S#(S))) (7)∏S#(SC??∏C#(σ

teacher=’程军’(C))) C#=’k1’∨C#=’k5’?)

(8)∏S#,C#(SC)÷∏C#(σ

(9)∏SNAME(S??(∏S#,C#(SC)÷∏C#(C))) (10)∏S#,C#(SC)÷∏C#(σ

C#=2(SC))

cname=’C语言’(C))))

(11)∏S#,SNAME(S??∏S#(SC??(σ

第三章 关系数据库语言SQL

1、 简述关系数据库语言SQL的特点。

解答:

作为关系数据库的标准语言该语言具有以下特点: (1) 语言功能的一体化; (2) 模式结构的一体化; (3) 高度非过程化的语言; (4) 面向集合的操作方式;

(5) 两种操作方式、统一的语法结构; (6) 语言简洁、易学易用。

2、设有图书登记表TS,具有属性:BNO(图书编号),BC(图书类别),BNA(书名),AU(著者),PUB(出版社)。按下列要求用SQL语言进行设计: (1)按图书馆编号BNO建立TS表的索引ITS。 (2)查询按出版社统计其出版图书总数。 (3)删除索引ITS。 解答:

(1) USE TS

INDEX ON BNO TO ITS

(2) SELECT PUB, COUNT(BNO)

FROM TS GROUP BY PUB

(3) DELETE FILE ITS.IDX 3、已知三个关系R、S和T如图3-1所示。

R S T

A a1 a1 a2 a2 B b1 b2 b1 b2 C 20 22 18 a2 A a1 a2 a1

图3-1 关系R、S和T

试用SQL语句实现如下操作:

(1) 将R、S和T三个关系按关联属性建立一个视图R-S-T; (2) 对视图R-S-T按属性A分组后,求属性C和E的平均值。 解答:

(1) CREATE SQL VIEW R-S-T

AS SELECT R.A, B, C, S.D, E, F FROM R, S, T

WHRER R.A=S.A AND S.D=T.D

(2) SELECT AVG(C), AVG(E)

FROM R-S-T GROUP BY A

4、设有关系R和S如图3-2所示。

R S

图3-2 关系R和S

试用SQL语句实现:

(1) 查询属性C>50时,R中与相关联的属性B之值。 (2) 当属性C=40时,将R中与之相关的属性B值修改为b4。

A a1 a2 a3 B b1 b2 b3 A a1 a2 a3 C 40 50 55 D d1 d2 d2 E 15 18 24 D d2 d3 E f2 f3 解答:

(1) SELECT B

FROM R, S

WHRE R.A=S.A AND C>50

(2) UPDATE R

SET B=’b4’ WHREE A IN (SELECT A FROM S WHERE C=40)

5、已知R和S两个关系如图3-3所示。

R S

图3-3 关系R和S

执行如下SQL语句:

(1)CREATE SQL VIEW H(A, BC, C, D, E) AS SELECT A, B, R.C, D, E FROM R, S WHERE R.C=S.C; (2)SELECT B, D, E FROM H WHERE C=’C2’ 试给出:(1)视图H;

(2)对视图H的查询结果。 解答:本题的结果如图3-4所示。

A a1 a2 a3 B b1 b2 b3 C c1 c2 c3 C c1 c2 c3 D d1 d2 d3 E e1 e2 e3 视图H 对视图H的查询结果

图3-4 视图H及其查询结果

6、已知关系R如图3-5所示。

R

图3-5 关系R

试用SQL语句实现下列操作:

(1)属性A分组,求出每组中在属性C上的最大值和最小值,且将它们置于视图RVE中。

(2)在试图RVE中查询属性A=’98’的记录。 解答:

(1)CREATE SQL VIEW RVE(A, CMAX, CMIN)

AS SELECT A, MAX(C), MIN(C) FROM R GROUP BY A

(2)SELECT *

A 97 97 97 98 98 98 99 99 B b1 b2 b3 b1 b2 b3 b1 b2 C 84 92 98 72 84 95 88 94 A a1 a2 a3 B B1 b2 b3 C c1 c2 c3 D d1 d2 d3 E e1 e2 e3 B b1 b2 D d1 d2 E e1 e2 FROM RVE WHERE A=’98’

7、已知学生表S和学生课表SC。其关系模式如下:

S(SNO, SN, SD, PROV) SC(SNO, CN, GR)

其中,SNO为学号,SN为姓名,SD为系名,PROV为省区,CN为课程名,GR为分数。

试用SQL语言实现下列操作:

(1)查询“信息系”的学生来自哪些省区。

(2)按分数降序排序,输出“英语系”学生选修了“计算机”课程的学生的姓名和分数。 解答:

(1)SELECT DISTINCT PROV

FROM S

WHERE SD=”信息系”

(2)SELECT SN, GR FROM S, SC

WHERE SD=”英语系” AND CN=”计算机” AND S.SNO=SC.SNO ORDER BY GR DESC

8、设有学生表S(SNO, SN)(SNO为学生号,SN为姓名)和学生选修课程表SC(SNO, CNO, CN, G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各题:

(1)建立一个视图V-SSC(SNO, SN, CNO, CN, G),并按CNO升序排序。 (2)从视图V-SSC上查询平均成绩在90分以上的SN、CN和G。 解答:

(1)CREATE SQL VIEW V-SSC(SNO, SN, CNO, CN, G)

AS SELECT S.SNO, S.SN, CNO, SC.CN, SC.G FROM S, SC

WHERE S.SNO=SC.SNO ORDER BY CNO

(2)SELECT SN, CN, G

FROM V-SSC GROUP BY SNO HAVING AVG(G)>90 9、设有关系模式: SB(SN, SNAME, CITY)

其中,S表示供应商,SN为供应商代号,SNAME为供应商名字,CITY为供应商所在城市,主关键字为SN。

PB(PN, PNAME, COLOR, WEIGHT)

其中P表示零件,PN为零件代号,PNAME为零件名字,COLOR为零件颜色,WEIGHT为零件重量,主关键字为PN。 JB(JN, JNAME, CITY)

其中,J表示工程,JN为工程编号,JNAME为工程名字,CITY为工程所在城市,主关键字为JN。

SPJB(SN, PN, JN, CITY)

其中,SPJ表示供应关系,SN是为指定工程提供零件的供应商代号,PN为所提供的零件代号,JN为工程编号,QTY表示提供的零件数量,主关键字为SN,PN,JN,外关键字为SN,PN,JN。

如图3-6所示表示供应商(S)-零件(P)-工程(J)数据库表,写出实现以下各题功能的SQL语句:

S SPJB

PB

JB

图3-6 表SB、PB、JB和SPJB

(1) 取出所有工程的全部细节。

(2) 取出所在城市为上海的所有工程的全部细节。

JN J1 J2 J3 J4 J5 J6 J7 JNAME CITY JN1 JN2 JN3 JN4 JN5 JN6 JN7 上海 广州 南京 南京 上海 武汉 上海 PN P1 P2 P3 P4 P5 P6 PNAME COLOR WEIGHT PN1 PN2 PN3 PN4 PN5 PN6 红 绿 蓝 红 蓝 绿 12 18 20 13 11 15 SN S1 S2 S3 S4 S5 SNAME CITY N1 N2 N3 N4 N5 上海 北京 北京 上海 南京 SN S1 S1 S2 S2 S2 S2 S2 S2 S2 S2 S3 S3 S4 S4 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 PN P1 P1 P3 P3 P3 P3 P3 P3 P3 P3 P3 P4 P6 P6 P2 P2 P5 P5 P6 P1 P3 P4 P5 P6 JN J1 J4 J1 J2 J3 J4 J5 J6 J7 J2 J1 J2 J3 J7 J2 J4 J5 J7 J2 J4 J4 J4 J4 J4 QTY 200 700 400 200 200 500 600 400 800 100 200 500 300 300 200 100 500 100 200 1000 1200 800 400 500 (3) 取出重量最轻的零件代号。

(4) 取出为工程J1提供零件的供应商代号。 (5) 取出为工程J1提供零件P1的供应商代号。 (6) 取出由供应商S1提供零件的工程名称。 (7) 取出供应商S1提供的零件的颜色。

(8) 取出为工程J1或J2提供零件的供应商代号。 (9) 取出为工程J1提供红色零件的供应商代号。

(10) 取出为所在城市为上海的工程提供零件的供应商代号。

(11) 取出为所在城市为上海或北京的工程提供红色零件的供应商代号。 (12) 取出供应商与工程所在城市相同的供应商提供的零件代号。 (13) 取出上海的供应商提供给上海的任一工程的零件的代号。

(14) 取出至少由一个和工程不再同一城市的供应商提供零件的工程代号。 (15) 取出上海供应商不提供任何零件的工程的代号。

(16) 取出这样一些供应商代号,它们能够提供至少一种由红色零件的供应商提供的

零件。

(17) 取出由供应商S1提供零件的工程的代号。

(18) 取出所有这样的一些元组,使得第1个城市的供应商为第2个

城市的工程提供零件。

(19) 取出所有这样的伞元组,使得第1个城市的供应商为第2

个城市的工程提供指定的零件。

(20) 重复(19)题,但不检索两个CITY相同的三元组。 解答:

(1)SELECT * FROM JB

(2)SELECT * FROM JB WHERE CITY=”上海” (3) SELECT PN FROM PB WHERE WEIGHT=

(SELECT MIN(WEIGHT) FROM PB) (4)SELECT SN FROM SPJB WHERE JN=”J1”

(5)SELECT SN FROM SPJB WHERE JN=”J1” AND PN=”P1” (6)SELECT JB.JNAME FROM JB, SPJB WHERE JB.JN=SPJB.JN AND SPJB.JN=’S1’

(7)SELECT DISTINCT PB.COLOR FROM PB, SPJB WHERE PB.PN=SPJB.PN AND SPJB.SN=’S1’

(8)SELECT DISTINCT SN FROM SPJB WHERE JN=’J1’ OR JN=’J2’

(9)SELECT DISTINCT SPJB.SN FROM SPJB, PB

WHERE PB.PN=SPJB.PN AND SPJB.JN=’J1’ AND PB.COLOR=’红’ (10)SELECT DISTINCT SPJB.SN FROM SPJB, PB WHERE SPJB.JN=JB.JN AND JB.CITY=’上海’ (11)SELECT SPJB.SN FROM PB, JB, SPJB

WHERE SPJB.PN=PB.PN AND JB.JN=SPJB.JN AND PB.COLOR=’红’ AND (JB.CITY=’上海’ OR JB.CITY=’北京’) (12)SELECT DISTINCT SPJB.PN FROM SB, JB, SPJB

WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY=JB.CITY (13)SELECT SPJB.PN FROM SB, JB, SPJB

WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY=’上海’ AND JB.CITY=’上海’

(14)SELECT DISTINCT SPJB.JN FROM SB, JB, SPJB

WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY<>JB.CITY (15)SELECT DISTINCT JN FROM SPJB WHERE JN NOT IN

(SELECT DISTINCT SPJB.JN FROM SB, SPJB WHERE SB.SN=SPJB.SN AND SB.CITY=’上海’) (16)SELECT DISTINCT SPJB.SN FROM PB, SPJB WHERE SPJB.PN IN

(SELECT SPJB.PN FROM SPJB, SB, PB

WHERE SB.SN=SPJB.SN AND PB.PN=SPJB.PN AND PB.COLOR=’红’) (17)SELECT DISTINCT SPJB.JN FROM SB, PB, SPJB

WHERE SB.SN=SPJB.SN AND PB.PN=SPJB.PN AND SB.SN=’S1’ (18)SELECT DISTINCT SB.CITY, JB,CITY FROM SB, JB, SPJB WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN

(19)SELECT DISTINCT SB.CITY, SPJB.PN, JB.CITY FROM SB, JB, SPJB WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN

(20)SELECT DISTINCT SB.CITY, SPJB.PN, JB.CITY FROM SB, JB, SPJB WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY<>JB.CITY

第四章 数据库设计概述

1、简述数据库应用系统生存周期的每个阶段。 解答:

数据库应用软件的生命周期可以看作有三个大的时期:软件定义时期,软件开发时期和软件运行维护时期。按照规范化设计方法,从数据库应用系统设计和开发的全过程来考虑,将数据库及其应用软件系统的生命周期的三个时期又可以细分为七个阶段:

(1)应用规划:规划阶段进行系统的必要性和可行性分析,确定数据库系统在整个企业管理系统中的地位。

(2)需求分析:这一阶段是计算机人员 (系统分析员) 和用户共同收集数据库所需要的信息内容和用户对处理的要求,加以规格化和分析,以书面形式确定下来,作为以后验证系统的依据。

(3)概念设计:把用户的信息要求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何DBMS软件和硬件。

(4)逻辑设计:逻辑结构设计分为两部分,即数据库结构设计和应用程序的设计。从逻辑设计导出的数据库结构是DBMS能接受的数据库定义,这种结构有时也称为逻辑数据库结构。逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。

(5)物理设计:物理设计也分为两部分,物理数据库结构的选择和逻辑设计中程序模块说明的精确化。这一阶段的工作成果是一个完整的能实现的数据库结构。数据库物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

(6)实现:根据物理设计的结果产生一个具体的数据库和它的应用程序,并把原始数据装入数据库。

(7)运行维护:数据库系统的正式运行,标志着数据库设计与应用开发工作的结束和维护阶段的开始。

2、 简述数据库设计的基本过程。

解答:

数据库设计的基本过程:(1)需求分析阶段,综合各个用户的应用需求;(2)在概念设计阶段形成独立于具体机器,独立于各个DBMS产品的概念模式,就是E-R模型图;(3)在逻辑设计阶段将E-R模型图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;(4)根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View),形成数据库的外模式;(5)在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。 3、需求分析的主要工作有哪些?

解答:

需求分析的主要工作是:问题识别;评价和综合;建模;规格说明和评审。

4、 数据字典通常包括哪五个部分?

解答:

数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。

5、 试述数据库概念设计的内容、方法。

解答:

数据库概念设计的主要内容是把用户的信息要求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何DBMS软件和硬件。概念设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。

概念数据库设计方法主要有两种:一种是集中式设计方法;另一种是视图综合设计方法。

6、 假定一个部门的数据库包括以下的信息:

? ? ? ?

职工的信息:职工号、姓名、住址和所在部门。 部门的信息:部门所有职工、经理和销售的产品。

产品的信息:产品名、制造商、价格、型号及产品内部编号。 制造商的信息:制造商名称、地址、生产的产品名和价格。

试画出这个数据库的E-R图。 解答:

本题对应的E-R图如图4-1所示。

职工号姓名地址1m部门名经理mn产品名职工从属部门销售产品m生产n制造商产品内部编号型号价格名称地址 图4-1 E-R图

7、 视图集成中,主要解决的冲突有哪些?

解答:

视图集成中,需要解决的冲突主要有三类:命名冲突、属性冲突、结构冲突。

8、 试述逻辑数据库设计的任务、目标、步骤。

解答:

逻辑数据库设计的主要任务是把概念数据库设计阶段产生的概念数据库模式变换为逻

辑数据库模式。

逻辑数据库设计的目标包括:①满足用户的完整性和安全性要求;②动态关系至少具有第三规范形式,静态关系至少具有第一规范形式;③能够在逻辑级上高效率的支持各种数据库事务的运行;④存储空间利用效率高。

逻辑数据库设计的步骤是:①形成初始关系数据库模式;②关系模式规范化;③关系模式优化;④定义关系上的完整性和安全性约束;⑤子模式定义;⑥性能估计。

9、 一个图书借阅管理数据库要求提供下述服务:

(1)可随时查询书库中现有书籍的品种、数量与存放位置。所有各类书籍均可由书号唯一标识。

(2)可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。

我们约定:任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。 (3)当需要时,可通过数据库中保存的出版社的电报编号、电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。我们约定,一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。

根据以上情况和假设,试作如下设计: (1)构造满足需求的E-R图; (2)转换为等价的关系模型结构。 解答:

(1)满足上述需求的E-R图如图4-2所示。

借书证号姓名单位借书人m借阅n图书还书日期m1借书日期出版社名电报编号从属出版社电话书号书名数量位置邮编地址 图4-2 图书借阅管理数据库E-R图

(2)转换为等价的关系模型结构如下: 借书人(借书证号,姓名,单位)

图书(书号,书名,数量,位置,出版社名) 出版社(出版社名,电报,电话,邮编,地址)

借阅(借书证号,书号,借书日期,还书日期)

10、分析关系模式:STUDENT(学号,姓名,出生日期,系名,班名,宿舍区),指出其候选关键字,最小依赖集和存在的传递函数依赖。 解答:

经分析有:

候选关键字:学号(每个学生只有唯一的学号)

最小依赖集:{学号→姓名,学号→出生日期,学号→班号,系名→宿舍区,班号→系名}

存在传递函数依赖:

学号→系名→宿舍区,所以宿舍区传递依赖于学号; 班号→系名→宿舍区,所以宿舍区传递依赖于班号; 学号→班号→系名,所以系名传递依赖于学号。 11、设有关系模式R(C, T, S, N, G),其上的函数依赖集:

F={C→T, CS→G, S→N} 求出R的所有候选关键字。 解答:

根据候选关键字的定义,R的候选关键字只可能由F中各个函数依赖的左边属性组成,即C, S,所以组成候选关键字的属性可能是CS。

计算可知:(CS)+=CGNST,即CS→U 而:C+=CT,S+=NS

所以R只有一个候选关键字CS。

12、设有关系模式R(A, B, C, D, E),其上的依赖集:

F={A→BC, CD→E, B→D, E→A} (1)计算B。

(2)求出R的所有候选关键字。 解答:

(1)令X={B},X(0)=B,X(1)=BD,X(2)=BD,故B+=BD。

(2)根据候选关键字定义,R的候选关键字只能由F中各个函数依赖的左边属性组成,即A, B, C, D, E,由于A→BC(A→B, A→C), B→D, E→A,故:

?

可除去A, B, C, D,所以组成关键字的属性可能是E。

计算可知:E+=ABCDE,即E→U,所以E是一个候选关键字。 ?

可除去A, B, E,所以组成关键字的属性可能是CD。

计算可知:(CD)+=ABCDE,即CD→U,但C+=C,D+=D,所以CD是一个候选关

键字。

+

? 可除去B, C, D, E,所以组成关键字的属性可能是A。

计算可知:A=ABCDE,即A→U,所以A是一个候选关键字。

+

? 可除去A, D, E,所以组成关键字的属性可能是BC。

计算可知:(BC)+=ABCDE,即BC→U,但B+=BD,C+=C,所以BC是一个候选关键字。

R的所有候选关键字A, BC, CD, E。

13、设关系模式R的属性集合为{A, B, C, D},其函数依赖集F={A→B, C→D},试求此关系的候选键。 解答:

∵A→B ∴AC→BC ∵C→D ∴AC→AD ∴AC→ABCD 又∵A+=AB, C+=CD ∴此关系的候选键为AC。

14、设关系R的函数依赖集合F包含{Yj→Xj | j=1, 2, …,k}。试证明Y1Y2…Yk→X1X2…Xk。 证明:

(1)设k=2,则F包含{Y1→X1,Y2→X2}。 ∵Y1→X1∴Y1 Y2→X1 Y2 ∵Y2→X2∴Y1 Y2→Y1 X2

∴Y1 Y2→X1 X2 Y1 Y2,即Y1 Y2→X1 X2

(2)设k=n时,Y1Y2…Yn→X1X2…Xn,则当k=n+1时,F包含{Yj→Xj | j=1, 2, …,n}∪{ Yn+1→Xn+1 }。

∵Y1Y2…Yn→X1X2…Xn∴Y1Y2…YnYn+1→X1X2…XnYn+1 ∵Yn+1→Xn+1∴Y1Y2…YnYn+1→X1X2…XnXn+1

∴Y1Y2…YnYn+1→X1X2…XnXn+1Yn+1,即Y1Y2…YnYn+1→X1X2…XnXn+1 综上,所以Y1Y2…Yk→X1X2…Xk。

15、问下列关系模式最高属于第几范式,并解释其原因。

(1)R的属性集合为{A, B, C, D},函数依赖集合为F={B→D, AB→C}

(2)R的属性集合为{A, B, C, D, E},函数依赖集合为F={AB→CE, E→AB, C→D} (3)R的属性集合为{A, B, C, D},函数依赖集合为F={B→D, D→B, AB→C} (4)R的属性集合为{A, B, C},函数依赖集合为F={A→B, B→A, A→C}

(5)R的属性集合为{A, B, C},函数依赖集合为F={A→B, B→A, C→A} (6)R的属性集合为{A, B, C, D},函数依赖集合为F={A→C, D→B} (7)R的属性集合为{A, B, C, D},函数依赖集合为F={A→C, CD→B} 解答:

(1)1NF。因为AB是关系模式R的键,对于非主属性C不完全依赖于AB。所以不满足2NF。

(2)2NF。因为AB是关系模式R的键,非主属性C、D、E都完全依赖于AB。所以满足2NF。但是非键属性D传递依赖于AB。所以不满足3NF。

(3)1NF。因为AB是关系模式R的键,非主属性D不完全依赖于AB。所以不满足2NF。

(4)BCNF。因为A、B是关系模式R的候选键,对于每一个函数依赖X→Y,X均为候选键。

(5)2NF。因为C为关系模式R的键,非主属性A、B都完全依赖于C。所以满足2NF。但是非键属性B传递依赖于C。所以不满足3NF。

(6)1NF。因为AD为关系模式R的键,非主属性B、C都不完全依赖于AD。所以不满足2NF。

(7)1NF。因为AD为关系模式R的键,非主属性C不完全依赖于AD。所以不满足2NF。

16、设关系R的属性集合为{A, B, C, D, E},函数依赖集为F={A→BC, CD→E, B→D, E→A}。ρ={R1(ABC), R2(ADE)}和ρ={R3(ABC), R4(CDE)}是否具有无损连接性的分解?给出证明。 解答:

ρ={R1(ABC), R2(ADE)}具有无损连接性。 (1)构造矩阵S

R1 R2 A a1 a1 B a2 b22 C a3 b23 D b14 a4 E b15 a5 (2)矩阵变换。由函数依赖A→BC,使得b22=a2,b23=a3,如下:

R1 R2 A a1 a1 B a2 a2 C a3 a3 D b14 a4 E b15 a5 由于第二行已经成为a1、a2、a3、a4、a5,所以ρ={R1(ABC), R2(ADE)}具有无损连接性。 ρ={R1(ABC), R2(CDE)}不具有无损连接性。 首先构造矩阵

R1 R2 A a1 b21 B a2 b22 C a3 a3 D b14 a4 E b15 a5 进行矩阵变换。由函数依赖A→BC, CD→E, B→D, E→A,矩阵S均不发生变化。所以ρ={R1(ABC), R2(CDE)}不具有无损连接性。

17、设关系R具有属性集合{O, I, S, Q, D, B},函数依赖集合为F={S→D, I→B, IS→Q, B→O}。求解下列各题:

(1)计算S+、I+、(IS)+、(SB)+、(ISB)+ (2)求出R的所有候选键; (3)求R的最小函数依赖集;

(4)把R分解为3NF并具有无损连接性和函数依赖保持性。 解答:

(1)S+={S, D}、I+={I, B, O}、(IS)+={I, S, Q, D, B, O}、(SB)+={S, B, D, O}、(ISB)+={I, S, B, D, Q, O}

(2)∵IS在F中所有函数依赖的右部均未出现,∴候选键中一定包括IS。而(IS)+={I, S, Q, D, B, O},因此IS是R的唯一候选键。

(3)函数依赖集F本身就是一个最小依赖集。 (4)ρ={R1(S, D), R2(I, B), R3(I, S, Q), R4(B, O), R5(I, S)} 18、关系模式优化的目的和原则是什么? 解答:

关系模式优化的目的是为了提高数据库系统的效率。关系模式的优化是根据需求分析的概念设计中定义的事务的特点,对关系模式进行分解,提高数据操作的效率和存储空间的利用率,关系模式优化有水平分解和垂直分解两种关系优化方法。

水平分解是把关系的记录分为若干子集合,每个子集合定义为一个子关系,以提高系统的效率。水平分解的规则有:(1)根据“80/20原则”,一个大型关系中,经常被使用的数据只是很有限的。可以把经常被使用的数据分解好粗来,形成一个子关系;(2)如果关系R上具有n个事务,而且多数事务存取的数据不相交,则R可分解为少于或等于n个子关系,使每个事务存取的数据形成一个关系。

垂直分解的基本原则是:经常在一起使用的属性从R中分解出来形成一个独立的关系。垂直分解提高了一些事务的效率,但也可能使某些事务不得不执行连接操作,从而降低了效率。于是,决定是否垂直分解取决于是否垂直分解后R上所有事务的总效率得到了提高。垂直分解需要确保无损连接性和函数依赖保持性。 19、试述试述物理数据库设计的任务、目标和步骤。 解答:

物理数据库设计的任务是在逻辑数据库设计基础上,为每个关系模式选择合适的存储结构和存取方法,使得数据库上的事务能够高效率的运行。物理数据库设计分为三步:①分析影响物理数据库设计的因素;②为关系模式选择存取方法;③设计关系、索引等数据库文件的物理存储结构。

20、聚集存取方法具有什么优点,适用于那些情况。 解答:

聚集存取方法的优点是把经常连接操作的多个关系的记录以连接属性为中心分类存储,可以提高连接操作的效率。适用于经常进行连接操作的关系,也适用于单关系,以节省存储空间、提高查询处理的效率。

21、哪些属性宜建立索引、哪些不宜建立索引? 解答:

凡符合下列条件之一,可以考虑在有关属性上建立索引: ? ? ? ?

主键或外键上一般都建有索引。

对于以读为主或只读的表,如果存储空间允许,可以多建索引。

对于等值查询,如果满足条件的元组是少量的,则可以考虑在有关属性上建立索引。 对于范围查询,最好在有关的属性上建立簇集索引,如果已在其它属性上建立簇集索引,可以考虑建立非簇集索引。 ?

有些查询可以直接从索引直接得到结果,不必访问数据块。对于这种查询,可以考虑在有关属性上建立索引。这些查询包括:查询某属性的MIN、MAX、AVG、SUM、COUNT等聚集函数值(无GROUP BY子句);查询某属性值EXIST或NOT EXISTS。 凡是满足下列条件之一的属性或表,不宜建立索引: ?

不出现或很小出现在查询条件中的属性。

? ? ? ? ?

属性值很少的属性。

属性值分布严重不均的属性。 经常更新的属性或表。 过长的属性。 太小的表。

第五章 数据库管理系统

1、 什么是事务,简述事务主要特性。 解答:

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单元。

事务主要具有四个特性:原子性、一致性、分离性和持久性。 2、 没有控制的并发操作可能产生的主要问题有哪些? 解答:

在事务并发执行过程中,如果不加控制地并发执行,会产生三个问题:丢失更新;读脏数据;读值不可复现。 3、试解释下列术语和概念:

(1)事务的活动状态、部分提交状态、失败状态、异常结束状态、提交状态; (2)事务的原子性、数据库正确保持性、操作结果永久保持性、独立性、可串行性; (3)UNDO操作和REDO操作各表示什么含义? 解答:

(1)活动状态:事务开始运行就进入活动状态,直到部分提交或失败。部分提交状态:事务执行完最后一条语句,即执行完END_TRANSACTION命令之后进入部分提交状态。失败状态:发现一个事务不能正常运行下去时,该事务进入失败状态,数据库管理系统必须撤销它对数据库和其他事务的影响。异常结束状态:当一个失败事务对数据库和其他事务的影响被撤销,数据库恢复到该事务开始执行前的状态以后,该失败事务退出数据库系统,进入异常结束状态。提交状态:当一个事务成功的完成了所有操作,并且所有操作对数据库的影响都以永久的存入数据库之后,该事务退出数据库系统,进入提交状态,正常结束。 (2)事务的原子性:每个事务必须满足如下的性质:该事务中的所有操作要么全部被成功完成而且这些操作的结果被永久的存储到数据库中,要么这个事务对数据库和其他事务没有任何影响。这个性质称为事务的原子性。数据库正确保持性:一个事务的正确执行必须把数据库从一个正确状态转换为另一个正确状态。操作结果永久保持性:如果一个事务使数据库发生了改变,而且该事务已经进入了提交状态,则这些改变将不会因以后的失败而丢失。独立性:一个事务再进入提交状态之前,它对数据库的更新不可由其他事务读取。可串行性:并行运行的多个事务的运行效果与这些事务按某种次序顺序运行的效果相同。

(3)UNDO操作:撤销事务中指定数据操作对数据库的影响。REDO操作:重新执行事务中指定数据库操作。

4、死锁是如何发生的?如何发现和解除死锁? 解答:

两个并发执行的事务可能发生死锁。当每个事务都企图对另一事务已加锁的数据单元再行加锁时,就可能发生死锁。一个事务如果申请锁而未获准,则需等待其他事务释放锁,这就形成了事务间的等待关系。当事务之间出现循环等待时,如果不加干预则会一直等待下去,即出现死锁。因此,死锁发生时,至少有两个或多个事务同时处于相互等待状态,即每个事务都在等待其他事务释放锁才能继续执行。

如果允许数据库中出现死锁,应尽可能及时发现和处理,死锁的检测一般使用超时法或等待图法。

发现死锁后,靠事务本身无法打破死锁,必须由DBMS干预。DBMS对死锁一般作下列处理:在循环等待的事务中,选一个事务,将该事务撤销,释放其获得的锁及其它资源;将释放的资源分配给等待该事务的其它事务。 5、数据库系统可能发生的主要故障有哪些? 解答:

数据库系统可能发生的主要故障有三种:事务故障、系统故障和存储介质故障。 6、 简述DBMS恢复数据库的措施和方法。 解答:

BMS采用的主要措施和技术有事务提交、数据库转储、事务日志和检查点技术,以及先写日志的原则等。综合使用这些技术才能完成对数据库的恢复。 7、 数据库的安全性指的是什么? 解答:

数据库的安全性是指保护数据库避免不合法的使用,以免数据的泄漏、更改或破坏。 8、 DBMS的安全措施通常分为哪两级? 解答:

DBMS的安全措施通常分为授权登录和授权访问两级。 9、 举例说明统计数据库的安全性。 解答:

一般地,数据库中的统计数据是可以公开的,而个别数据的值却是保密的。例如,一个单位的人均奖金数可以公开,而每个人的奖金数可能保密。

统计数据泄密的问题:即个别的数据值可从统计数据中推断出来。 例1:下面两个查询都是合法的查询语句: (1) 本公司共有多少女高级程序员?

(2) 本公司女高级程序员的工资总额是多少?

如果第1个查询的结果是\,那么第2个查询的结果就是这个程序员的工资数。使得数据的安全受到危害。

例2:某个用户A想知道另一用户B的工资数额,他可以通过下列两个合法查询获取: (1) 用户A和其他N个程序员的工资总额是多少? (2) 用户B和其他N个程序员的工资总额是多少?

假设第1个查询的结果是X,第2个查询的结果是Y,由于用户A知道自己的工资Z,那么他可以计算出用户B的工资=Y-(X-Z)。

10、试述SQL语言的授权机制,即权限的种类,授权命令和撤销权限命令。 解答:

关系数据库中有关元组操作的权限通常有如下几种: ●只读权限:只允许用户读取数据。 ●插入权限:只允许用户插入新数据。 ●修改权限:只允许用户修改数据。 ●删除权限:只允许用户删除数据。 对数据库模式的操作权限分为:

●索引权限:允许用户对索引进行创建和删除。

●创建和删除权限:允许用户创建和删除数据库及关系表。 ●修改权限:允许用户增加、修改和删除关系表中的属性。

权限的最高拥有者是数据库管理员DBA。DBA可以把权限授予某用户,也可以撤消某用户的权限。被授权的用户可以被授予有权把自己得到的权限再授予其他的用户。所有被授予的权限也都可以被收回,既撤消权限。 11、数据库的完整性是指的是什么? 解答:

所谓数据库完整性,是衡量数据库数据质量好坏的一种标志,是确保数据库中数据的一致,正确性以及符合企业规则的一种思想,是使无序数据条理化,确保正确的数据被存放在正确位置的一种手段。数据库的完整性是指数据的正确性和相容性。 12、数据库的完整性约束有哪些? 解答:

完整性约束条件作用的对象可以是关系、元组和列三种。

●列约束主要是列的数据类型、取值范围、精度、排序等约束条件。 ●元组的约束是元组中各个字段间的联系的约束。

●关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。

第六章 数据库应用开发环境和工具

1、 试述ODBC的层次结构和工作原理。 解答:

ODBC采用四层的体系结构,包括客户端应用程序、驱动程序管理器、数据库驱动程序和数据库服务器(数据源)本身。

ODBC驱动程序类似于Windows下的打印机驱动程序,通过ODBC驱动程序管理器统一对应用程序对数据库的访问进行规范化管理:

● ODBC的所有驱动程序都是动态连接库DLL(Dynamic Link Library),由 ODBCADM.DLL驱动程序管理器统一进行管理。

● 任何DBMS,只要提供了并符合ODBC接口规范的DLL库,便可以加载到系统中被ODBC建立的应用程序所访问。

● ODBC.DLL通过WINDOWS系统注册表(或ODBC.INI文件)中的数据源 (Data Source)了解到对某个数据库应调用哪个DLL。每个数据源对应一个数据库驱动程序库(DBMS或ISAM文件)。

2、 数据库应用系统中三层逻辑模型的实现方法有哪几种?各自特点是什么? 解答:

数据库应用系统中三层逻辑模型的实现方法有:

(1)胖客户机实现。胖客户机的实现是在客户机上运行业务和表达服务。这种实现物理上只有两层,服务器只提供数据服务。这种方法有两点不足。首先,当应用程序在客户计算机上增加时,客户计算机需要更为强大的功能,这将增加系统开销,因为一个系统经常带有多个客户机。当系统带有数以千百万的客户机时,这种方法会变得过于昂贵。另一点不足是可能增加维护费用。每次对系统的合法性逻辑和业务规则的改动将导致升级客户机程序。如果系统有相当数量的客户机,这就是个问题。胖客户机实现的最大优点是减少网络流量,如果合法性和业务规则不必由数据库决定的话。这种情况下,只有通过合法性逻辑的数据能传向服务器。

(2)瘦客户机实现。在瘦客户机实现中,业务服务位于服务器端,业务逻辑通常表现为存储过程或数据库触发器。这种实现像胖客户机实现一样物理上只有两层。这种方法的优点是减少系统开销,因为瘦客户机需要更少的系统资源,这对于带有许多客户机的系统很重要。而且,维护费用也比胖客户机系统少些,因为代码在服务器端集中控制。如果业务规则依赖于数据库的数据,瘦客户机实现减少网络流量。这种方法的主要不足是存储过程缺乏灵活性。

(3)多层客户/服务器实现。最简单的多层实现就是三层实现。在这种实现中,业务服务作为一个单独进程运行。该进程可配置为在数据服务所处的同一台服务器上或者在另一台

不同的服务器上。 这种实现的关键特点是数据服务、业务服务和表达服务能作为分离的三个进程运行于不同的计算机上。

(4)浏览器/服务器实现。Web技术将表达服务划分为浏览器客户机和Web服务器。提高客户机数目导致使用类似Microsoft Transaction Server(MTS)的工具,它被设计用来使用COM对象提高中间层的灵活性。划分表达服务或增加COM构件到中间层,结果是使物理实现增加了层次。这一途径的好处在于多层系统更具有规模性和灵活性。源程序代码驻留在Wer服务器上,客户端使用系统自带的浏览器即可工作。如果业务规则占用过多计算机资源,从数据服务中分离出中间层并在单独的计算机上运行代码可能更好些。但是,这一解决方案增加了网络流量,并且当流量过于密集时系统会慢下来。 3、利用ADO访问数据库的一般步骤? 解答:

(1)建立连接:连接到数据源。同时,可确定对数据源的所有更改是否已成功或没有发生

(2)创建命令:指定访问数据源的命令,同时可带变量参数或优化执行; (3)执行命令(SQL 语句);

(4)操作数据:如果这个命令使数数据按表中行的形式返回记录集合,则将这些行存储在易于检查、操作或更改的缓存中;

(5)更新数据:适当情况下,可使用缓存行的内容来更新数据源的数据; (6)结束操作:断开连接。

第七章 大型关系数据库介绍

1、SQL Server有哪些特点? 解答:

(1)SQL Server是客户机/服务器关系型数据库管理系统RDBMS; (2)支持分布式数据库结构;

(3)SQL Server与WindowsNT/2000完全集成; (4)SQL Server与 Microsoft BackOffice 服务器类集成。 2、SQL Server的主要服务有哪些? 解答:

(1)MSSQL Server Service服务; (2)SQL Server Agent服务;

(3)分布式事务协调器MS DTC服务。 3、SQL Server 2000有哪几个版本?各自特点? 解答:

(1)SQL Server2000企业版:该版本支持了SQL Server的全部特性,为关键商业任务和Internet方案提供高级可伸缩性和可靠的功能,可作为大型web站点,企业OLTP(联机事务处理)以及数据仓库系统的数据库服务器。由于它可以充分利用最高端硬件,支持32颗CPU和64GB内存,在执行多处理时可以使系统性能得到显著的提高。

(2)SQL Server2000标准版:可用于小型或中型组织的经济性版本,除去了企业版中的高级可伸缩性和一些高级的分析功能,标准版最多支持4颗CPU和2GB内存。

(3)SQL SERVER2000个人版:它包括了全套的管理工具和标准版的大多数功能,并为个人使用进行了优化,除了在服务器操作系统上运行,也可以在非服务器操作系统上运行。该版本支持双处理器系统,性能为单个用户及小型工作组进行了优化。该版本支持在非服务器的操作系统上运行,包括有WINDOWS 2000 PROFESSIONAL,WINDOWS NT

WORKSTATION 4.0 以及 WINDOWS 9X。当并发用户超过五个时,性能会随工作负荷的增加而降低。

(4)SQL SERVER2000开发人员版:该版本允许开发人员在SQL SERVER 的顶端生成任意类型的应用程序。包括企业版的所有功能。 4、SQL Server的管理工具有哪些?各自作用? 解答:

(1)企业管理器(Enterprise Manager):Enterprise Manager可以在客户端和服务器端运行。它是图形化的用户界面,是服务器和客户端的主要管理工具。服务器端的SQL Enterprise Manager可以管理服务器和数据库及数据库对象,设置对数据库对象的访问许可。其他功能如执行SQL Server的管理任务,创建数据库、备份和恢复数据库、数据转换、创

建数据库图表和维护计划,执行各种Web管理和任务调度等。客户端的SQL Enterprise Manager,可用于 设计和创建数据库、查询数据等。

(2)SQL Server Query Analyzer是基于windows的产品,主要用于执行SQL脚本。它提供彩色代码查询编辑器,和图形化的执行计划。使用它可以实现:执行SQL语句;分析查询计划;显示查询统计信息;实现索引分析。

(3)服务管理器(SQL Server Service Manager):启动、停止和暂停SQL Server服务的图形实用程序。

(4)SQL Server Setup:用于安装、删除和重新配置SQL Server的应用程序。 (5)SQL Server 向导:指导用户完成复杂任务的工具集合。

(6)客户端网络实用工具(SQL Server Client Network Utility):配置客户端的连接,测定网络库的版本信息。

(7)事件查看器(SQL Server Profiler):一个图形化的工具,能显示指定服务器的SQL事务活动,可以观察用户活动,跟踪运行过程。它的输出可以存为脚本文件。 5、Oracle 数据库的特点有哪些。 解答:

(1) 支持大型数据库和多用户的高性能失误处理。Oracle 支持大型数据库可达到8TB大小。具有很高的可维护性,实现分布式数据库操作的透明性。

(2) 具有可移植性、可兼容性和可连续性。由于Oracle数据库管理系统可以在许多不同的操作系统上运行,在Oracle上开发的应用软件可移植到任何操作系统上;Oracle软件同工业标准兼容,可以在任何操作系统中运行;可连续性指Oracle允许不同类型的计算机和操作系统通过网络共享信息。

(3) 先进性 。Oracle是数据库领域的排头兵,从最早的关系数据库到全面支持internet的Oracle8i,其技术都处于领先地位。 6、简述Oracle 数据库系统的体系结构。 解答:

在ORACLE系统中,一个数据库的存储空间被划分成一个或多个逻辑区域,称为表空间(TABLESPACE)。数据库创建时,系统会自动地生成名为SYSTEMTABLESPACE的表空间、其中存放ORACLE系统数据库字典和其他数据库表。表空间由DBA根据需要建立和扩充,数据库管理员可以通过表空间控制磁盘空间的分配,控制数据库用户对指定空间的使用限额,控制数据库的有效性(ONLINE 或OFFLINE)等。一个表空间实际上是由一个或多个操作系统文件组成。

ORACLE系统的基本结构包括逻辑存储结构和物理存储结构。逻辑存储结构由段

(SEGMENT)、范围(EXTENTS)等对象构成,物理存储结构由数据文件、数据块(DATABLOK)等对象构成。

本文来源:https://www.bwwdw.com/article/yyw8.html

Top