计算机三级数据库技术真题_2017年计算机三级《数据库技术》设计与应用试题及答案

副标题:2017年计算机三级《数据库技术》设计与应用试题及答案

时间:2023-07-23 19:32:01 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

 

三、设计与应用题(共30分)
1.已知某教务管理系统的设计人员在需求分析阶段收集到下列原始数据表格:

教师

教师号

教师名

职称

工资

上级领导教师号

9868

王文华

教授

8000

null

9983

李一斌

副教授

6000

9868

9985

丁一

讲师

9868

0783

王润泽

讲师

9868

0899

欧阳丹妮

讲师

9868

课程

课程号

课程名

学分

教材号

教材名

出版社名

任课教师号

C2006

计算机原理

3

11

计算机原理

清华大学出版社

9868

C2006

计算机原理

3

12

计算机原理与应用

高等教育出版社

9868

C2004

数据结构

3

13

数据结构

清华大学出版社

9868

C2010

数据库原理

13

14

数据库原理

清华大学出版社

9868

C2010

数据库原理

3

15

数据库原理与技术

高等教育出版社

9868

S3001

音乐欣赏

2

16

音乐欣赏

清华大学出版社

9983

已知该业务系统存在如下规则:
Ⅰ.每个教师有的教师号,每个教师号对应的一名教师;
Ⅱ.每门课程有的课程号,每个课程号对应的一门课程;
Ⅲ.每本教材有的教材号,每个教材号对应的一本教材;
Ⅳ.每个教师最多只有一个上级领导,也可以没有上级领导;
V.一门课程仅由一名教师讲授;
Ⅵ.一本教材仅用于一门课程。(12分)
(1)请根据原始数据表及业务规则,给出该系统的关系模式,保证每个关系模式满足3NF,并说明每个关系模式的主码和外码。
(2)画出该系统的ER图,ER图中需给出每个实体集的属性,主码属性用下划线标识。
2.在SQL Server 2008中,设某数据库中有商品表(商品号,商品名,进货价格),商品号为主码;销售表(商品号,销售时间,销售数量,销售价格,本次利润),商品号和销售时间为主码,销售价格为本次销售商品的单价。现要求每当在销售表中插入前4列数据时(假设一次只插入一行数据),系统自动计算本次销售产生的利润,并将该利润赋给销售表的第5列“本次利润”。请编写实现上述功能的后触发型触发器代码。(10分)
3.在进行某学校教务管理系统的数据库设计时,数据库设计人员设计了如下几个关系模式:
系(系号,系名),系号为主码
学生(学号,姓名,所在系号),学号为主码
课程(课程号,课程名,开课系号),课程号为主码
选课(学号,课程号,选课时间),学号和课程号为主码
开发人员在将关系模式实施到SQL Server 2008的“教务”数据库时,使用了如下表结构定义语句:
CREATE TABLE系(
系号varchar(10)NOT NULL,
系名varchar(100)
)
CREATE TABLE学生(
学号varchar(50)NOT NULL,
姓名varchar(50),
所在系号varchar(10)
)
CREATE TABLE课程(
课程号varchar(50)NOT NULL,
课程名varchar(100),
开课系号varchar(10)
)
CREATE TABLE选课(
学号varchar(50)NOT NULL,
课程号varchar(50)NOT NULL,
选课时间datetime
)
在执行如下查询语句时发现执行效率很低:
SELECT *FROM选课JOIN学生0N学生.学号=选课.学号
JOIN系ON系.系号=学生.所在系号
JOIN课程0N课程.课程号=选课.课程号
WHERE系.系号=ˊ012 ˊ
AND convert(vvarchar(10),选课时间,120)>=ˊ2010-01-01ˊ
(1)在查找原因时发现建表语句有问题。请指出问题并说明该问题是否会影响此查询语句的执行效率。(4分)
(2)设已在“选课”表的“选课时间”列及“学生”表的“所在系号”列上建立了索引。请问这两个索引是否能够提高该查询语句的执行效率?如果不能,请说明原因。(4分)

 

三、设计与应用题
1.(1)【解题思路】
关系的描述称为关系模式,它可以形式化地表示为R(U,D,DOM,F)。要想使转换生成的关系模式满足3NF,则必须满足关系模式中每一个非主属性既不部分依赖于码也不传递依赖于码。根据题目中的表中的数据和业务系统的规则可知,共有四个实体存在,分别为教师、课程、教材、职称,职称作为实体而不是教师的属性是因为职称与工资挂钩,考虑到其有进一步描述的特性,所以把职称作为一个关系而不是教师的一个属性,而且教师号、职称、工资之间存在传递依赖,不满足3NF。
【参考答案】
教师(教师号,教师名,上级领导教师号,职称)
主码:教师号;外码:上级领导教师号、职称
职称(职称,工资)
主码:职称;外码:无
课程(课程号,课程名,学分,教材号,任课教师号)
主码:课程号;外码:教材号,任课教师号
教材(教材号,教材名,出版社)
主码:教材号;外码:无
(2)【解题思路】
E-R图也称实体一联系图,提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。实体与属性的划分给出如下两条规则:①作为“属性”,不能再具有需要描述的性质,“属性”必须是不可分的数据项,不能包含其它属性。②“属性”不能与其它实体有联系,即E-R图中所表示的联系是实体之间的联系。题目中教师与课程有讲授关系,课程和教材有使用关系,教师与职称有聘用关系。
【参考答案】

2.【解题思路】
触发器是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。触发器类似于约束,但比约束更加灵活,可以实施比FOREIGN KEY约束、CHECK约束更为复杂的检查和操作,具有更精细和强大的数据控制能力。
触发器的创建格式:
CREATE TRIGGER[schema_name.]trigger_name
ON{tablelview}
{FORlAFFERIINSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
AS{Sql_statement}
[;]
对应于本题中,触发事件为在销售表中插入前四列,条件为无条件执行,触发体动作为计算本次利润并插入表中。
【参考答案】
CREATE TRIGGER calcu_product
AFTER INSERT ON销售表
FOR EACH ROW
AS BEGIN
DECLARE@PurchasePrise float/*对应商品的进价的参数*/
SELECT@PurchasePrise=进货价格FROM商品表WHERE商品号=new.商品号
UPDATE销售表SET本次利润=new.销售数量*(new.销售价格-@PurchasePrise)WHERE商
品号=new.商品号AND销售时间=New.销售时间
/*因为是行级触发器,所以可以使用更新后的新值,用new*/
END
3.(1)【解题思路】
本题中查询语句的功能是得到12系全体学生在2010年1月1日后的选课情况的汇总表。在每个数据表的定义时都必须严格定义表中的完整性约束条件,包括主键的设置,否则之后会出现主键有相同值的情况,破坏了数据的完整性。
【参考答案】
建表时没有设置主键,也没有说明外键,但不会影响此查询语句的执行效率。
(2)【解题思路】
“选课”表的“选课时问”列上建立了索引,从而能够提高执行效率。经常出现在Where子句中的字段,特别是大表的字段,应该建立索引。索引的作用就类似于书的目录,即会按照章节的顺序排列。因此如果在一本数百页的书里面查找某个章节位置的时候,就可以只扫描书的目录。扫描的范围缩了n倍,查询的效率自然就会提高。另外,在SQL Server内存够用的情况下,索引会被放到内存中,在内存中查找自然又会提高效率,所以必须合理利用索引。
【参考答案】
“选课”表的“选课时问”可以建立索引,从而提高了查询效率,而“学生”表的“所在系号”建立索引不会提高查询效率。索引的意义就是将记录按目标关键字顺序排列,这样查找某个目标关键字的对应值的位置就缩小了查找范围。“选课时间”的重复率低,所以可以作为索引,而学生“所在系号”的重复率太高,则不会提高查询效率。

 

2017年计算机三级《数据库技术》设计与应用试题及答案.doc

本文来源:https://www.wddqw.com/g3Rn.html