1、全国计算机等级考试四级数据库论述题真题(23)5为学校中学生选课管理这个现实问题进行数据库模式设计。根据调查分析,拟定它的属性集合为: US#,C#,SNAME,CNAME,TEACHER,GRADE, 5为学校中学生选课管理这个现实问题进行数据库模式设计。根据调查分析,拟定它的属性集合为: US#,C#,SNAME,CNAME,TEACHER,GRADE,SD 下面给出两种拟定的模式设计方案: 方案一:只有一个关系模式: R(S#,C#,SNAME,CNAME,TEACHER,GRADE,SD) 方案二:假如根据属性之间存在的联系或相关性,建立如下三个关系: S(S#,SNAME,SD),C
2、(C#,CNAME,TEACHER),SC(S#,C#,GRADE) (1).试分析这两种模式设计方案各自的优缺陷。(26分) (2).通常情况下你认为哪种方案更“好”些?请说明理由。(4分) 答案: 对一个现实问题,进行关系数据库模式设计,通常其设计结果不是唯一的。每个方案有各自的优缺陷。对本题可以得到如下的分析结果: 对方案一:这个关系模式存在如下问题:(每个问题4分,共16分。若只给出问题,没有说明得2.5分) (1).数据存在大量冗余。例如:(至少给出1项) S#,SNAME,SD要反复“每个学生选修的课程数” C#,CNAME,TEACHER要反复“学生选修这门课的人数” (2).更
3、新异常。由于数据存在大量冗余,容易引起更新异常。例如,当更新某门课程的教师时,由于数据存在大量冗余,也许导致与这门课程有关的元组中,一部分元组的TEACHER的值被更新,而另一部分元组的TEACHER的值未被更新。 (3).插入异常。显然,这个关系的主键是S#和C#。由于主键属性值不能为空值,当登记学生信息时,由于该学生尚未选课,C#未拟定,该学生的其他信息也无法登入,这不是我们的意愿。 (4).删除异常。假如某些课程因故删除了,则只选修这些课程的学生信息也被删除了,这往往也不是我们的本意,我们并不希望删除这些学生的信息。 对方案二:假如根据属性之间存在的联系或相关性,建立了三个关系,则方案一
4、中存在的异常现象被消除了。(得5分) 但对诸如“查找张三的数据库技术课程的成绩”之类的问题时,这需要连接这三个关系才干完毕,这个查询代价高并且会影响效率。(得2.5分) 相比之下,第一个方案则可直接投影、选择就可以完毕这类查询,不需要连接操作,显然代价低并且效率高。(得2.5分) 比较这两种设计方案:本人认为第二种设计方案虽然对某些查询问题连接操作较多,但它仍比第一种方案“好”,由于它不存在上述异常问题。(得4分) 6.(2023年)在学生选课课程数据库中有三个关系:S(S#,SNAME,SEX,AGE,SD),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)。它们的主码
5、分别是S#,(S#,C#),C#,并且其他属性都允许为空值(NULL)。用下面的SQL语句创建了两个视图: createviewCS_SasselectS#,SNAME,AGEfromS whereSD计算机系; createviewS_G(S#,GAVG)asselectS#,avg(GRADE) fromSCgroupbyS#; 若用下面的SQL语句对上述视图进行修改,它们能被成功执行吗?为什么? (1)updateCS_SsetSNAMEWANGPINGwhereS#; (这里假定在表S中存在学生号S#的行。) (2)insertintoCS_Svalues(,YANGXIN,21);
6、(这里假定在表S中不存在学生号S#的行。) (3)updateS_GsetGAVG85whereS#; (这里假定在表SC中存在学生号S#的行。) 规定: 一方面回答这三个SQL语句中哪个(些)能被成功执行,哪个(些)不能被成功执行(12分),再进一步说明能被成功执行或不能被成功执行的理由(18分)。 答案: (1)第(1)和(2)两个SQL语句能被成功执行;第(3)个SQL语句不能被成功执行。 (2)由于对视图的修改最终要转换为对基本表的修改。 对于第(1)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句: updateSsetSNAMEWANGPING wh
7、ereSD计算机系andS#; 对于第(2)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句: insertintoSvalues(,YANGXIN,NULL,21,计算机系) 或insertintoS(S#,SNAME,AGE,SD)values(,YANGXIN,21,计算机系) 转换后的这两个SQL语句,在本题意的假定下是可以被成功执行的。所以第(1)和(2)个SQL语句能被成功执行。 对于第(3)个SQL语句不能被成功执行的理由是:由于视图S_G中的一个行是由表SC中若干行通过度组求平均值得到的,因此对视图S_G的更新就无法转换成对基本表SC的更新。所以
8、第(3)个SQL语句不能被成功执行。全国计算机等级考试四级数据库论述题真题(24)7.(2023年) 设某商品销售数据库中的信息有:员工员、员工名、工资、销售组名、销售组负责人、商品号、商品价、单价、销售日期、销售量、供供应者号、供应者名、供应者地址。假定:一个员工仅在一个销售组;一个销售组可销售多种商品,一种商品只能由一个组销售;一种商品天天有一个销售量;一个供应者可以供应多种商品,一种商品可以多渠道供货。 规定完毕下列各题: (1)根据以上信息,给出ER图。(10分) (2)按规范化规定设计出3NF的数据库模式。(10分) (3)给出数据库模式中每个关系模式的主键和外键。(5分) (4)在
9、所设计的数据库模式上,检索累计销售总额超过50000元的商品号、商品名、销售总额,并按商品号排序。(5分) 答案: (1)ER模型(10分;每个实体1分,涉及属性;每个联系2分,涉及联系类型.) (2)3NF的关系模式:(10分) R1(员工号,员工名,工资,销售组名);(2分,没有销售组名扣1分) R2(销售组名,销售组负责人);(1分) R3(商品号,商品名,单价,销售组名);(2分,没有销售组名扣1分) R4(商品号,销售日期,销售量);(2分) R5(供应者号,供应者名,供应者地址);(1分) R6(商品号,供应者号).(2分) 注:若R1,R3分为二个模式,也要扣1分. (3)主键(
10、3分)外键(2分) R1员工号 R2销售组名 R3商品号销售组名 R4商品号,销售日期商品号 R5供应者号 R6商品号,供应者号商品号,供应者号 (4)(5分) SelectR3.商品号,商品名,sum(销售量)单价(1分) FromR3,R4whereR3.商品名R4.商品名(1分) GroupbyR3.商品名havingsum(销售量)单价%26gt;50000(2分) OrderbyR3.商品名(1分)全国计算机等级考试四级数据库论述题真题(22)3.(2023年)设计一个用于管理睬议室的数据库。经调查分析,得到的数据项列出如下: 房间号r#CHAR(4),部门号d#CHAR(3),部门
11、名称dnameCHAR(20), 房间容量contentINT,部门主管dmanagerCHAR(8),开会日期mdateDATE, 会议名称cnameCHAR(20),会议主题(subject)CHAR(80),会议类型(type), 部门人数dnumINT,当前房间状态stateCHAR(1), 并拟定以会议室(room)信息,部门(department)信息,会议(conference)信息为实体,它们通过“开会(meeting)”联系起来。为了简化问题做如下假定: l 会议以部门召开,但一个部门在同一会议室不能反复召开同一个会议。 l 会议室按部门借用,且不预借。 l 当前房间状态取值
12、为1表达该会议室当前正在开会,取值为0表达该会议室当前未被借用。 数据库概念设计的只包含主键属性的简化ER图如下: cname r# 会议conference 房间room 部门department d# 开会meeting m n p 规定: 数据库的逻辑结构设计:给出相应的表名、表的属性名(数据类型可省)、主键。(14分) 给出下列查询的SQL语句:(16分,每小题4分) a)当前未借用的会议室(房间号)和容量: b)2023年4月8日有哪些部门(部门名称)在开会?他们的主管是谁? c)2023年4月8日信息中心在哪个会议室(房间号)开会?会议名称和主题是什么? d)当前可以适合信息中心开
13、会的有哪些会议室(房间号)? 答案: (1)数据库的逻辑结构设计(给出相应的表名,表结构,主键;(14分) room(r#,content,state)主键:r#(3分) department(d#,dname,dmanager,dnum)主键:d#(3分) conference(cname,subject,type)主键:cname(3分) meeting(r#,d#,cname,mdate)主键(r#,d#,cname)(5分) (2)给出下列查询的SQL语句:(16分,每小题4分) a)当前未借用的会议室(房间号)和容量: selectr#,contentfromroomwheresta
14、te0 b)2023年4月8日有哪些部门(部门名称)在开会?他们的主管是谁? Selectdname,dmanagerfromdepartmentd,meetingm whered.d#m.d#andmdate2023年4月8日 或 Selectdname,dmanagerfromdepartmentd whered.d#in(selectm.d#frommeetingmWheremdate2023年4月8日) c)2023年4月8日信息中心在哪个会议室(房间号)开会?会议名称和主题是什么? Selectr#,ame,subjectfromdepartmentd,meetingm,confer
15、encec whered.d#m.d#ameameand Mdate2023年4月8日anddname信息中心 或(注:本题中Selectr#,ame,.也可以是Selectr#,ame,. Selectr#,ame,subjectfrommeetingm,conferencec WhereMdate2023年4月8日ameameand m.d#(selectd.d#fromdepartmentdwheredname信息中心) d)当前可以适合信息中心开会的有哪些会议室(房间号)? Selectr#fromroomwherestateOand content%26gt;(selectdnumf
16、romdepartmentwheredname信息中心)4.(2023年) (l)、为了维护数据库的参照完整性,当删除被参照关系的元组时,系统也许采用哪些做法?(15分) (2)、若有学生关系S(S#,SNAME,SEX,AGE),其主键为S#;选课关系SC(S#,C#,GRADE),其主键为(S#,C#),且S.S#SC.S#。假定学生号为01001的学生离开学校不再回来了,为此若删除关系S中S#01001的元组时,假如关系SC中有4个元组的S#01001,应当选用哪一种做法?为什么?(15分) 答案: (1)、为了维护数据库的参照完整性,当删除被参照关系的元组时,系统也许采用如下三种做法(
17、每种做法得5分): l)级联删除(cascades):即,当删除被参照关系的元组时,同时将参照关系中所有外键值与被参照关系中要被删除元组的主键值相等(相相应)的元组一起删除。 2)拒绝删除(restricted):即,只当参照关系中没有任何元组的外键值与被参照关系中要被删除的元组的主键值相等(相相应)时,系统才执行该删除操作,否则拒绝执行该删除操作。 3)置空值删除(nullfies):即,当删除被参照关系的元组时,同时将参照关系中所有与被参照关系中要被删除元组的主健值相等(相相应)的外键值都置为空值。 (2)、对于本题的情况,应当选用第一种做法。即,将关系SC中S#01001的4个元组也一起
18、删除。(得10分) 由于当一个学生离开学校不再回来,他的个人信息记录若从S关系中删除了,那么他的选课信息记录就没有保存的必要,也应随之从SC关系中删除。(得5分) 全国计算机等级考试四级数据库论述题真题(21)1.(1997年)本题规定设计一个学生试卷成绩输入、查询和成绩单输出系统(简称SRS)的数据结构和算法要点。问题描述如下: 要输入到SRS系统中的每一份试卷成绩反映一个学生选修一门课程的考试结果,它涉及以下数据项:学号、姓名、课程名、成绩。由于实行了灵活的选课制度,所以每个学生选修多少门课程,选修哪些课程都可以不同。要输入的多份试卷成绩并未按任何数据项排列顺序,它们以任意的顺序被输入到系
19、统中来。 SRS系统要具有以下功能:试卷成绩插入,将试卷成绩逐个插入到SRS系统的数据结构中。学生成绩查询,给出学号查找该学生所选修的各门课程的考试成绩。成绩单输出,按学号递增的顺序依次输出所有学生的学号、姓名,及其所选修的各门课程的课程名和成绩。(为简朴起见,假设上述所有工作都在计算机内存中进行。) 请设计SRS系统的数据结构和算法要点,使上述三项操作都有较高的执行效率。从以下方面阐述你的设计: (1)SRS系统的数据结构(15分) 数据结构的Pascal语句描述 数据结构的示意图 数据结构的简朴文字说明 (2)SRS系统的算法要点(10分) (只要简朴的文字说明,不必写出Pascal程序)
20、 试卷成绩插入 学生成绩查询 成绩单输出 (3)简朴陈述你的上述设计的理由(5分) 答案: 本题可有多种不同的设计方案,下面给出其中一个较好的方案。 (1)数据结构(15分,其中对三种操作的有效支持各4分,叙述的条理性3分。) 数据结构的Pascal语句描述 TYPEpptrpnode; pnodeRECORD cname:string; score:0.100; next:pptr END; sptrpnode; snodeRECORD sno:integer; sname:string; llink,rlink:sptr; plink:pptr END; VARt:sptr; 数据结构的示
21、意图 9508027Liu%26#1640;%26#1640; OS72 OS60 9408023Fang%26#1640;%26#1640; 9508091Chen %26#1640; 9508010Li DS85 DB66%26#1640; SE89 AI92%26#1640; DS90 OS95 t 数据结构的简朴文字说明 每个学生结点包含学生的学号和姓名,所有学生结点组织成一棵二叉排序树,用linkrlink法存储。 每份试卷成绩作为一个链表结点,包含课程名和成绩,每个学生的所有试卷成绩结点链接成一个单链表,并且二叉排序树的学生结点中有一个指针指向该单链表的第一个结点。 (2)算法要点
22、(10分,三种操作各3分,叙述的条理性1分) 试卷成绩插入,根据试卷的学号在二叉排序树中查找该学生结点。若找到,则在该学生结点所指的成绩链表中插入一个成绩结点;若未找到,则先在二叉排序树中插入一个新的学生结点,然后再往这个学生结点所指的(空的)成绩链表中插入一个成绩结点。 学生成绩查询,根据所给学号在二叉排序树中查找该学生结点,再在该结点所指的成绩链表中沿着指针读出所有成绩。 成绩单输出。对二叉排序树进行对称序环游,在访问到每个学生结点时输出该结点指向的成绩链表中的所有成绩。 (3)设计理由(5分) 学生结点组织成二叉排序树,使三种操作都有较高的效率:插入n个学生结点O(nlog2n),查找一
23、个学生结点O(log2n),输出所有学生结点O(n)。 每个学生的所有成绩结点组织成链表,动态申请空间,适合于每个学生选修的课程数不等的实际情况,节省空间。 2.(1998年) 人们在管理实践中发现,数据库技术是信息资源的整理、保存、管理和使用的最有效的手段。数据库按其数据结构模型分类,通常可分为层次型数据库、网络型数据库、关系型数据库和面向对象型数据库,各种类似的数据模型都有自身的特点。试从关系数据模型的优点和弱点论述: (1)为什么人们在开发以事务解决为主的信息系统(例如管理信息系统)时,大多选用关系型数据库作为开发环境?(18分) (2)在许多具有复杂数据结构或丰富语义的实际应用领域中,
24、为什么要选用面向对象数据库或要对关系型数据库作某些扩充和修改?(12分) 答案: (1)一方面,关系数据模型结构简朴,为二维表格结构与目前事务解决系统中数据多以二维表格结构组织和表达相适应。(10分) 另一方面,关系数据模型的其他优点也适应事务解决的规定: 表格是一集合,因此集合论等知识可以引入关系型数据模型中,使它具有坚实的数学理论基础。(4分) 有简朴、易懂易学的关系数据库的标准语言SQL的支持。(2分) 数据具有较高的独立性。(2分) (2)在具有复杂数据结构或丰富语义的实际应用领域中,一般选用面向对象数据库,或要对关系数据库作某些扩充和修改是由于: 关系数据模型不擅长于表达复杂对象数据类型。(4分) 也不擅长于表达实体间的语义联系。(4分) 而面向对象数据模型在这两方面有优势。(4分)