计算机等级考试三级数据库论述题真题(2-2)-计算机等级考试
2013-03-17来源/作者:卫凯点击次数:404
3.(2000年)设计一个用于管理会议室的数据库。经调查分析,得到的数据项列出如下:
房间号r#CHAR(4),部门号d#CHAR(3),部门名称dnameCHAR(20),
房间容量contentINT,部门主管dmanagerCHAR(8),开会日期mdateDATE,
会议名称cnameCHAR(20),会议主题(subject)CHAR(80),会议类型(type),
部门人数dnumINT,当前房间状态stateCHAR(1),
并确定以会议室(room)信息,部门(department)信息,会议(conference)信息为实体,它们通过“开会(meeting)”联系起来。为了简化问题做如下假定:
l 会议以部门召开,但一个部门在同一会议室不能重复召开同一个会议。
l 会议室按部门借用,且不预借。
l 当前房间状态取值为‘1’表示该会议室当前正在开会,取值为‘0’表示该会议室当前未被借用。
数据库概念设计的只包含主键属性的简化E-R图如下:
cname
r#
会议conference
房间room
部门department
d#
开会meeting
m
n
p
要求:
⑴数据库的逻辑结构设计:给出相应的表名、表的属性名(数据类型可省)、主键。(14分)
⑵给出下列查询的SQL语句:(16分,每小题4分)
a)当前未借用的会议室(房间号)和容量:
b)2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁?
c)2000年4月8日‘信息中心’在哪个会议室(房间号)开会?会议名称和主题是什么?
d)当前能够适合‘信息中心’开会的有哪些会议室(房间号)?
答案:
(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#,contentfromroomwherestate=’0’
b)2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁?
Selectdname,dmanagerfromdepartmentd,meetingm
whered.d#=m.d#andmdate=’2000年4月8日’
或
Selectdname,dmanagerfromdepartmentd
whered.d#=in(selectm.d#=frommeetingmWheremdate=’2000年4月8日’)
c)2000年4月8日’信息中心’在哪个会议室(房间号)开会?会议名称和主题是什么?
Selectr#,m.cname,subjectfromdepartmentd,meetingm,conferencec
whered.d#=m.d#andm.cname=c.cnameand
Mdate=’2000年4月8日’anddname=’信息中心’
或(注:本题中Selectr#,c.cname,......也可以是Selectr#,m.cname,......
Selectr#,c.cname,subjectfrommeetingm,conferencec
WhereMdate=’2000年4月8日’andm.cname=c.cnameand
m.d#=(selectd.d#fromdepartmentdwheredname=’信息中心’)
d)当前能够适合’信息中心’开会的有哪些会议室(房间号)?
Selectr#fromroomwherestate=’O’and
content>=(selectdnumfromdepartmentwheredname=’信息中心’)
4.(2001年)
(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)、为了维护数据库的参照完整性,当删除被参照关系的元组时,系统可能采取如下三种做法(每种做法得5分):
l)级联删除(cascades):即,当删除被参照关系的元组时,同时将参照关系中所有外键值与被参照关系中要被删除元组的主键值相等(相对应)的元组一起删除。
2)拒绝删除(restricted):即,只当参照关系中没有任何元组的外键值与被参照关系中要被删除的元组的主键值相等(相对应)时,系统才执行该删除操作,否则拒绝执行该删除操作。
3)置空值删除(nullfies):即,当删除被参照关系的元组时,同时将参照关系中所有与被参照关系中要被删除元组的主健值相等(相对应)的外键值都置为空值。
(2)、对于本题的情况,应该选用第一种做法。即,将关系SC中S#=‘01001’的4个元组也一起删除。(得10分)
因为当一个学生离开学校不再回来,他的个人信息记录若从S关系中删除了,那么他的选课信息记录就没有保存的必要,也应随之从SC关系中删除。(得5分)
房间号r#CHAR(4),部门号d#CHAR(3),部门名称dnameCHAR(20),
房间容量contentINT,部门主管dmanagerCHAR(8),开会日期mdateDATE,
会议名称cnameCHAR(20),会议主题(subject)CHAR(80),会议类型(type),
部门人数dnumINT,当前房间状态stateCHAR(1),
并确定以会议室(room)信息,部门(department)信息,会议(conference)信息为实体,它们通过“开会(meeting)”联系起来。为了简化问题做如下假定:
l 会议以部门召开,但一个部门在同一会议室不能重复召开同一个会议。
l 会议室按部门借用,且不预借。
l 当前房间状态取值为‘1’表示该会议室当前正在开会,取值为‘0’表示该会议室当前未被借用。
数据库概念设计的只包含主键属性的简化E-R图如下:
cname
r#
会议conference
房间room
部门department
d#
开会meeting
m
n
p
要求:
⑴数据库的逻辑结构设计:给出相应的表名、表的属性名(数据类型可省)、主键。(14分)
⑵给出下列查询的SQL语句:(16分,每小题4分)
a)当前未借用的会议室(房间号)和容量:
b)2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁?
c)2000年4月8日‘信息中心’在哪个会议室(房间号)开会?会议名称和主题是什么?
d)当前能够适合‘信息中心’开会的有哪些会议室(房间号)?
答案:
(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#,contentfromroomwherestate=’0’
b)2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁?
Selectdname,dmanagerfromdepartmentd,meetingm
whered.d#=m.d#andmdate=’2000年4月8日’
或
Selectdname,dmanagerfromdepartmentd
whered.d#=in(selectm.d#=frommeetingmWheremdate=’2000年4月8日’)
c)2000年4月8日’信息中心’在哪个会议室(房间号)开会?会议名称和主题是什么?
Selectr#,m.cname,subjectfromdepartmentd,meetingm,conferencec
whered.d#=m.d#andm.cname=c.cnameand
Mdate=’2000年4月8日’anddname=’信息中心’
或(注:本题中Selectr#,c.cname,......也可以是Selectr#,m.cname,......
Selectr#,c.cname,subjectfrommeetingm,conferencec
WhereMdate=’2000年4月8日’andm.cname=c.cnameand
m.d#=(selectd.d#fromdepartmentdwheredname=’信息中心’)
d)当前能够适合’信息中心’开会的有哪些会议室(房间号)?
Selectr#fromroomwherestate=’O’and
content>=(selectdnumfromdepartmentwheredname=’信息中心’)
4.(2001年)
(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)、为了维护数据库的参照完整性,当删除被参照关系的元组时,系统可能采取如下三种做法(每种做法得5分):
l)级联删除(cascades):即,当删除被参照关系的元组时,同时将参照关系中所有外键值与被参照关系中要被删除元组的主键值相等(相对应)的元组一起删除。
2)拒绝删除(restricted):即,只当参照关系中没有任何元组的外键值与被参照关系中要被删除的元组的主键值相等(相对应)时,系统才执行该删除操作,否则拒绝执行该删除操作。
3)置空值删除(nullfies):即,当删除被参照关系的元组时,同时将参照关系中所有与被参照关系中要被删除元组的主健值相等(相对应)的外键值都置为空值。
(2)、对于本题的情况,应该选用第一种做法。即,将关系SC中S#=‘01001’的4个元组也一起删除。(得10分)
因为当一个学生离开学校不再回来,他的个人信息记录若从S关系中删除了,那么他的选课信息记录就没有保存的必要,也应随之从SC关系中删除。(得5分)