《刘金岭版 数据库原理及应用习题参考答案.docx》由会员分享,可在线阅读,更多相关《刘金岭版 数据库原理及应用习题参考答案.docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库原理及应用习题参考答案习题1 1-1 文件系统阶段的数据管理有哪些特点? 答:文件系统阶段主要有5个特点:数据以“文件形式长期保存;数据的逻辑构造及物理构造有了区分;文件组织已多样化;数据面对应用;对数据的操作以记录为单位。1-2 文件系统阶段的数据管理有些什么缺陷?试举例说明。 答:主要有3个缺陷:数据冗余;数据不一样性;数据联系弱。 例如学校里教务处, 财务处, 保健处建立的文件中都有学生详细资料,如联系 ,家庭住址等。这就是“数据冗余;假如某个学生搬家,就要修改3个部门文件中的数据,否那么会引起同一数据在3个部门中不一样;产生上述问题的缘由是这3个部门的文件中数据没有联系。1-3
2、数据库阶段的数据管理有哪些特色 答:主要有5个特点:接受数据模型可以表示困难的数据构造;有较高的数据独立性;为用户供应了便利的用户接口;供应了4个方面的数据限制功能;对数据的操作以数据项为单位,增加了系统的灵敏性。1-4 什么是数据独立性在数据库中有哪两级独立性 答:数据独立性是指应用程序及DB的数据构造之间的相互独立。在物理构造变更时,尽量不影响应用程序,称为物理独立性;在逻辑构造变更时,尽量不影响应用程序,称之为逻辑数据独立性。1-5 试说明DB, DBMS和DBS三个概念。 答:DB是长期存储在计算机内, 有组织的, 统一管理的相关数据的集合。 DBMS是位于用户及0S之间的一层数据管理
3、软件,它为用户或应用程序供应访问DB的方法。 DBS是实现有组织地, 动态地存储大量关联数据, 便利多用户访问的计算机硬件, 软件和数据资源组成的系统,即接受数据库技术的计算机系统。1-6 SQL Server 2005有哪些数据类型?答:SQL Server中数据类型分为整型, 浮点型, 二进制数据型, 逻辑型, 字符型, 文本型, 图形型, 日期时间型, 货币型, 自定义类型, 可变数据类型和表数据类型。1-7 列举SQL Server 2005中新增的主要功能。 答:SQL Server 2005中新增的主要功能有: Notification Services增加功能; Reportin
4、g Services增加功能,其中包括:报表功能的增加功能, Reporting Services设计时增加功能, Reporting Services可编程性的增加功能, Reporting Services可管理性和部署的增加功能; 新增的Service Broker以实现SQL Server中的消息传递方面具有以下优势:高伸缩性, 消息协调, 排序和锁定, 集成数据库数据, 集成数据库平安性; 数据库引擎增加功能; 数据访问接口方面的增加功能; SQL Server Analysis ServicesSSAS的增加功能; Integration Services的增加功能; 在可管理性,
5、 可用性, 可编程性, 移动性, 可伸缩性和性能方面供应了改良。 工具和好用工具增加功能;1-8 SQL Server 2005的好用程序和常用工具有哪些? 答:SQL Server 2005给出的常用应用程序和好用工具有:企业管理器, 查询分析器, 商业智能开发平台, SQL Server分析器, SQL Server 2005数据库引擎优化程序, SQL Server 配置管理器等。习题22-1 名词说明逻辑数据 物理数据 联系的元数 1:1联系1:N联系 M:N联系 数据模型 概念数据模型 外模式 概念模式 内模式 外模式/模式映象模式/内模式映象 数据独立性 物理数据独立性 逻辑数据独
6、立性答:逻辑数据:指程序员或用户用以操作的数据形式。物理数据:指存储设备上存储的数据。联系的元数:及一个联系有关的实体集个数,称为联系的元数。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联系。数据模型:能表示实体类型及实体间联系的模型
7、称为“数据模型。概念数据模型:独立于计算机系统, 完全不涉及信息在计算机中的表示, 反映企业组织所关切的信息构造的数据模型。外模式:是用户用到的那局部数据的描述。概念模式:数据库中全部数据的整体逻辑构造的描述。内模式:DB在物理存储方面的描述。外模式/模式映象:用于定义外模式和概念模式之间数据构造的对应性。模式/内模式映象:用于定义概念模式和内模式之间数据构造的对应性。数据独立性:应用程序和DB的数据构造之间相互独立,不受影响。物理数据独立性:在DB的物理构造变更时,尽量不影响应用程序。逻辑数据独立性:在DB的逻辑构造变更时,尽量不影响应用程序。2-2 逻辑记录及物理记录, 逻辑文件及物理文件
8、有哪些联系和区分答:逻辑数据是用户用以操作的数据形式,是抽象的概念化数据。物理数据是实际存放在存储设备上的数据。逻辑数据及物理数据在构造上可以差异很大,需通过两级映象来进展数据传输和格式转换。从以上的说明可以看出,逻辑记录和逻辑文件是用户在程序中运用的记录和文件,而物理记录和物理文件是指磁盘上的记录和文件。逻辑记录, 文件及物理记录, 文件在构造, 组成上可以有很大的差异,而数据库管理软件就是通过三级构造两级映象来实现逻辑数据及物理数据之间的转换。 2-3 试述ER模型, 层次模型, 网状模型, 关系模型和面对对象模型的主要特点。答:ER模型干脆表示实体类型及实体间联系,及计算机系统无关,充分
9、反映用户的需求,用户简洁理解。层次模型的数据构造为树构造,记录之间联系通过指针实现,查询较快,但DML属于过程化的语言,操作困难。网状模型的数据构造为有向图,记录之间联系通过指针实现,查询较快,并且简洁实现M:N联系,但DML属于过程化的语言,编程较困难。关系模型的数据构造为二维表格,简洁为初学者理解。记录之间联系通过关键码实现。DML属于非过程化语言,编程较简洁。面对对象模型能完整描述现实世界的数据构造,具有丰富的表达实力,能表达嵌套, 递归的数据构造。但涉及的学问面较广,用户较难理解,这种模型尚未普及。 2-4 数据之间的联系在各种构造数据模型中是怎么实现的答:在层次, 网状模型中,数据之
10、间的联系通过指针实现的;在关系模型中,数据之间联系通过外键和主键间联系实现的;在面对对象模型中,数据之间嵌套, 递归联系通过对象标识符(OID)实现的。2-5 DB的三级模式构造描述了什么问题?试详细说明。答:DB的三级模式构造是对数据的三个抽象级别,分别从外部(用户)级, 概念级和内部级去视察数据库。外部级是用户运用的局部数据库的逻辑构造,其描述称为外模式。概念级是DB的整体逻辑构造,其描述称为概念模式。内部级是DB的物理构造,其描述称为内模式。2-6 试述概念模式在数据库构造中的重要地位。答:数据按外模式的描述供应应用户,按内模式的描述存储在磁盘中,而概念模式供应了连接这蘧级的相对稳定的中
11、间观点,并使得两级的任何一级的变更都不受另一级的牵制。2-7 什么是数据独立性?其目的是什么?数据库独立性是指应用程序及DB的数据构造之间相互独立。其目的是在物理构造变更或逻辑构造变更时,尽量不影响应用程序。习题3 3-1 名词说明:关系模式 关系实例 属性 元组 超键 候选键主键 外键 实体完整性规那么 参照完整性规那么答:关系模式:是对关系的描述,包括模式名, 诸属性名, 值域名和模式的主键。关系实例:关系模式详细的值,称为关系实例。属性:即字段或数据项,及二维表中的列对应。属性个数,称为元数。元组:即记录,及二维表中的行对应。元组个数,称为基数。超键:能惟一标识元组的属性或属性集,称为关
12、系的超键。候选键:不含有多余属性的超键,称为候选键。主键:正在运用的, 用于标识元组的候选键,称为主键。外键:属性集F是模式S的主键,在模式R中也出现,那么称F是模式R的外键。实体完整性规那么:实体的主键值不允许是空值。参照完整性规那么:依靠关系中的外键值或者为空值,或者是相应参照关系中某个主键值。3-2 为什么关系中的元组没有先后依次,且不允许有重复元组?答:由于关系定义为元组的集合,而集合中的元素是没有依次的,因此关系中的元组也就没有先后的依次(对用户而言)。这样既能削减逻辑排序,又便于在关系数据库中引进集合论的理论。每个关系模式都有一个主键,在关系中主键值是不允许重复的。假如关系中有重复
13、元组,那么其主键值确定相等,起不了惟一标识作用,因此关系中不允许有重复元组。 3-3 外健值何时允许为空?何时不允许为空?答:在依靠表中,当外键是主键的组成局部时,外键值不允许为空;否那么外键值允许为空。3-4 笛卡尔积, 等值连接和自然连接三者之间有什么区分?答:笛卡儿积是一个根本操作,而等值连接和自然连接是组合操作。设关系R的元数为r,元组个数为m;关系S的元数为s。,元组个数为n。那么,RS的元数为r+s,元组个数为mn;ijR S的元数也是r+s,但元组个数小于等于mn;R S的元数小于等于r+s,元组个数也小于等于mn: 3-5 设有关系R和S,如图3.18所示。ABC3274652
14、47733ABC374253RS图3.18 关系R和S22计算RS,R-S,RS,RS,3,2(S),B5(R),R S,R S。ABC327436524477335RSABC324654773R-SABC723RS332277446655224477773333373737374242424253535353RSCB53423,2(S)ABC742433B5(R)723345R S22ABC723R SBC 3-6 设有关系R和S,如下图。计算R S,R S,A=C(RS)。ABacdbbeBCbebcadRS图9 关系R和SABCaaccdbbbbecdcdaR SACaaccbbbbbb
15、bbcdcdR SB23SEX=M(SC) CNAME,TEACHER(SNO=S3(SC C) SNAME(SEX=FTEACHER=LIU(S SC C) CNO(C)-CNO(SNAME=WANG(S SC) 1(1=425(SCSC) CNO,CNAME(C (SNO,CNO(SC)SNO(S) SNO,CNO(SC)CNO(TEACHER=LIU(C) 3-8 在题的三个关系中,用户有一查询语句:检索数学系的学生选修计算机系开设, 试写出该查询的关系代数表达式。 试写出该查询优化的关系代数表达式。 画出该查询初始的关系代数表达式的语法树。 运用节的优化算法,对语法树进展优化,并画出优
16、化后的语法树。 解: CNAME,TEACHER(DEPT=数学系(S SC C) 设L1=SNO(DEPT=数学系(S),L2=SNO,CNO(SC),那么优化的关系代数表达式为:CNAME,TEACHER(L1L2)C) 查询初始的关系代数表达式可表达为: CNAME,TEACHER(DEPT=数学系(L(SSC)C) 此处L为S, SC, C中的全部属性公共属性只取一次。LSDEPT=数学系CNAME,TEACHERSSCC 优化后的语法树为DEPT=数学系CNAME,TEACHERSSCSNOSNO,CNOC 3-9 为什么要对关系代数表达式进展优化? 答:关系代数表达式由关系代数操作
17、组合而成。操作中,以笛卡尔积和连接操作最费时间,并生成大量的中间结果。假如干脆按表达式书写的依次执行,必将花费许多时间,并生成大量的中间结果,效率较低。在执行前,由DBMS的查询子系统先对关系代数表达式进展优化,尽可能先执行选择和投影操作,以便削减中间结果,节约时间。优化工作是由DBMS做的,用户书写时不必关切优化一事,仍以简练的形式书写。习题4 4-1 名词说明 根本表 视图 实表 相关子查询 联接查询嵌套查询 交互式SQL 嵌入式SQL 游标 答:根本表:实际存储在数据库中的表,称为根本表。视图:是从根本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是数据库中只存放视图的定义而不
18、存放视图的数据。实表:是对根本表的别称。相关子查询:SELECT语句嵌套时,子查询中查询条件依靠于外层查询中的值,因此子查询要反复求值供外层查询运用。这种子查询称为相关子查询。连接查询:查询时要从多个根本表中提取数据,此时把多个根本表写在同一层的FROM子句中,这种查询形式称为连接查询。嵌套查询:查询时要从多个根本表中提取数据,此时把多个根本表分别放在不同层次上的FROM子句中,这种查询形式称为嵌套查询。交互式SQL:在终端交互方式运用的SQL语言。嵌入式SQL:嵌入在高级语言的程序中运用的SQL语言。游标:游标是及某一查询相联系的符号名。游标有游标关系和游标指针两层含义。在游标翻开时,游标(
19、指针)指向查询结果的第一个记录之前。 4-2 对于教务管理数据库的三个根本表 S(SNO,SNAME, SEX, AGE,SDEPT) SC(SNO,CNO,GRADE) C(CNO,CNAME,CDEPT,TNAME) 试用SQL的查询语句表达以下查询: 检索LIU老师所授课程的课程号和课程名。 检索年龄大于23岁的男学生的学号和姓名。 检索学号为202115146的学生所学课程的课程名和任课老师名。 检索至少选修LIU老师所授课程中一门课程的女学生姓名。 检索WANG同学不学的课程的课程号。 检索至少选修两门课程的学生学号。 检索全部学生都选修的课程的课程号及课程名。 检索选修课程包含LI
20、U老师所授课程的学生学号。解: SELECT CNO,CNAME FROM C WHERE TEACHER=LIU; SELECT SNO,SNAME FROM S WHERE AGE23 AND SEX=M; SELECT CNAME,TEACHER FROM SC,C WHERE SC.CNO=C.CNO AND SNO=202115146 SELECT SNAME (连接查询方式) FROM S,SC,C WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND SEX=F AND TEACHER=LIU; 或:SELECT SNAME (嵌套查询方式) FROM
21、S WHERE SEX=FAND SNO IN (SELECT SNO FROM SC WHERE CNO IN (SELECT CNO FROM C WHERE TEACHER=LIU)或:SELECT SNAME (存在量词方式)FROM SWHERE SEX=F AND EXISTS(SELECT* FROM SC AND EXISTS(SELECT * FROM C WHERE C.CNO=SC.CNO AND TEACHER=LIU) SELECT CNO FROM C WHERE NOT EXISTS (SELECT * FROM S,SC WHERE S.SNO=SC.SNO A
22、ND SC.CNO=C.CNO AND SNAME=WANG); FROM SC AS X,SC AS Y WHERE X.SNO=Y.SNO AND X.CNO!=Y.CNO; FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE SNO=S.SNO AND CNO=C.CNO); SELECT DISTINCT SNOFROM SC AS XWHERE NOT EXISTIS(SELECT * FROM C WHERE TEACHER=LIU AND NOT EXISTS (SEL
23、ECT * FROM SC AS Y WHERE Y.SNO=X.SNO AND Y.CNO=C.CNO); 4-3 试用SQL查询语句表达以下对教务管理数据库的三个根本表S, SC, C查询: 统计有学生选修的课程门数。 求选修4号课程的学生的平均年龄。 求LIU老师所授课程的每门课程的学生平均成果。 统计每门课程的学生选修人数超过10人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,假设人数一样,按课程号升序排列。 检索学号比WANG同学大,而年龄比他小的学生姓名。 检索姓名以WANG打头的全部学生的姓名和年龄。 在SC中检索成果为空值的学生学号和课程号。 求年龄大于女同学
24、平均年龄的男学生姓名和年龄。 求年龄大于全部女同学年龄的男学生姓名和年龄。解: SELECT COUNT(DISTINCT CNO) FROM SC; SELECT AVG(AGE) FROM S,SC WHERE S.SNO=SC.SNO AND CNO=4AND SEX=F; SELECT C.CNO,AVG(GRADE) FROM SC,C WHERE SC.CNO=C.CNO AND TEACHER=LIU; SELECT CNO,COUNT(SNO) FROM SC GROUP BY CNO HAVING COUNT(*)10 ORDER BY 2 DESC,1; SELECT SN
25、AME FROM S WHERE SNOALL(SELECT SNO FROM S WHERE SNAME=WANG AND AGE(SELECT AVG(AGE) FROM S WHERE SEX=F); SELECT SNAME,AGE FROM S WHERE SEX=MAND AGEALL(SELECT AGE FROM S WHERE SEX=F); 4-4 试用SQL更新语句表达对数据库中三个根本表S, SC, C进展如下更新操作: 往根本表S中插入一个学生元组(202112143,张晶,21)。 在根本表S中检索每一门课程成果都大于等于80分的学生学号, 姓名和性别,并把检索到的
26、值送往另一个已存在的根本表STUDENT(SNO,SNAME,SEX)。 在根本表SC中删除尚无成果的选课元组。 把张成民同学在SC中的选课记录全部删去。 把选修高等数学课程中不及格的成果全部改为空值。 把低于总平均成果的女同学成果提高5%。 在根本表SC中修改4号课程的成果,假设成果小于等于75分时提高5%,假设成果大于75分时提高4%用两个UPDATE语句实现。解: INSERT INTO S(SNO,SNAME,AGE) VALUES(202112143,张晶,21); INSERT INTO STUDENT(SNO,SNAME,SEX) SELECT SNO,SNAME,SEX FRO
27、M S WHERE SNO IN (SELECT SNO FROM SCWHERE 80=ALL(SELECT GRADE FROM SC GROUP BY SNO); DELETE FROM SC WHERE GRADE IS NULL; DELETE FROM SC WHERE SNO IN(SELECT SNO FROM S WHERE SNAME=张民) UPDATE SC SET GRADE=NULL WHERE GRADE60 AND CNO IN(SELECT CNO FROM C WHERE CNAME=高等数学); UPDATE SC WHERE SNO IN(SELECT
28、SNO FROM S WHERE SEX=F) AND GRADE75; UPDATE SC WHERE CNO=4AND GRADE80; SELECT SNO,AVG_GRADE FROM S_GRADE WHERE C_NUM(SELECT C_NUM FROM S_GRADE SNO=202112121); UPDATE S_GRADE SET C_NUM=C_NUM+1 WHERE SNO=202115122 DELETE FROM S_GRADE WHERE C_NUM4;答: 允许查询。相应的操作如下:SELECT SNO,COUNT(CNO) AS C_NUM,AVG(GRAD
29、E) AS AVG_GRADEFROM SCGROUP BY SNO; 允许查询。相应的操作如下:SELECT SNO,COUNT(CNO)AS C_NUMFROM SCGROUP BY SNOHAVING AVG(GRADE)80; 允许查询。相应的操作如下:SELECT SNO,AVG(GRADE) AS AVG_GRADEFROM SCGROUP BY SNOHAVING COUNT(CNO)(SELECT COUNT(CNO) FROM SC GROUP BY SNO HAVING SNO=202112121); 不允许。C_NUM是对SC中的学生选修课程的门数进展统计,在未更改SC表
30、时,要在视图S_GRADE中更改门数,是不行能的。 不允许。在视图S_GRADE中删除选修课程的门数在4门以上的学生元组,势必造成SC中这些学生学习元组的删除,这不确定是用户的原意,因此运用分组和聚合操作的视图,不允许用户执行更新操作。4-7 预处理方式对于嵌入式SQL的实现有什么重要意义?答:此时宿主语言的编译程序不必改动,只要供应一个SQL函数定义库,供编译时运用。预处理方式只是把源程序中的SQL语句处理成宿主语言的函数调用形式。4-8 SQL的集合处理方式及宿主语言单记录处理方式之间如何协调?答:用游标机制协调。把SELECT语句查询结果定义成游标关系,以运用文件的方式来运用游标关系。及游标有关的SQL语句有4个:游标定义,游标翻开,游标推动,游标关闭。4-9嵌入式SQL的DML语句何时不必涉及到游标?何时必需涉及到游标?答:不运用游标的SQL语句有下面两种状况: INSERT, DELETE, UPDATE语句,只要加上前缀和完毕标记,就能嵌入在宿主语言程序中运用; 对于SELECT语句,假如查询结果确定是