数据库原理及应用习题参考答案.docx
《数据库原理及应用习题参考答案.docx》由会员分享,可在线阅读,更多相关《数据库原理及应用习题参考答案.docx(48页珍藏版)》请在冰豆网上搜索。
数据库原理及应用习题参考答案
数据库原理及应用习题参考答案
习题1
1-1文件系统阶段的数据管理有哪些特点
答:
文件系统阶段主要有5个特点:
数据以“文件”形式长期保存;数据的逻辑结构与物理结构有了区别;文件组织已多样化;数据面向应用;对数据的操作以记录为单位。
1-2文件系统阶段的数据管理有些什么缺陷试举例说明。
答:
主要有3个缺陷:
数据冗余;数据不一致性;数据联系弱。
例如学校里教务处、财务处、保健处建立的文件中都有学生详细资料,如联系电话,家庭住址等。
这就是“数据”冗余;如果某个学生搬家,就要修改3个部门文件中的数据,否则会引起同一数据在3个部门中不一致;产生上述问题的原因是这3个部门的文件中数据没有联系。
1-3数据库阶段的数据管理有哪些特色
答:
主要有5个特点:
采用数据模型可以表示复杂的数据结构;有较高的数据独立性;
为用户提供了方便的用户接口;提供了4个方面的数据控制功能;对数据的操作以数据项为
单位,增加了系统的灵活性。
1-4什么是数据独立性在数据库中有哪两级独立性
答:
数据独立性是指应用程序与DB的数据结构之间的相互独立。
在物理结构改变时,尽量不影响应用程序,称为物理独立性;在逻辑结构改变时,尽量不影响应用程序,称之为逻辑数据独立性。
1-5试解释DB、DBMS和DBS三个概念。
答:
DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。
DBMS是位于用户与0S之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法。
DBS是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件
和数据资源组成的系统,即采用数据库技术的计算机系统。
1-6SQLServer2005有哪些数据类型
答:
SQLServer中数据类型分为整型、浮点型、二进制数据型、逻辑型、字符型、文本型、图形型、日期时间型、货币型、自定义类型、可变数据类型和表数据类型。
1-7列举SQLServer2005中新增的主要功能。
答:
SQLServer2005中新增的主要功能有:
⑴NotificationServices增强功能;
⑵ReportingServices增强功能,其中包括:
报表功能的增强功能、ReportingServices设计时增强功能、ReportingServices可编程性的增强功能、ReportingServices可管理性和部署的增强功能;
⑶新增的ServiceBroker以实现SQLServer中的消息传递方面具有以下优势:
高伸缩性、消息协调、排序和锁定、集成数据库数据、集成数据库安全性;
⑷数据库引擎增强功能;
⑸数据访问接口方面的增强功能;
⑹SQLServerAnalysisServices(SSAS)的增强功能;
⑺IntegrationServices的增强功能;
⑻在可管理性、可用性、可编程性、移动性、可伸缩性和性能方面提供了改进。
⑼工具和实用工具增强功能;
第1页
1-8SQLServer2005的实用程序和常用工具有哪些
答:
SQLServer2005给出的常用应用程序和实用工具有:
企业管理器、查询分析器、商业智能开发平台、SQLServer分析器、SQLServer2005数据库引擎优化程序、SQLServer配置管理器等。
习题2
2-1名词解释
逻辑数据物理数据联系的元数1:
1联系
1:
N联系M:
N联系数据模型概念数据模型
外模式概念模式内模式外模式/模式映象
模式/内模式映象数据独立性物理数据独立性逻辑数据独立性
答:
逻辑数据:
指程序员或用户用以操作的数据形式。
物理数据:
指存储设备上存储的数据。
联系的元数:
与一个联系有关的实体集个数,称为联系的元数。
1:
1联系:
如果实体集El中每个实体至多和实体集E2中的一个实体有联习,反之亦然,那么El和E2的联系称为“l:
1联系”。
1:
N联系:
如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,而E2中每个实体至多和El中一个实体有联系,那么El和E2的联系是“1:
N联系”。
M:
N联系:
如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么El和E2的联系称为“M:
N联系”。
数据模型:
能表示实体类型及实体间联系的模型称为“数据模型”。
概念数据模型:
独立于计算机系统、完全不涉及信息在计算机中的表示、反映企业组织所关心的信息结构的数据模型。
外模式:
是用户用到的那部分数据的描述。
概念模式:
数据库中全部数据的整体逻辑结构的描述。
内模式:
DB在物理存储方面的描述。
外模式/模式映象:
用于定义外模式和概念模式之间数据结构的对应性。
模式/内模式映象:
用于定义概念模式和内模式之间数据结构的对应性。
数据独立性:
应用程序和DB的数据结构之间相互独立,不受影响。
物理数据独立性:
在DB的物理结构改变时,尽量不影响应用程序。
逻辑数据独立性:
在DB的逻辑结构改变时,尽量不影响应用程序。
2-2逻辑记录与物理记录、逻辑文件与物理文件有哪些联系和区别
答:
逻辑数据是用户用以操作的数据形式,是抽象的概念化数据。
物理数据是实际存放在存储设备上的数据。
逻辑数据与物理数据在结构上可以差别很大,需通过两级映象来进行数据传输和格式转换。
从以上的解释可以看出,逻辑记录和逻辑文件是用户在程序中使用的记录和文件,而物理记录和物理文件是指磁盘上的记录和文件。
逻辑记录、文件与物理记录、文件在结构、组成上可以有很大的差异,而数据库管理软件就是通过三级结构两级映象来实现逻辑数据与物理数据之间的转换。
2-3试述ER模型、层次模型、网状模型、关系模型和面向对象模型的主要特点。
答:
ER模型直接表示实体类型及实体间联系,与计算机系统无关,充分反映用户的需求,用户容易理解。
第2页
层次模型的数据结构为树结构,记录之间联系通过指针实现,查询较快,但DML属于过程化的语言,操作复杂。
网状模型的数据结构为有向图,记录之间联系通过指针实现,查询较快,并且容易实现M:
N联系,但DML属于过程化的语言,编程较复杂。
关系模型的数据结构为二维表格,容易为初学者理解。
记录之间联系通过关键码实现。
DML属于非过程化语言,编程较简单。
面向对象模型能完整描述现实世界的数据结构,具有丰富的表达能力,能表达嵌套、递归的数据结构。
但涉及的知识面较广,用户较难理解,这种模型尚未普及。
2-4数据之间的联系在各种结构数据模型中是怎么实现的
答:
在层次、网状模型中,数据之间的联系通过指针实现的;在关系模型中,数据之间联系通过外键和主键间联系实现的;在面向对象模型中,数据之间嵌套、递归联系通过对象标识符(OID)实现的。
2-5DB的三级模式结构描述了什么问题试详细解释。
答:
DB的三级模式结构是对数据的三个抽象级别,分别从外部(用户)级、概念级和内部级去观察数据库。
外部级是用户使用的局部数据库的逻辑结构,其描述称为外模式。
概念级是DB的整体逻辑结构,其描述称为概念模式。
内部级是DB的物理结构,其描述称为内模式。
2-6试述概念模式在数据库结构中的重要地位。
答:
数据按外模式的描述提供给用户,按内模式的描述存储在磁盘中,而概念模式提供了连接这蘧级的相对稳定的中间观点,并使得两级的任何一级的改变都不受另一级的牵制。
2-7什么是数据独立性其目的是什么
数据库独立性是指应用程序与DB的数据结构之间相互独立。
其目的是在物理结构改变或逻辑结构改变时,尽量不影响应用程序。
习题3
3-1名词解释:
关系模式关系实例属性元组超键候选键
主键外键实体完整性规则参照完整性规则
答:
关系模式:
是对关系的描述,包括模式名、诸属性名、值域名和模式的主键。
关系实例:
关系模式具体的值,称为关系实例。
属性:
即字段或数据项,与二维表中的列对应。
属性个数,称为元数。
元组:
即记录,与二维表中的行对应。
元组个数,称为基数。
超键:
能惟一标识元组的属性或属性集,称为关系的超键。
候选键:
不含有多余属性的超键,称为候选键。
主键:
正在使用的、用于标识元组的候选键,称为主键。
外键:
属性集F是模式S的主键,在模式R中也出现,那么称F是模式R的外键。
实体完整性规则:
实体的主键值不允许是空值。
参照完整性规则:
依赖关系中的外键值或者为空值,或者是相应参照关系中某个主键值。
3-2为什么关系中的元组没有先后顺序,且不允许有重复元组
答:
由于关系定义为元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也譬没有先后的顺序(对用户而言)。
这样既能减少逻辑排序,又便于在关系数据库中引进集合论的理论。
第3页
每个关系模式都有一个主键,在关系中主键值是不允许重复的。
如果关系中有重复元组,那么其主键值肯定相等,起不了惟一标识作用,因此关系中不允许有重复元组。
3-3外健值何时允许为空何时不允许为空
答:
在依赖表中,当外键是主键的组成部分时,外键值不允许为空;否则外键值允许为空。
3-4笛卡尔积、等值连接和自然连接三者之间有什么区别
答:
笛卡儿积是一个基本操作,而等值连接和自然连接是组合操作。
设关系R的元数为r,元组个数为m;关系S的元数为s。
,元组个数为n。
那么,R×S的元数为r+s,元组个数为m×n;
RS的元数也是r+s,但元组个数小于等于m×n;
RS的元数小于等于r+s,元组个数也小于等于m×n:
3-5设有关系R和S,如图所示。
计算R∪S,R-S,R∩S,R×S,π3,2(S),σB<'5'(R),RS,RS。
2<2
3-6设有关系R和S,如图所示。
计算RS,RS,σA=C(R×S)。
答:
ARSABC327465247733ABC374253RS图关系R和S2<2B3-7设教务管理数据库中有三个关系
S(SNO,SNAME,AGE,SEX,SDEPT)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,CDEPT,TNAME)
试用关系代数表达式表示下列查询语句:
⑴检索LIU老师所授课程的课程号、课程名。
⑵检索年龄大于23岁的男学生的学号与姓名。
⑶检索学号为S3学生所学课程的课程名与任课教师名。
⑷检索至少选修LIU老师所授课程中一门课的女学生姓名。
⑸检索WANG同学不学的课程的课程号。
⑹检索至少选修两门课程的学生学号。
⑺检索全部学生都选修的课程的课程号与课程名。
⑻检索选修课程包含LIU老师所授课程的学生学号。
解:
⑴πC#,CNAME(σTEACHER=’LIU’(C))
⑵πS#,SNAME(σAGE>’23’∧SEX=’M’(SC))
⑶πCNAME,TEACHER(σS#=’S3’(SCC))
⑷πSNAME(σSEX=’F’∧TEACHER=’LIU’(SSCC))
⑸πC#(C)-πC#(σSNAME=’WANG’(SSC))
⑹π1(σ1=4∧2≠5(SC×SC))
⑺πC#,CNAME(C(πS#,C#(SC)÷πS#(S)))
⑻πS#,C#(SC)÷πC#(σTEACHER=’LIU’(C))
3-8在题的三个关系中,用户有一查询语句:
检索数学系的学生选修计算机系开设的课程的课程名和任课教师姓名。
⑴试写出该查询的关系代数表达式。
⑵试写出该查询优化的关系代数表达式。
⑶画出该查询初始的关系代数表达式的语法树。
⑷使用节的优化算法,对语法树进行优化,并画出优化后的语法树。
解:
⑴πCNAME,TEACHER(σDEPT=‘数学系’(SSCC))
⑵设L1=πS#(σDEPT=‘数学系’(S)),L2=πS#,C#(SC),则优化的关系代数表达式为:
acdbbeebbacdσ(R×S)
第5页
πCNAME,TEACHER(σ#=#(π#(σ#=#((L1×L2)×C))))
⑶查询初始的关系代数表达式可表达为:
πCNAME,TEACHER(σDEPT=‘数学系’(πL(σ#=#∧#=#((S×SC)×C))))
此处L为S、SC、C中的全部属性(公共属性只取一次)。
⑷优化后的语法树为
3-9为什么要对关系代数表达式进行优化
答:
关系代数表达式由关系代数操作组合而成。
操作中,以笛卡尔积和连接操作最费时间,并生成大量的中间结果。
如果直接按表达式书写的顺序执行,必将花费很多时间,并生成大量的中间结果,效率较低。
在执行前,由DBMS的查询子系统先对关系代数表达式进行优化,尽可能先执行选择和投影操作,以便减少中间结果,节省时间。
优化工作是由DBMS做的,用户书写时不必关心优化一事,仍以简练的形式书写。
习题4
4-1名词解释
基本表视图实表相关子查询联接查询
嵌套查询交互式SQL嵌入式SQL游标
答:
基本表:
实际存储在数据库中的表,称为基本表。
CL#=#∧#=#DEPT=’数学系’πσCNAME,TEACHER×SSCCπσ×σπDEPT=’数学系’σCNAME,TEACHER×SSCπ
第6页
视图:
是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是数据库中只存放视图的定义而不存放视图的数据。
实表:
是对基本表的别称。
相关子查询:
SELECT语句嵌套时,子查询中查询条件依赖于外层查询中的值,因此子查询要反复求值供外层查询使用。
这种子查询称为相关子查询。
连接查询:
查询时要从多个基本表中提取数据,此时把多个基本表写在同一层的FROM子句中,这种查询形式称为连接查询。
嵌套查询:
查询时要从多个基本表中提取数据,此时把多个基本表分别放在不同层次上的FROM子句中,这种查询形式称为嵌套查询。
交互式SQL:
在终端交互方式使用的SQL语言。
嵌入式SQL:
嵌入在高级语言的程序中使用的SQL语言。
游标:
游标是与某一查询相联系的符号名。
游标有游标关系和游标指针两层含义。
在游标打开时,游标(指针)指向查询结果的第一个记录之前。
4-2对于教务管理数据库的三个基本表
S(SNO,SNAME,SEX,AGE,SDEPT)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,CDEPT,TNAME)
试用SQL的查询语句表达下列查询:
⑴检索LIU老师所授课程的课程号和课程名。
⑵检索年龄大于23岁的男学生的学号和姓名。
⑶检索学号为6的学生所学课程的课程名和任课教师名。
⑷检索至少选修LIU老师所授课程中一门课程的女学生姓名。
⑸检索WANG同学不学的课程的课程号。
⑹检索至少选修两门课程的学生学号。
⑺检索全部学生都选修的课程的课程号与课程名。
⑻检索选修课程包含LIU老师所授课程的学生学号。
解:
⑴SELECTC#,CNAME
FROMC
WHERETEACHER=’LIU’;
⑵SELECTS#,SNAME
FROMS
WHEREAGE>23ANDSEX=’M’;
⑶SELECTCNAME,TEACHER
FROMSC,C
WHERE#=#ANDS#=’6’
⑷SELECTSNAME(连接查询方式)
FROMS,SC,C
WHERE#=#AND#=#ANDSEX=’F’ANDTEACHER=’LIU’;
或:
SELECTSNAME(嵌套查询方式)
FROMS
WHERESEX=’F’ANDS#IN
(SELECTS#
第7页
FROMSC
WHEREC#IN(SELECTC#
FROMC
WHERETEACHER=’LIU’))
或:
SELECTSNAME(存在量词方式)
FROMS
WHERESEX=’F’ANDEXISTS(SELECT*
FROMSC
WHERE#=#
ANDEXISTS(SELECT*
FROMC
WHERE#=#ANDTEACHER=’LIU’))
⑸SELECTC#
FROMC
WHERENOTEXISTS
(SELECT*
FROMS,SC
WHERE#=#AND#=#ANDSNAME=’WANG));
⑹SELECTDISTINCT#
FROMSCASX,SCASY
WHERE#=#AND#!
=#;
⑺SELECTC#.CNAME
FROMC
WHERENOTEXISTS(SELECT*
FROMS
WHERENOTEXISTS
(SELECT*
FROMSC
WHERES#=#ANDC#=#));
⑻SELECTDISTINCTS#
FROMSCASX
WHERENOTEXISTIS
(SELECT*
FROMC
WHERETEACHER=’LIU’ANDNOTEXISTS
(SELECT*
FROMSCASY
WHERE#=#AND#=#));
4-3试用SQL查询语句表达下列对题中教务管理数据库的三个基本表S、SC、C查询:
⑴统计有学生选修的课程门数。
⑵求选修4号课程的学生的平均年龄。
⑶求LIU老师所授课程的每门课程的学生平均成绩。
第8页
⑷统计每门课程的学生选修人数(超过10人的课程才统计)。
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
⑸检索学号比WANG同学大,而年龄比他小的学生姓名。
⑹检索姓名以WANG打头的所有学生的姓名和年龄。
⑺在SC中检索成绩为空值的学生学号和课程号。
⑻求年龄大于女同学平均年龄的男学生姓名和年龄。
⑼求年龄大于所有女同学年龄的男学生姓名和年龄。
解:
⑴SELECTCOUNT(DISTINCTC#)
FROMSC;
⑵SELECTAVG(AGE)
FROMS,SC
WHERE#=#ANDC#=’4’ANDSEX=’F’;
⑶SELECT#,AVG(GRADE)
FROMSC,C
WHERE#=#ANDTEACHER=’LIU’;
⑷SELECTC#,COUNT(S#)
FROMSC
GROUPBYC#
HAVINGCOUNT(*)>10
ORDERBY2DESC,1;
⑸SELECTSNAME
FROMS
WHERES#>ALL(SELECTS#
FROMS
WHERESNAME=’WANG’
ANDAGEFROMS
WHERESNAME=’WANG’);
⑹SELECTSNAME,AGE
FROMS
WHERESNAMELIKE‘WANG%’
⑺SELECTS#,C#
FROMSC
WHEREGRADEISNULL;
⑻SELECTSNAME,AGE
FROMS
WHERESEX=’M’ANDAGE>(SELECTAVG(AGE)
FROMS
WHERESEX=’F’);
⑼SELECTSNAME,AGE
FROMS
WHERESEX=’M’ANDAGE>ALL(SELECTAGE
FROMS
第9页
WHERESEX=’F’);
4-4试用SQL更新语句表达对给出的教务管理数据库中三个基本表S、SC、C进行如下更新操作:
⑴往基本表S中插入一个学生元组(‘3’,‘张晶’,21)。
⑵在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(SNO,SNAME,SEX)。
⑶在基本表SC中删除尚无成绩的选课元组。
⑷把张成民同学在SC中的选课记录全部删去。
⑸把选修高等数学课程中不及格的成绩全部改为空值。
⑹把低于总平均成绩的女同学成绩提高5%。
⑺在基本表SC中修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。
解:
⑴INSERTINTOS(S#,SNAME,AGE)
VALUES(‘3’,’张晶’,21);
INSERTINTOSTUDENT⑵(SNO,SNAME,SEX)
SELECTS#,SNAME,SEX
FROMS
WHERES#IN(SELECTS#
FROMSC
WHERE80<=ALL(SELECTGRADE
FROMSC
GROUPBYS#));
DELETEFROMSC⑶
WHEREGRADEISNULL;
DELE⑷TE
FROMSC
WHERES#IN(SELECTS#
FROMS
WHERESNAME=’张民’)
⑸UPDATESC
SETGRADE=NULL
WHEREGRADE<60ANDC#IN(SELECTC#
FROMC
WHERECNAME=’高等数学’);
⑹UPDATESC
SETGRADE=GRADE*
WHERES#IN(SELECTS#
FROMS
WHERESEX=’F’)
ANDGRADE<(SELECTAVG(GRADE)
FROMSC);
⑺用两个UPDATE语句实现:
UPDATESC
第10页
SETGRADE=GRADE*
WHEREC#=’4’ANDGRADE>75;
UPDATESC
SETGRADE=GRADE*
WHEREC#=’4’ANDGRADE<=75;
注意:
这两个UPDATE语句的顺序不能颠倒。
4-5假设某“仓库管理”关系