数据库原理及应用课后答案

更新时间:2023-09-25 09:37:02 阅读量: 综合文库 文档下载

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

第一章

选择题

1、A。

从数据库管理系统的角度看,数据库系统的结构通常分为三级模式的总体结构,在这种模式下,形成了二级映像,实现了数据的独立性。其中三级模式结构指的是外模式、模式和内模式,二级映像指的是外模式/模式映像、模式/内模式映像。对于外模式/模式映像,当模式改变时,相应的外模式/模式映像作相应的改变,以使外模式保持不变,而应用程序是依据数据的外模式来编写的,外模式不变,应用程序就没必要修改,这保证了数据与程序的逻辑独立性。对于模式/内模式映像,当数据库的存储结构变了,模式/内模式映像会作相应的改变,以使模式保持不变,而模式不变,与模式没有直接联系的应用程序也不会改变,这保证了数据与程序的物理独立性。

数据逻辑独立性指的就是当模式改变时,外模式和应用程序不需要改变,所以选项A正确。 C选项的内模式改变,模式不变指的是数据的物理独立性,所以C选项不正确,B选项中前后两句与C选项相比顺序不符,所以B选项不正确。D选项中,应为“模式和应用程序不变”,不应为“外模式”,所以D选项不正确。 2、B。

DB指的是数据库(DataBase),DBMS指的是数据库管理系统(DataBase Management System),DBS指的是数据库系统(DataBase System),DBA指的是数据库管理员(Database Administrator),Data指的是数据。

由书中概念易得DBS(数据库系统)包括DBMS(数据库管理系统),DBMS管理和控制DB(数据库),而DB载入、存储、重组与恢复Data(数据)。所以B选项正确。 3、C。

数据库系统的特点有:?、实现数据共享;?、减少数据冗余度;?、保持数据的一致性;?、数据的独立性;?、安全保密性;?、并发控制;?、故障恢复 由以上可得C选项错误,应改为数据冗余度“低”。 4、C。

DB是长期储存在计算机内、有组织的、可共享的大量数据集合;DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问计算机软件、硬件和数据资源组成的系统;DBMS是把用户对数据的操作转化为对系统存储文件的操作,有效地实现数据库三级(外模式、模式和内模式)之间的转化;MIS指的是管理信息系统(Management Information System),是一个以人为主导,利用计算机硬件、软件及其他办公设备进行信息的收集、传递、存贮、加工、维护和使用的系统。由以上概念可知,位于用户和数据库之间的一层数据管理软件是DBMS。所以C选项正确。 5、C。

书中图1.6明确指出模式/内模式映像把概念数据库与物理数据库联系起来,所以C选项正确。 6、C。

数据库有这样三层关系,第一层和第三层不能直接发生关系,所以D选项不正确,内模式与外模式没有直接关系,应改为“模式与应用程序不变”。由数据库的三级模式、两级映像概念可知,数据的物理独立性指的是内模式改变,模式(即概念模式)不变,所以C选项正确,而B选项先后顺序不正确。A选项指的是数据的逻辑独立性,与题意不符,故不正确。 7、D。

模式也称逻辑模式和概念模式,是数据库中全体数据逻辑结构和特征的描述,描述现实世界中的实体及其性质与联系,是所有用户的公共数据视图;外模式也称子模式或用户模式,它是用以描述用户看到或使用的数据的局部逻辑结构和特性的,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据;内模式也称存储模式,是整个数据库的最底层表示,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。由以上概念可知,D选项正确。 8、A。

同第7题答案概念相同,故A选项正确。 9、C。

同第7题答案概念相同,故C选项正确。 10、D。

数据库系统的三级模式提供了两级映像,而两级映像实现了二级独立性,从而达到了数据独立性。

简答题

1、简述数据管理技术的发展历程。

答:数据管理技术的发展共经历了三个阶段。 ㈠、人工管理阶段

20世纪50年代的计算机主要用于科学计算,数据处理都是通过手工方式进行的。当时外存没有磁盘等直接存取的存储设备,数据只能存放在卡片或纸带上;软件方面只有汇编语

言,没有操作系统,数据的处理是批处理,程序运行结束后数据不保存。这些决定了当时的数据管理主要依赖于人工。 ㈡、文件系统阶段

20世纪50年代年代末到60年代中期,计算机技术有了很大的发展,计算机的应用也从科学计算发展到了文档、工程管理。这时计算机在硬件上有了大容量的磁盘、磁鼓等外存设备;软件上有了操作系统、高级语言,出现了专门管理数据的文件系统;处理方式上不仅有批处理,还增加了联机处理方式。 ㈢、数据库管理阶段

20世纪60年代后期,随着计算机应用越来越广泛,需要管理的数据规模也日益增长。这时硬件上已有大容量的硬盘出现,处理数据的方式上联机实时处理的需求也越来越多。在这种背景下,原先的以文件系统管理数据的方式已经不再适应发展的需要,于是人们对文件系统进行了扩充,研制了一种结构化的数据组织和处理方式,才出现了真正的数据库系统。数据库为统一管理与共享数据提供了有力支撑,这个时期数据库系统蓬勃发展形成了有名的

“数据库时代”。数据库系统建立了数据与数据之间的有机联系,实现了统一、集中、独立地管理数据,使数据的存取独立于使用数据的程序,实现了数据的共享。 2、简述数据、数据库、数据库管理关系、数据库系统的概念。 答:?、数据(Data):描述事物的符号记录,是数据库的处理对象

?、数据库(DataBase,简称 DB):长期存放在计算机存储设备上有组织的、可共享的、相关的数据集合。是数据库系统DBS的核心,是被管理的对象。

?、数据库管理系统(DataBase Management System,简称DBMS):把用户对数据的操作转化为对系统存储文件的操作,有效地实现数据库三级(外模式、模式和内模式)之间的转化,负责对DB进行管理与维护。

?、数据库系统(DataBase System,简称DBS):实现有组织地、动态地存储大量关联数据,方便多用户访问计算机软件、硬件和数据资源组成的系统,即具有管理和控制数据库功能的计算机系统。

3、简述数据库系统的三级模式和两级映像的含义。

答:从数据库管理系统的角度看,数据库系统的结构通常分为三级模式的总体结构,在这种模式下,形成了二级映像,实现了数据的独立性。其中三级模式结构指的是外模式、模式和内模式,二级映像指的是外模式/模式映像、模式/内模式映像。

模式也称逻辑模式和概念模式,是数据库中全体数据逻辑结构和特征的描述,描述现实世界中的实体及其性质与联系,是所有用户的公共数据视图;外模式也称子模式或用户模式,它是用以描述用户看到或使用的数据的局部逻辑结构和特性的,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据;内模式也称存储模式,是整个数据库的最底层表示,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。 对于外模式/模式映像,当模式改变时,相应的外模式/模式映像作相应的改变,以使外模式保持不变,而应用程序是依据数据的外模式来编写的,外模式不变,应用程序就没必要修改,这保证了数据与程序的逻辑独立性。对于模式/内模式映像,当数据库的存储结构变了,模式/内模式映像会作相应的改变,以使模式保持不变,而模式不变,与模式没有直接联系的应用程序也不会改变,这保证了数据与程序的物理独立性。 4、什么是数据独立性?简述数据库系统如何实现数据独立性。

答:㈠、数据独立性包括两个方面:数据的物理独立性和数据的逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的,即数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变;逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即当数据的逻辑结构改变时,用户程序也可以不变。综上所述,数据独立性是由DBMS通过用户程序与数据的全局逻辑结构及数据的存储结构之间二级映像得到的。 ㈡、数据库系统的二级独立性是指物理独立性和逻辑独立性。三个抽象级间通过两级映像进行相互转换,使得数据库的三级形成一个统一的整体,使得数据库系统实现了数据的独立性。

5、数据库管理系统的主要功能有哪些? 答:?、数据定义功能; ?、数据操纵功能; ?、数据组织、存取功能; ?、数据库运行管理功能; ?、数据库建立与维护功能

第二章

选择题

1、B。

两个实体间的联系集可分为3中。

?、一对一关系(1:1):实体集A中的每个实体有且仅和实体集B中的一个实体有联系; ?、一对多联系(1:n):实体集A中的每个实体与实体集B中任意多个(含零个或多个)实体有联系,而实体集B中每个实体至多和实体集A中的一个实体有联系; ?、多对多联系(m:n):实体集A中的每个实体与实体集B中任意多个(含零个或多个)实体有联系,而实体集B中每个实体也与实体集A中任意多个(含零个或多个)实体有联系

由题意可得,对于班级和学生两个实体而言,一个班级可以有多个学生,而每个学生只能属于一个班级,所以班级和学生之间的联系类型属于1:n。故B选项正确。 2、A。

实体:是现实世界中客观存在并可相互区别的事物。 实体集:是具有相同特征或能用相同特征描述的实体的集合。 字段:标记实体属性的命名单位。 记录:字段的有序集合。 由以上概念可知,A选项正确。 3、C。

在信息世界中,数据库技术用到以下一些术语: ?、实体:客观存在的、可以相互区别的事物。 ?、实体集:性质相同的同类实体的集合。

?、属性:实体有很多特性,每一个特性称为一个属性。 ?、码:能唯一标识每个实体的属性或属性集。 由以上概念可知,C选项正确。 4、C。

每个教研室可以有多个教师,而每个教师只属于一个教研室,故教研室对教师的联系是1:n,所以A选项不正确;

每个父亲可以有多个孩子,而每个孩子只有一个父亲,故父亲对孩子的联系是1:n,所以B选项不正确;

每个省对应着一个省会,而每一个省会只属于一个省,故省对省会的联系是1:1,所以C选项正确;

每个供应商可以给多个工程项目供应货品,而每个工程项目也可以由多个供应商供应货品,故供应商与工程项目的联系是m:n,所以D选项不正确。 5、A。

由题意可得,对于学生和课程两个实体而言,每个学生可以学多门课程,而每个课程也可以有多个学生学习,故学生与课程的联系是m:n,故选项A正确。 6、A。

由第三章关系数据库中关系的性质一节可知,关系是一种规范化了的二维表格,所以A选项正确。 7、A。

请注意题目中“分别”两字,课程号和学号一起作为“选课”关系的主键,但是课程号、学号分别为“选课”关系的外键。所以A选项正确。 8、A。

主键:有时一个关系中有多个候选码,这时可以选择其中一个候选码作为主键,每个关系中都有一个并且只有一个主键。所以A选项正确。 主键不可以去空值,所以C选项不正确。

如第7题中,学号为“学生”关系的主键,但为“选课”关系的外键,所以B选项不正确。如第7题中,课程号和学号一起作为“选课”关系的主键,所以D选项不正确。 9、C。

UML语言有如下几种关系。

?、泛化关系:泛化是一般类别事物(称为父类或超类)和该类别事物的较为特殊的种类(称为子类或儿子)之间的关系,一般特殊类别间接地具备了一般类别的各种特征。泛化关系是用来表示类与类之间的继承关系。

?、依赖关系:依赖关系是一种使用关系,它表示一个模型元素需要另一个模型元素来达到某种目的,供应方的修改会影响客户方的执行结果。

?、关联关系:关联关系是一种结构关系,它指明一个事物的对象与另一个事物的对象之间的联系。关联关系反应了对象之间相互依赖、相互作用的关系。

?、聚合关系:聚合关系是关联关系的一种,是强的关联关系,它构成了一个层次结构。聚合关系中一个类由几部分类组成,部分类和由它们组成的类之间是一种整体与局部的关系。 学生与课程之间存在选课关系,这既不是继承关系,也不是使用关系,也不存在整体与局部的关系,只有相互依赖、相互作用的关系,所以C选项正确。 10、D。

聚合关系是一种特殊形式的关联关系,它表示类之间的关系是整体与部分的关系。一辆轿车包含四个车轮、一个方向盘、一个发动机和一个底盘,这是聚合的一个例子。在需求分析中,“包含”、“组成”、“分为??部分”等经常设计成聚合关系。

简答题

1、什么是E-R图?构成E-R图的基本元素是什么?

答:?、E-R图也称实体-联系图,提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型,以及描述现实世界中客观数据对象及其特征、数据对象之间的关联关系。 ?、基本元素有:实体集、属性和联系。 2、简述E-R图的设计步骤。 答:?、确定所有的实体集合 。 ?、选择实体集应包含的属性 。 ?、确定实体集之间的联系。

?、确定实体集的关键字,用下划线在属性上表明关键字的属性组合 。

?、确定联系的类型,用线将表示联系的菱形框联系到实体集时,在线旁注明1或n来表示联系的类型。

3、解释类的含义,并简述类的组成元素。

答:类是任何面向对象系统的最重要的构造块。类是对一组具有相同属性、操作、关系和语义的对象描述。一个类是对作为词汇表一部分的一些事物的抽象。类不是个体对象,而是描述一些对象的一个完整集合。 类的组成元素有类名、属性和操作。 4、简述类之间的各种关系。 答:类之间最重要的有三种关系:

?、泛化关系:泛化是一般类别事物(称为父类或超类)和该类别事物的较为特殊的种类(称为子类或儿子)之间的关系,一般特殊类别间接地具备了一般类别的各种特征。泛化关系是用来表示类与类之间的继承关系。

?、依赖关系:依赖关系是一种使用关系,它表示一个模型元素需要另一个模型元素来达到某种目的,供应方的修改会影响客户方的执行结果。

?、关联关系:关联关系是一种结构关系,它指明一个事物的对象与另一个事物的对象之间的联系。关联关系反应了对象之间相互依赖、相互作用的关系。 5、用E-R图和UML语言分别描述学生、课程、教师之间的关系: 学生 属性:学号、姓名、性别、专业 方法:选课 课程 属性:课号、课名

教师 属性:工号、姓名、性别、部门 方法:授课 答:E-R图:

UML语言:

教师通过课程来达到教育学生的目的,则教师和课程之间为依赖关系;同理,学生通过课程来达到学习的目的,则学生和课程之间为以来关系。

教师与学生之间有授课与被授课的关系,则教师和学生之间为关联关系 综合题 1、

2、

3、E-R图如下所示,每个实体联系的属性即每个“菱形”的属性

第三章

选择题

1、D。

全码的定义:若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码。所以D选项正确。 2、C。

关系有如下几条性质:

?、关系中的每一个属性值都是不可分解的 ?、关系中不允许出现重复行 ?、行列无序

?、列是同质的,即这一列具有相同的数据类型 由以上四点性质可知,C选项正确。 3、A。

关系的完整性有以下几条规则:

?、实体完整性规则:若属性A是基本关系R的主码所包含的属性,则属性A不能取空值。(注:主码不能为空,且主码整体取值也不空)

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

?、用户自定义的完整性规则:用户针对具体的数据约束,设置完整性规则。 同第二章数据模型课后练习选择题第八题答案相同,所以A选项正确。 4、A。

关系数据库系统是支持关系模型的数据库系统,故关系数据库用关系实现数据之间的联系,所以A选项正确。 5、C。

在关系中,列是同质的,所以每一列的分量必须是相同的数据类型,故A选项不正确; 在关系中,行、列无序,所以列的顺序改变,关系的含义不会发生变化,故B选项不正确;

在关系中,不允许出现重复行,所以任意两个元祖的对应属性不允许相同,故C选项正确; 关系的性质中不包含“关系来自笛卡尔积的全部元祖”这条性质,故D选项不正确。 6、D。

关系代数的操作分为两类:

?、传统的集合操作:并、交、差、笛卡尔积 ?、专门的关系运算:投影、选择、连接、除法

交:假设有关系R和S,R和S的交记为R∩S,由于R∩S=R-(R-S),因此交操作不是一个独立的操作,所以交操作不是一个基本操作。

除法:设关系R和S分别为r元和s元关系(设r>s>0), ①、T=π1,2,···,r-s(R); ②、W=(T×S)-R; ③、V=π1,2,···,r-s(W); ④、R÷S=T-V

所以除法也不是一个独立的操作,即不是一个基本操作。 故把交操作和除运算排除,D选项正确。 7、B。

组合操作即专门的关系运算,即投影、选择、连接、除法。故B选项正确。 8、C。

投影:对一个关系进行垂直分割,消去某些列和重复行,并重新安排列的顺序的操作 π π 9、C。

笛卡尔积:设关系R和S的元数分别为r和s,则R×S是一个(r+s)元的集合,共有r×s个元祖。因为4+3=7,所以C选项正确。 10、B。

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。设关系R和S的公共属性是A1,A2,···,AK,则R和S的自然连接步骤为: ①、计算R×S;

②、挑选R和S中满足R.A1=S.A1,···,R. AK=S. AK的那些元祖; ③、去掉S. A1, S. A2,···,S. AK这些列;

题目中已明确指出这两个关系没有公共属性,若进行自然连接首先进行笛卡尔积的运算,而运算后不能删除具有相同属性的列,所以实际上就是进行笛卡尔积运算,故B选项正确。 A,C(R)为取属性值为A,C的两列组成,并消去重复行,所以A选项不正确。 B,D选项不正确,C选项正确。 1,3(R)等价于πA,C(R),所以 综合题 1、

①、a、如果关系U和V具有不相同的属性列时,U∩V的最小和最大元组数量为0; b、如果关系U和V具有相同的属性列时, 若m>n,则U∩V的最小元组数量为0,U∩V的最大元组数量为n; 若m

b、如果关系U和V具有相同的属性列时,

若m>n,则U∪V的最小元组数量为m,U∪V的最大元组数量为m+n; 若m

⑤、σF(U)×V的最小元组数量为0,σF(U)×V的最大元组数量为mn;的最小元组数量为0,πL(R)-S的最大元组数量为m。 2①、π3,4(R):, π1,2(S): 所以π3,4(R)∪π1,2(S)为 ②、π3,4(R)-π1,2(S)为 ③、σA=?A2?(R

)为

④、第一步先做R∞S

πL(R)-S ,为

第二步找出满足条件(R.C=S.A)∧(R.D=S.B)的元组,为

⑤、第一步找出R与S相同的属性列,即C列和D列

第二步找出R中剩余两列A和B的象集,即 {A1,B1}的象集为{C1,D1}、{C2,D2}、{C3,D3} {A2,B2}的象集为{C1,D1}、{C2,D2} {A3,B3}的象集为{C1,D1} 第三步已知关系S中C列和D列包含的元组为{C1,D1}、{C2,D2},而由第二步可知, {A1,B1}和{A2,B2}的象集均包含{C1,D1}、{C2,D2} 所以,R÷S为

⑥、π1,2(R)为,π1,2(S)为 则π1,2(R)×π1,2(S)为

3、 所以(π1,2(R)×π1,2(S))-R的结果为 ①、π ②、π ③、π ④、π

⑤、πC#,CNAME(σTEACHER=?lIU?(C)) σS#=?S3?(S∞SC)) S#,SNAME(σSEX=?男?∧AGE)?23?(S)) CNAME,TEACHER(SNAME(σTEACHER=?lIU? ∧SEX=?女?(S∞SC∞C)) πC#(C#(C)- σSNAME=?WANG?∧S.S#=SC.S#(S∞SC)) ⑥、πS#( ⑦、π

⑧、πσ∞SC)) 1=4∧2≠5(SC C#,CNAME((πS#, C#(SC)?πS#(S)) ∞C) S#,C#(SC)?πC#(σTEACHER=?LIU?(C)) 解析:除法的物理意义 (1)除法的含义:

R÷S1表示至少选修S1关系中列出课程的学生的学号和姓名; R÷S2表示至少选修S2关系中列出课程的学生的学号和姓名; (2)求选修所有课的同学姓名:(S、SC、C)

说明:针对“全部”特征含义的查询要求,如“全部”、“至少”、“包含”等字眼,一般要用除法运算。

4、 ①、π②、π③、π④、πOrd_no,Pname,Qty,Amount((σCid=?C006? (Orders) ∞Products) Cname((σPid=?P01?(Orders) ) ∞Customers) σQty>?500?(Orders)∞πPid (σPrice=?0.50? (Products)))) ∞Customers) σPid=?P01?(Orders))) ∞Customers) σCname((πCid(Cname-πCname((πCid,Pid(⑤、

πCid,Cname,Aid,Aname,City((Customers∞Agents) ∞Orders)) S 令Q=Customers∞Agents,则S为Q.Cid=Orders.Cid∧Q.Aid=Orders.Aid ⑥、π

⑦、πPid (((πCid(σcity=?南京?(Customers)))×(πAid(city=?北京?(Agents))))∞Orders) Cid,Pid(Orders)?σPrice=?1.00? (Products))

第四章

选择题

1、A。

π运算符对应的是投影操作,而投影操作是对一个关系进行垂直分割,消去某些列,并重新按排列的操作。则由定义可知,例如π2,4(S)表示关系S中的第二列和第四列组成了一个新的关系,新关系的第一列为S中的第二列,新关系的第二列为S中的第四列,由此可知,π运算最初的作用就是一个选择的作用,选择出被需要的列来组成一个新的关系,故答案A正确。FROM言下之意即为“从···来”,与π运算语义不符,故答案B不正确。WHERE代表的是条件,与选择无关,故答案C不正确。GROUPE BY代表将结果按一定规则进行分组,与π运算无任何关系,故答案D不正确。 2、C。

σ运算符对应的是选择操作,而选择操作是对一个关系进行水平切割,选取符合条件的元组的操作。则由定义可知,σ运算只选取符合条件的元组,即与WHERE代表的条件相符合,故答案C正确。 3、C

当我们使用SQL Server Management Studio时可知,当我们输入一个正确的SELECT语句时,输出出来的是一个我们需要的表格,所以答案C正确。 4、C。

在课本4.5.1这节中可知,RDBMS执行CREATE VIEW语句的结果只是把视图的定义存入数据字典,并不执行其中的SELECT语句。故答案C正确。 5、C。

定义视图:SQL语言用CREATE VIEW 命令建立视图 故答案C正确。 6、B。

由书4.3.4一节可知,集合操作主要包括并操作、交操作和差操作结果表的列数必须相同,对应项的数据类型也必须相同,所以当两个子查询的结果结构完全一致时,才可以执行并、交、差操作,故答案B正确。 7、C。

HAVING必须和GROUP BY连用,一般结构为: SELECT <目标列> FROM <表名或视图名> GROUP BY<列名> HAVING<条件表达式>

当存在HAVING语句时,GROUP BY语句必须存在,故答案C正确。 8、B。

由4.3.1中第2项第(4)条字符匹配的查询可知,“%”代表任意长度(长度可以为0)的字符串,“-”代表任意单个字符。故答案B正确。 9、D。

已知BETWEEN···AND是闭区间,所以数据是60~100的闭区间,故答案D正确。 10、A。

删除数据的一般格式: DELETE FROM <表名> [WHERE <条件>]

由4.4.3可知,DELETE语句的功能是从指定表中删除满足WHERE子句条件的所有元祖。如果省略WHERE子句,表示删除表中全部元组,但表的定义仍在数据字典中,即DELETE语句删除的是表中的数据,而不是关于表的定义。故答案A正确。

综合题

1、?、创建客户表Customers Create table Customers( Cid char(6) primary key, Cname varchar(20) not null, City varchar(20) not null )

?、创建代理人表Agents Create table Agents( Aid char(4) primary key, Aname varchar(20) not null, City varchar(20) not null )

?、创建产品表Products Create table Products( Pid char(4) primary key, Pname varchar(20) not null, Quantity int, Price float(2) )

?、创建订单表Orders Create table Orders( Ord_no char(4) primary key,

Months smallint not null,

Cid char(5) foreign key references Customers(Cid), Aid char(4) foreign key references Agents(Aid), Pid char(4) foreign key references Products(Pid), Qty int, Amount float(2) )

2、?、select c#,cname from C where teacher=?LIU? ?、select s#,sname from S where sex=?男? and age>23 第2/5页

?、select cname,teacher from C where c# in( select c# from SC where s#=?S3? )

?、select sname from S where sex=?女? and s# not in( select distinct s# from SC where c# not in( select c# from C

where teacher=?LIU? ) }

?、select distinct c# from SC where s# not in( select s# from S where sname=?WANG? )

?、select distinct a.s# from SC as a,SC as b where a.s#=b.s# and a.c#!=b.c# ?、select c#,cname from c

where not exists(select * from s where not exists( select * from sc where s#=s.s# and c#=c.c#) ?、select distinct s# from sc as a

where not exists(select * from c where teacher=?LIU? and not exists(select * from sc as b where b.s#=a.s# and b.c#=a.c#)) 3、?、select * from Orders where Cid=?C006?

?、select distinct Cname from Customers c,Orders o where c. Cid=o. Cid and Pid=?P01?

?、select Cname from Customers c,Orders o,Products p

where c. Cid=o. Cid and p. Cid=o. Cid and Price=?0.50? Group by Cname having SUM(Qty) >500

?、select distinct Cname from Customers c,Orders o where c. Cid=o.cid and c. Cid not in( select Cid from Orders where Pid=?P01? )

?、select distinct c. Cid, Cname,a.Aid,Aname,c.City from Customers c,Agent a,Orders o

where c.Cid=o.Cid and a.Aid=o.Aid and c.City=a.City 第3/5页

?、select distinct Pid from Orders o,Customers c, Agents a

where o.Aid=a.Aid and c.Cid=o.Cid and c.City=?南京? and a.City=?北京? ?、select distinct c.Cid from Orders o,Customers c,Agents a where p.Pid=o.Pid and c.Cid=o.Cid and p.Pid in( select Pid from Products where Price=?1.00? )

4、?、select * from Orders where Qty between 500 and 800

?、select Pname 产品名称,Price 单价 from Products

where Pname like ?%水%? ?、select * from Orders where Cid=(

select Cid from Customers

where Cname=?王_?) and Months=?1? Order by Qty desc

?、select Months 月份,count(*) 订单数,sum(Qty) 总订货数量,sum(Amount)总金额 from Orders

Group by Months Order by Months desc ?、select Months from Orders where Cid in(

select Cid from Customers

where City=?上海? ) Group by Months having sum(Qty)>200

?、select sum(Qty) 总订货数量,sum(Amount) 总金额 from Orders where Pid=(

select Pid from Products where Pname=?橡皮? )

?、select distinct o.Cid,Cname from Orders o,Customers c

where o.Cid=c.Cid and Aid not in( select Aid from Agents

where City=?北京?) and Pid not in ( select Pid not in (

select Pid from Products where Pname=?笔袋?) ?、select Ord_no from Orders where Qty>All(select Qty from Orders where Months=?3?) 第4/5页

?、insert into Products

values(?P20?,?粉笔?,?25000?,?1.50?) ?、update Products set Price=Price+0.50 where Price=1.00 ⑴、update Orders set Qty=200 where Aid=(

select Aid from Agents where City=?上海?) and Pid=(

select Pid from Products where Pname=?笔袋?) ⑵、update Orders set Aid=?A05?

where Aid=?A06? and Pid=?P01? and Cid=?C006?

⑶、delete from Customers where Cid=?C006? ⑷、delete from Orders where Pid=(

select Pid from Products

where Pname=?尺子?) and Months=?3? ⑸、create view Agent as

select Aid,Pid,Price from Agents,Products ⑹、create view product as

select Pname 产品名称,sum(Qty) 总订货数量,sun (Amount) 总金额 from Products p,Orders o

where p.Pid=o.Pid and Price>1.00 group by Pname

第五章

简答题

1、什么是存储过程?为什么要使用存储过程?

答:?、存储过程的定义:存储过程是存储在数据库服务器中的一组编译成单个执行计划的SQL语句。

原因:存储过程可以包含程序控制流、查询子句、操作字句,还可以接受参数、输出参数、返回单个值或多个结果集,使用存储过程有如下优点:

①、由于存储过程不像解释执行的SQL语句那样在提出操作请求时才进行语法分析和优化,因而运行效率高,它提供了在服务器端快速执行SQL语句的有效途径; ②、存储过程降低了客户机和服务器之间的通信量。客户机上的应用程序只要通过网络向服务器发出存储过程的名字和参数,就可以让RDBMS执行多条SQL语句,并执行数据处理,只将最终处理结果返回客户端;

③、方便企业实施规则。可以吧企业规则的运算程序写成存储过程放入数据库服务器,由RDBMS管理,既有利于集中控制,又方便维护。当用户规则发生变化时只要修改存储过程,无需修改其他应用程序。 2、试述触发器的概念和作用

答:概念:触发器是用户定义在关系表上的一类由事件驱动的特殊过程,也是一种保证数据完整性的方法。触发器也可以看做是一类特殊的存储过程,一旦定义,无须用户调用,任何对表的修改操作均由服务器自动激活相应的触发器。

作用:能够实现主键和外键所不能保证的复杂的参照完整性和数据的一致性。 3、什么是INSERTED表和DELETED表?试说明这两张表的结构。

INSERTED表:用于存储INSERT和UPDATE语句所影响的行的复本,执行INSERT和UPDATE语句时,新的数据行被添加到基本表中,同时这些数据行的备份被复制到INSERTED临时表中。

DELETED表:用于存储DELETE和UPDATE语句所影响的行的复本,执行DELETE或UPDATE语句时,行从触发器表中删除,并传输到DELETED表中,DELETED表和元数据表通常没有相同的行。

两张表的结构:①、这两个表都是逻辑表,并且是由系统管理的,存储在内存中,不是存储在数据库中。因此,不允许用户直接对其操作。

②、这两个表的结构与被该触发器作用的表有相同的表结构。它们是动态驻留在内存中,当触发器工作完成,它们也被删除。

③、这两个表主要保存因用户操作而被影响到的原数据值或新数据值,且是只读的,可以引用表中的数据,但不能向其写入内容。 4、什么是默认对象和默认值?他们有什么区别?

默认对象: 需要用create default语句进行定义,作为一种单独存储的数据库对象,它是独立于表的,删除表并不能删除默认对象,需要使用drop default语句删除默认对象。 默认值:是一种数据库对象,可以绑定到表的一列或多列上,也可以绑定到用户自定义的数据类型上,其作用类似于DEFAULT约束,当向表中插入数据,且没有为列输入值时,系统自动给列附一个默认值。与DEFAULT不同的是它的使用规则,通过一次定义,可以多次使用。在create table或alter table语句中定义后,被嵌入到定义的表结构中。也就是说,在删除表的时候默认约束也将随之被删除。

区别:默认值是用create table语句创建表时,使用default子句为表中的列提供默认值; 默认值对象是用create default语句来创建时,使用时须将它绑定到列上。 5、什么是规则?规则和CHECK约束有什么区别?

答:?、规则是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制,是单独存储的独立的数据库对象。

?、区别:①、CHECK约束是在使用CREATE TABLE 语句建表时指定的,而规则是作为独立于表的数据库对象,通过与指定表或数据类型绑定来实现完整性约束。 ②、在一列上只能使用一个规则,但可以使用多个CHECK约束

③、规则可以应用于多个列,还可以应用于用户自定义的数据类型,而CHECK约束只能应用于它定义的列。

综合题

1、?、create procedure addPrice

@Pid char(4) as update Products set Price=Price+0.5 where Pid=@Pid exec addPrice @Pid=?P01?(执行过程自定义) ?、create procedure newRecord

@Pid char(4),@Pname varchar(20),@Quantity int,@Price real

as insert into Products values(@Pid,@Pname,@Quantity,@Price) exec newRecord @Pid=?P09?,@Pname=?笔记本?,@Quantity=?20?,@Price=?4.50? ?、create procedure totalQty

exec totalQty @Cid=?C001?,@Aid=?A01? @Cid char(5),@Aid char(5) as select sum(Qty) from Orders where Cid=@Cid and Aid=@Aid 2、?、create trigger insertNew on Products

instead of insert as declare @Pid char(4),@Pname varchar(20),@Quantity int,@Price real 第2/3页

select @Pid=Pid,@Pname=Pname,@Quantity=Quantity,@Price=Price from inserted if @Price<0.50 begin set @Price=0.50 print ?产品单价不得低于0.50元!? end insert into Products values (@Pid,@Pname,@Quantity,@Price)

?、当订货数量发生变化时,需要用inserted表找到相应的唯一的Pid,因为修改了一个数量,所以inserted表中只有一个Pid,通过这个Pid就能找到相应的Price create trigger changeQty on Orders

after update as

declare @Qty int,@Pid char(4) select @Qty=Qty,@Pid=Pid from inserted begin transaction if update(Qty)

begin update Orders set Amount=@Qty*(select Price from Products where Pid=@pid) end

commit transaction

第六章

选择题

1、A。

二元关系≠二维表,满足二元关系的一定为BCNF,而不论任何一张表,最少要满足的是1NF,故答案A正确。 2、C。

由书6.3一节可知,答案C正确。 3、B。

由2NF的定义可知,1NF消除了非主属性对候选码的部分函数依赖成为了2NF,故答案B正确。 4、A。

由书6.3.一节可知,规范化的目的是要设计“好的”关系数据库模式,其基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,以解决数据插入、删除时发生的异常现象,故答案A正确。 5、D。

已知不论任何一张表,表中的候选键可以有1个或多个,但是主键必须只有且仅有1个,故答案D正确。 6、D。

Armstrong公理系统:设关系模式R,其中U为属性集,F是U上的一组函数依赖,则有如下推理规则: ①、自反律:若属性集Y 包含于属性集X,属性集X 包含于U,则X→Y为F所蕴涵。 ②、增广律:若X→Y为F所蕴涵,且属性集Z 包含于属性集U,则XZ→YZ为F所蕴涵。 ③、传递律:若X→Y,Y→Z为F所蕴涵,则X →Z为F所蕴涵。

根据以上三条推理规则又可推出下述三条推理规则: ①、合并规则:若X→Y,X→Z,则X→YZ为F所蕴涵。 ②、伪传递律:若X→Y,WY→Z,则XW→Z为F所蕴涵。 ③、分解规则:若X→Y,Z包含于Y,则X→Z为F所蕴涵。 由以上定义得,答案D正确。 7、C。

由书6.4.2一节引理6.1可知,假设事件p代表X→A1A2···AK,事件q代表X→A(ii=1,2,···,k),则p成立的充分必要条件是q成立。那么由题知,q成立同样也是q成立的充要条件,故答案C正确。 8、D。

一名顾客可能在同一名供应商那里购买不同的东西,所以顾客姓名和供应商姓名不能作为主键,故答案A不正确。一名顾客可能不在同一家商店,却买了相同的商品,所以顾客姓名和商品名不能作为主键,故答案B不正确。一名顾客可能存在多个顾客地址,所以答案C不正确。故答案D正确。 9、B。

多值依赖具有如下性质:

①、对称性:若X→→Y,则X→→Z,其中Z=U-X-Y ②、传递性:若X→→Y,Y→→Z,则X→→Z-Y ③、合并性:若X→→Y,X→→Z,则X→→YZ

④、分解性:若X→→Y,X→→Z,则X→→(Y∩Z),X→→Z-Y,X→→Y-Z均成立 ⑤、函数依赖可看做多值依赖的特例。

由以上性质可得,答案B正确。选项C为多值依赖的对称性。 10、D。

选项A应该改为“R中非主属性完全依赖与主键”,故答案A不正确。选项B应改为“R∈1NF”,故答案B不正确。选项C应改为“R∈1NF”,故答案C不正确。故答案D正确。

简答题

1、解释下列术语的含义:

函数依赖、平凡函数依赖、非平凡函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、1NF、2NF、3NF、BCNF、多值依赖、4NF、最小函数依赖、函数依赖保持性、无损连接性。 ①、函数依赖:设R(U)是属性集U上的一个关系模式,X、Y是U的子集。若对于R(U)上的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数决定Y”或“Y函数依赖X”,记作X→Y。 ②、平凡函数依赖:设R(U)是属性集U上的一个关系模式,X、Y是U的子集。若Y是X的子集,则称X→Y为平凡函数依赖。

③、非平凡函数依赖:设R(U)是属性集U上的一个关系模式,X、Y是U的子集。如果X→Y,且Y?X,则称X→Y为非平凡函数依赖。

④、部分函数依赖:如果X→Y,但不完全函数依赖于X,则称Y对X部分函数依赖。 ⑤、完全函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X?,都有Y函数不依赖于X?,则称Y完全函数依赖于X。

⑥、传递函数依赖:在R(U)中,如果X→Y ,Y→Z,且Y?X,X也不函数依赖于Y,则称Z传递函数依赖于X。

⑦、1NF:如果关系模式R的所有属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式。

⑧、2NF:如果关系模式R∈1NF,且每个非主属性都完全依赖于R的码,则称R属于第二范式。

⑨、3NF:如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R的候选码,则称R属于第三范式。

⑩、BCNF:如果关系模式R∈1NF,且对于所有的函数依赖X→Y(Y?X),决定因素X都包含了R的一个候选码,则称R属于BC范式。

11、多值依赖:设R(U)是属性集U上的一个关系模式,X、Y、○Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。

12、4NF:关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y?X),X都含○

有码,则称R∈4NF。

第七章

简答题

1、解释下列概念和术语

2、为什么要对数据文件建立索引?

答:最明显的原因是速度。没有索引时,DBMS通过表扫描方式逐个读取指定表中的数据记录来访问,这样的查找方式就好像在图书馆里查找一本书时,将图书馆中的所有书都找一遍,这样做的效率毫无疑问是非常低的。由于索引表是排序的,可以采取类似二分

查找的快速定位算法,在实际应用中,索引表还可以驻留在主存储器中,进一步提高查找的访问速度。

3、简述聚集索引和非聚集索引的区别。

答:汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。

如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。

4、为什么一个数据文件只能有一个聚集索引?

答:由于一个数据表只能有一种实际的存储顺序,因此在一个数据表中只能建立一个聚集索引。

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

Top