2021数据结构考研《数据库系统概论》考研真题大题解析
1、设计与应用题
1某汽车维修公司需建立一个汽车维修数据库,该数据库中需要存储和管理下列信息:
车辆信息:车牌号,车型,发动机号,行驶里程,车辆所有人,
维修项目:项目号,项目名称,维修费
汽车备件:备件号,备件名称,备件单价,库存数量
以上数据之间存在下列约束:
可以对一个车辆进行多个维修项目,每个维修项目可用于多个车辆,维修项目完成后要在数据库中记录维修时间;
一种备件可用于多个维修项目,每个维修项目最多只使用一种备件,但每种备件的数量可以是多个。
①根据以上需求构建该数据库的概念模型(画E-R图)。
②假设车辆信息有如下约束:
车牌号:标识属性,取值形式为:第1个字符是“京”,第2个字符为“A”到“Z”的字母,第3到第7个字符均是“0”到“9”的数字。此列采用普通编码定长字符型,非空;
车型:普通编码定长字符型,长度为6,默认值为“轿车”;
发动机号:普遍编码定长字符型:长度为6,非空;
行驶里程:整型,取值大于或等于0;
车辆所有人:普通编码定长字符型,长度为8,非空;
:普通编码定长字符型,长度为13,取值唯一。
写出创建满足上述要求的车辆信息表的SQL语句。
(注:表名和列名均用题中给出的中文名,SQL语句中大、小写字母均可。)
答:概念模型如下:
【解析】①根据题意可知,一个车辆可以进行多个项目的维修,一个维修可以用于多个车辆,所以实体车辆信息与维修项目之间是多对多的关系;一种配件可用于多个维修项目,但一个维修项目最多只能用一种配件,所以配件与维修项目是一对多的关系。
②SQL语句中车牌号的取值形式限定可用CHECK约束来表示。
2现有关系模式:
教师授课(教师号,姓名,职称,课程号,课程名,学分,教科书名)其函数依赖集为:
{教师号→姓名,教师号→职称,课程号→课程名,课程号→学分,课程号→教科书名}
①指出这个关系模式的主码。
2021年考研时间是几号②这个关系模式是第几范式,为什么?
③将其分解为满足3NF要求的关系模式(分解后的关系模式名自定)
答:①主码为:(教师号、课程号)
②第1范式,因为存在部分依赖。
③分解方法为:
教师表(教师号,姓名,职称)
课程表(课程号,课程名,学分,教科书名)
教师授课表(教师号,课程号)
【解析】①外码的数据项需参照主码的数据项来操作,主码和外码是用来实现参照完整性的。
②第一范式:(1NF)无重复的列;第二范式:(2NF)属性完全依赖于主键;第三范式:(3NF)属性不依赖于其它非主属性。
3为在某种程度上保证某数据库系统可靠地运行,在SQL Server 2000环境中,对其制定有下列三种备份策略。假设对此数据库进行一次完全备份需要4小时,差异备份需要2小时,日志备份需要1小时。设所有备份都是从凌晨1:00开始。
策略1:每周周日进行一次完全备份,每周周一至周六每天进行一次日志备份;
策略2:每周周日进行一次完全备份,每周周一至周六每天进行一次差异备份;
策略3:每天进行一次完全备份。
①假设需要保留一年的备份数据,比较三种备份策略所占用的空间。
②比较每种备份策略的备份和恢复速度。
答:①占用空间量从大到小排序为:策略3,策略2,策略1;②备份速度从快到慢排序为:策略1,策略2,策略3;恢复速度从快到慢排序为:策略3,策略2,策略1。
【解析】完全备份不考虑文件的存档属性,备份全部选中的文件夹,所以占用空间最大,但是速度最快;
差异备份备份上一次完全备份后发生变化的所有文件,是针对于完全备份的,恢复时需要完全数据备份和最近的差异备份;
日志备份需要有完全数据备份,备份自上次backup log语句到当前日志尾之间的所有数据库修改;日志备份的数据量少,只备份上次备份到现在的修改,恢复时需要完全数据库备份和所有的日志备份,占用空间最小,但恢复时间最慢。
4有两张关系表:
Students(SID,SName,Sex,Dept)
Prizing(SID,PName,Type,PDate)
Students表描述的是学生基本信息,Prizing表描述的是学生获奖信息。
①若在应用程序中经常使用如下查询语句:
SELECT S.SID,SName,PName,Type FROM Students AS S JOIN Prizing AS P ON S.SID=P.SID;
请问能否使用聚集文件提高此查询的性能?并给出原因。
②为了提高查询性能,数据库管理员在Students表的SName列上建立了一个非聚集索引SName_ind。如果应用程序使用如下语句查询数据:
SELECT*FROM Students WHERE SName like‘%华’;
请问SName_ind索引是否能够提高语句的查询速度,并给出原因。
答:①可以用聚集文件提高查询性能。因为聚集文件将不同关系表中有关联关系的记录存储在一起,减少了系统的物理I/O操作次数,提高了查询性能。
②此索引不能提高该语句的查询速度。因为该索引是建立在SNAME上的非聚集索引,以SNAME首字母排序,而查询语句查询的名字是最后一个“华”的SNAME,所以仍然需要全部扫描students表,因此不能提高该语句的查询速度。
【解析】聚集文件本身存储不同类型表的联系,能够减少表间的连接操作,提高查询性能。而非聚集索引对于以SNAME首字母排序时有效。
5某公司需建立产品信息数据库,经调查其业务要求如下:
Ⅰ.一种产品可以使用多个不同种类的部件,也可以使用多个不同种类的零件;一种部件至少被用在一种产品中;一种部件可以由多个不同种类的零件组成;一种零件至少被用在一种产品或一种部件中;
Ⅱ.对于一种具体的部件,要记录这种部件使用的各种零件的数量;
Ⅲ.对于一种具体的产品,要记录这种产品使用的各种部件数量和各种零件数量,但部件所使用的零件数量不计入该种产品的零件数量;
Ⅳ.一个供应商可供应多种零件,但一种零件只能由一个供应商供应。根据以上业务要求,某建模人员构建了如下E-R图: