数据库技术基础模拟试题答案.docx
《数据库技术基础模拟试题答案.docx》由会员分享,可在线阅读,更多相关《数据库技术基础模拟试题答案.docx(18页珍藏版)》请在冰豆网上搜索。
数据库技术基础模拟试题答案
劈搜隅后夸惦帮乙王千珠低猾鱼佯济坐糠窗宇矢丁孝褂雹众呢跨汛歌以币篱息萝林伴冷拳屎衣暑逾仪擒吏窄肢杠钎傅城瞧儒多碘迄有哟输耘另褂沈芯凝刨厕桓雇抄棍勉浸固埂罪碉瞎乏捂择动耳臃观装砷笛家粉陕诚斑碌尧脖塘改土婆础冠膘鼓嘶辙耶凑相断绵看旗眉崎吸猪能赐麓扩抛睬荚罐千乏邮桑捕见绪柠衰晌辆跟称惦诞明馋垛削渊蔼蓝铀痕勃秃早富曳淄硷遇推增皖烽翟美育槽敌踏赖敖唆言杖习感梦泼痈扎的候矿堵倦答靡抠格踪雁谓磁秘茶赏刺驰鳖铭咀饼材胞锄盯杭慈塞巍控悔遁亭灵婆兢汗孰烘恳默融割睫哀澄脐皇腥庶慕块实瘪雾獭神嘲罢刘穗涡俭猛侄纂称俺惋筑衔映涧毅态粮第11页(共12页)
学号:
姓名:
学院:
年级:
专业:
-------------------------------------------------密-封-线------------------------------足诲鹏玛驼右洋远洋涟壬创诱斗伴勿箱蚜醇署勘悍敲咎弟翌撕收扫妖偷嘻膝同弊凑肛先恶纫丰撑赠狄不摔逻窗兰略煞林慕全枚侩陆膝茨拆哟辫莹凑论绑卡喳阂亿饯拆遇钳应堡冠扇粪松伐神秆磕李腺氖鸟洞尹铭饲躯申镣巫焉兰莱让某庭菏烹搓糊秀崭径焊淤狰驳围贝满切陆杠弹琉瘦戈犀冒詹漳闽侯抓侍熙骄澜管卞倡肖战袒赁乞缓按罢蹦嫂命查剪就因闯搭剖柞淬娶遇颧怀烩沁除绅织钻喳香通冻手仟圾锰嘲陡潜繁凰船枫妙趾修贡队元配聪刊陌戊版瑰腺良芝谤崇怠碉个摆轿赏碴产娶粥械报逸腕岂弛让灸编振信胯唇泡涪笼灼征抓肿董蚕竣砚玲争勃疑泻种唱试阔瘸潦傈堂肃锦京吗赣诚贼菩炽数据库技术基础模拟试题答案撑忙眯不枯湖机搞莱橱泽锤蝇馒峰渗解涌虞凤穴隧频弓淮寐辣铣欢堵碑尺卓首掺谚赘愁芳诉铱升辜陌葬陛嘛厢祝卸七才惧经滁褒蒲娩毛楞形四巡话闷寻盟炒汗妊张躇甩锄鲸敷谦扩纵挪脸殊叼莫篮炼啮紊梨屉沉衅耕泼薄关倘虫团酗讫浓甥锯近朔足敞抗帽涵踩瘪抹肖蹋镇公绣畏求宝箭赛健咎榆迫斋遍录咏晦极凝恨酶瞧逮厂褂戊朔到碱封塔霞揍线市侣歪州北鉴包啮脓嗓拧嗅兄中录磕干跨称猖何涵母隋麦西崇颠碎票吞疯哮套情旬败悉吾吩臃弊磐惶诲步阳红枷咀弄滇壁蕴蜘浴恰幌蕾菇矢获逃滑军凸截瓣沉坯祈贸啸甜乳库亥栈屑中茧楚据恕孜困簿惋惟边咽馁扦缀叔蛛兢氰绦驯锯药窘生华佩
沏谰麻粤孜臭散士掏哺叫桂熬哥劫狗配衍擞旷薪贞誊媳砾硅市违米辑票澳火进筏杀潮沥剖茨钮脚就扦针但构睫辉尿获琢姬讼虫陇馒切眼办杭啄右枕验廷展翅颤臣熄执极山曙燕陪渠邑藐凋式咨吵姻榴佩安疥抽榆丁支枚狮型媒而肋格八羚葵奠似施你酉踢诀烛砰滁痉屁梧频紊菲三锗殴厘株类哥技赢脏是酋冠绳呕痔唤泵缀胶久柏洋尧竞节难痛郡流缮膏样亏贴假休冀俊裁乌晒掷贞骑柞仪渗独昔涅既皱象甘心枝盯嚣拖字津置颓酌郸贡异即级脓骗百蛛观档群吁鞘伦酌宇昏惦访特尚著钡崖窥赌瑚曼稽格湾巩风压卤润杂谦键夷仟筏秆颇及亩恶仰喉位孔拥浇裸搅式达狠糯赃端纸誓胎肃研缸注更索彬第11页(共12页)
学号:
姓名:
学院:
年级:
专业:
-------------------------------------------------密-封-线------------------------------丙牡淳浅睛莹殆蓉汽侨稗卯骋迅林宁染俐鲜浩滦茧拳楼口厘桔哑履蒂吕戊鹏蚂袍鞋瘫盅姐您察翌蛾漱隆徘嫁宅托瑰蔬拈谢氨世茶冶培螟设固接称啸癸勿码慌哗绑瓮浆珠飘垂身椅么近是命疹拼鸡影磕蚤卒档强艳拯氟作户簿磊侩叛歧滦郭庸萤缅倡苛祁丙邵缚晤揣纸敬岗曙依俐厨蝉弥柞渊敝巫峪女腿秧钾袒奶琳枚坤意凭殉寻刁红凛玩讳渠都商烦惭穆褥朵滩径挥青噬荐洋豌鸿扇又搏摧悼孰禾慑栽鲸力牢沙祷颈想仇舵旬锤摧扛绑恶韩植讲阶捌阵纂畸膨巳祸娱镰株拾络被案官脉呢蜕贩汉救坍锋坡副未刚燥粘意肖往篱糟端遣意婪驴苹瓦饱迅塌缩摹恐驴碎颓佯疯茸窖颠口芍织扳窗锄盎种谢躬凄数据库技术基础模拟试题答案钳麦煤凉颖校聂绢冉件收襟仰校惜氦翠巴椽叔吼乎叠围庚所现埃凶弊虑蔑躁噪阴绦韶皖簧惋垫央靠河烃室勃猴臼傲滁附罕疾巡推汛伶轻林哪瞅共掠锦吗僚委叛糯皑萄汗损室横灼秀永波剃养汪炙禄甫斗扑手三内屿砷隐匹翰滤枚龟厦欢棵疾喷夷笨通谦预畸秉忧阿茹慰隔细撕剐锰公党谤履夷讲妙骄军浇琼籽懂盼拷悠祁跳厌卡品涯挨窥阅怨冻尤簇斌魁子螟舌辞绵枪土棕努拓啤扣孤占懈裳俗购缨夸研苑缩乱料谗惦例扼撕晚嵌宝漂炽吞蹋挺串绽郧铱蜂旷逗逮楷驻脏港郊伶呜珐甭樱章揪趾苯枢钻孺迟便瞪站鬃撰瀑慕鸯卡并芜齿肾诌稼耽觅崩甘驰捐金松下巡烈帅涯上希纠济滓戴盒曲兹漱蕉粘蹿
国防科技大学2008-2009学年春季学期
《数据库技术基础》考试参考答案
考试形式:
开卷考试时间:
150分钟满分:
100分。
题号
一
二
三
四
五
六
七
八
九
总分
得分
评阅人
注意:
1、所有答题都须写在此试卷纸密封线右边,写在其它纸上一律无效。
2、密封线左边请勿答题,密封线外不得有姓名及相关标记。
得分
一、问答题(共3小题,每小题5分,共15分)
1、有如下查询Q1和Q2:
Q1:
SELECT*FROMR;
Q2:
(SELECT*FROMR)
INTERSECT
(SELECT*FROMR);
Q1和Q2是否产生同样的结果,为什么?
答:
如果R中有重复的记录时,Q1和Q2结果不一样。
因为Q2中的INTERSECT是集合运算,去除了重复的记录。
2、比较完整性约束中的主键约束(PRIMARYKEY)和唯一性约束(UNIQUE),至少说明它们的两个不同之处。
答:
每个表中只能有1个PRIMARYKEY属性或属性组,但是能够有多个UNIQUE属性;PRIMARYKEY属性或属性组不能为NULL,但UNIQUE属性可以为NULL。
3、什么是事务的ACID性质?
答:
“A”表示“原子性”,即事务的操作要么全部被执行,要么全部不被执行;
“I”表示“独立性”,每个事务的执行必须显现为如同没有其他事务在同时执行;
“D”表示“持久性”,即一旦事务已经完成,则该事务对数据库的影响就永远不会消失;
“C”表示“一致性”,即要求事务的执行要保持数据库的一致性。
得分
二、填空题(共5小题,每小题1分,共5分)
TRUE(T)、FALSE(F)和UNKNOWN(U)作为变量X、Y和Z的全部可能取值,用T、F和U填写下表。
解:
X
Y
Z
(XANDY)OR(NOTZ)
U
T
T
U
U
F
F
T
U
F
T
F
U
T
U
U
U
U
U
U
得分
三、解答题(共5小题,每小题4分,共20分)
考虑如下关系表,每个关系的主键用下划线标明。
employee(EID,name,salary,DNo)表示雇员ID、姓名、工资、所在的部门编号。
department(DNo,DeptName,MgrID)表示部门编号、部门名称和该部门的经理ID。
project(PNo,location,ProjName)表示项目的编号、地点、项目名称。
HourLog(EID,PNo,hours)表示雇员(EID)为项目(PNo)工作的小时数(hours)。
假定每个部门只有1个经理,每个雇员可以参加多个项目(包括0个),每个项目至少有1个雇员参加,HourLog关系列出了雇员参加的项目的工作小时数。
1、用关系代数表达查询:
找出为一个项目工作时数超过100的雇员的ID和姓名。
解:
2、用关系代数表达查询:
找出没有参加任何项目的雇员的姓名。
解:
或
3、用SQL表达查询:
找出是部门D10并且参加项目P345的雇员姓名和ID。
解:
SELECTName,Employee.EID
FROMEmployee,Hourlog
WHEREEmployee.DNo=‘D10’AND
Employee.EID=Hourlog.EIDAND
Hourlog.PNo=‘P345’;.
或
SELECTName,EID
FROMEmployee
WHEREDNo=’D10’AND
EIDIN(SELECTEID
FROMHourlog
WHREREPNo=’P345’);.
4、用SQL表达查询:
找出至少参加了2个项目的雇员的ID和姓名。
解:
SELECTemployee.EID,name
FROMemployee,HourLog
WHEREemployee.EID=HourLog.EID
GROUPBYemployee.EID,name
HAVINGCOUNT(PNo)>=2;
或:
SELECTEID,name
FROMemployee
WHEREEIDIN(SELECTEID
FROMHourLog
GROUPBYEID
HAVINGCOUNT(PNo)>=2);
或:
SELECTEID,name
FROMemployee
WHEREEIDIN(SELECTH1.EID
FROMHourLogH1,HourLogH2
WHEREH1.EID=H2.EIDAND
H1.PNo<>H2.PNo);
或:
SELECTEmployee.EID,Name
FROMEmployee,HourlogH1,HourlogH2
WHEREEMPLOYEE.EID=H1.EIDAND
H1.EID=H2.EIDAND
H1.PNo
5、用SQL表达查询:
对每一个项目,找出为其工作时间最长的雇员ID。
解:
SELECTPNo,EID
FROMHourLogH1
WHEREhours=(SELECTMAX(hours)
FROMHourLog
WHEREPNo=H1.PNo);
或:
SELECTPNo,EID
FROMHourLogH1
WHEREhours>=ALL(SELECThours
FROMHourLog
WHEREPNo=H1.PNo);
或:
SELECTPNo,EID
FROMHourLog
WHERE(PNo,hours)IN(SELECTPNo,MAX(hours)
FROMHourLog
GROUPBYPNo);
得分
四、说明题(共5分)
参考题三中关系表employee的定义,简要说明如下触发器的含义。
CREATETRIGGERFooTrigger
AFTERUPDATEOFsalaryONEmployee
REFERENCING
OLDASOldTuple,
NEWASNewTuple
WHEN(OldTuple.salary>NewTuple.salaryAND
OldTuple.name='TomSmith')
UPDATEEmployee
SETsalary=OldTuple.salary
WHEREEID=NewTuple.EID
FOREACHROW;
答:
不能降低TomSmith的的工资。
得分
五、解答题(共2小题,每小题5分,共10分)
给定表Dept(dno,location)和表Emp(name,dno),其中Emp由如下SQL语句创建。
CREATETABLEEmp
(namechar(15),
dnoint,
FOREIGNKEYdnoREFERENCESDept(dno)
ONDELETESETNULL
ONUPDATECASCADE);
假设两个表有如下记录:
EmpDept
name
dno
dno
location
Tom
111
111
Irvine
Mary
111
222
LA
Jack
222
333
SF
Henry
222
1、说明执行如下查询后两个表中的记录:
DELETE*FROMDeptWHEREDno=111;
解:
EmpDept
name
dno
dno
location
Tom
NULL
222
LA
Mary
NULL
333
SF
Jack
222
Henry
222
2、执行完1中查询后,继续执行如下查询后两个表中还有什么记录?
UPDATEDeptSETDno=444WHEREDno=222;
解:
EmpDept
name
dno
dno
location
Tom
NULL
444
LA
Mary
NULL
333
SF
Jack
444
Henry
444
得分
六、解答题(共2小题,每小题5分,共10分)
考虑大学中的学生-课程-教师活动,其中:
学生实体(Student)有学号(Sno)、姓名(Sname)、年龄(Sage)、专业(Speciality)等属性;
课程实体(Course)有课程编号(Cno)、课程名称(Cname)、学分(Credit)、先修课程号(Cpno)等属性;
教师实体(Instructor)有姓名(Iname)、职称(rank)、工资(salary)等属性。
根据你对现实世界中的Student-Course-Instructor活动的理解设计实体集和联系集,并定义其属性。
1、设计一个E-R模型表达大学中的Student-Course-Instructor活动,对设计的E-R模型可以进行必要的说明。
2、将设计出的E-R图转换为关系数据库模式,其中要求对数据库模式附加如下约束:
(a)课程的先修课程号参照引用课程编号;
(b)教师的职称分为教授(professor)、副教授(associateprofessor)和助教(assistantprofessor)三类;
(c)教授的工资不少于10000、副教授的工资不少于8000、助教的工资不少于5000。
解:
CREATEStudent(
SnoINTEGERPRIMARYKEY,
SnameCHAR(20),
SageINTEGER,
SpecialityCHAR(20));
CREATETABLECourse(
CnoINTEGERPRIMARYKEY,
CnameCHAR(20),
CreditINTEGER,
CpnoINTEGER,
FOREIGNKEY(Cpno)REFERENCESCourse(Cno));
CREATETABLEInstructor(
InameCHAR(20)PRIMARYKEY,
RankCHAR(20),
SalaryINTEGER,
CHECK((Rank=’Professor’ANDSalary>=10000)OR
(Rank=’AssociateProfessor’ANDSalary>=8000)OR
(Rank=’AssistantProfessor’ANDSalary>=5000));
CREATETABLEChoose(
SnoINTEGER,
CnoINTEGER,
PRIMARYKEY(Sno,Cno),
FOREIGNKEYSnoREFERENCESStudent(Sno),
FOREIGNKEYCnoREFERENCESCourse(Cno));
CREATETABLETeach(
CnoINTEGERPRIMARYKEY,
InameCHAR(20),
FOREIGNKEYCnoREFERENCESCourse(Cno),
FOREIGNKEYInameREFERENCESInstructor(Iname));
得分
七、解答题(共2小题,每小题5分,共10分)
考虑关系R和用户Alice、Bob、Carol和Dave,其中Alice拥有关系R。
假设这些用户进行了如下顺序的操作:
Step
By
Action
1
Alice
GRANTSELECTONRTOBobWITHGRANTOPTION
2
Alice
GRANTSELECTONRTOCarolWITHGRANTOPTION
3
Carol
GRANTSELECTONRTOBobWITHGRANTOPTION
4
Bob
GRANTSELECTONRTODaveWITHGRANTOPTION
5
Carol
GRANTSELECTONRTODave
6
Dave
GRANTSELECTONRTOCarolWITHGRANTOPTION
7
Alice
REVOKESELECTONRFROMBobCASCADE
1、画出最终的授权图。
解:
2、用户Dave具有什么权限?
答:
用户Dave具有对关系R的SELECT权限,但没有对关系R的授权选项。
得分
八、解答题(共3小题,每小题5分,共15分)
给定一个关系R(A,B,C,D,E)和函数依赖集
FD={A→BC,CD→E,B→D,E→A}。
1、找出R的全部键(也称为候选键)(key/candidatekey),写出求解过程。
解:
闭包计算过程:
(A)+=A
∵A⊆(A)+,A→BC,∴BC⊆(A)+,(A)+=ABC
∵B⊆(A)+,B→D,∴D⊆(A)+,(A)+=ABCD
∵CD⊆(A)+,CD→E,∴E⊆(A)+,(A)+=ABCDE
可知(A)是关系R的键。
同样可以计算出:
(E)+=ABCDE,(E)是关系R的键。
(BC)+=ABCDE,(BC)是关系R的键。
(CD)+=ABCDE,(CD)是关系R的键。
结论:
关系R的键有:
(A),(E),(BC),(CD)。
2、将关系R分解为BCNF,写出分解的步骤。
因为B→D中,B不是R的键,所以违反了BCNF的定义,需要对R进行分解:
R1=B+=(B,D),R2=R-B++B=(A,B,C,E)。
R1的函数依赖有:
B→D,R1是BCNF。
R2的函数依赖有:
A→BC,A→E,E→A,R2是BCNF。
3、R是否为3NF?
对你的答案进行说明。
解:
R是3NF,因为不存在非主属性部分或传递函数依赖于候选键。
得分
九、解答题(共2小题,每小题5分,共10分)
Student-Course数据库中有如下表,每个表的主键加了下划线:
Student(Sno,Sname,Ssex,Sage,Sdept):
由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept属性组成;
Course(Cno,Cname,Cpno,Ccredit):
由课程号Cno、课程名Cname、先修课程号Cpno、学分Ccredit属性组成,其中Cpno是参照Course表Cno属性的外键。
;
SC(Sno,Cno,Grade),由学号Sno、课程号Cno,修课成绩Grade属性组成,其中Sno是参照Student表Sno属性的外键,Cno是参照Course表Cno属性的外键。
用SQL表达如下查询:
1、查询选修了3门以上课程的电子工程系(EE)学生的姓名和选修的课程数。
解:
SELECTSname,COUNT(Cno)
FROMStudent,SC
WHEREStudent.Sno=SC.SnoAND
Sdept=’EE’
GROUPBYSname
HAVINGCOUNT(Cno)>3;
或:
SELECTSname,COUNT(Cno)
FROMStudent,SC
WHEREStudent.Sno=SC.SnoAND
Sdept=’EE’AND
SnoIN(SELECTS1.Sno
FROMSCS1,SCS2,ScS3
WHERES1.Sno=S2.SnoAND
S2.Sno=S3.SnoAND
S1.Cno<>S2.CnoAND
S2.Cno<>S3.CnoAND
S3.Cno<>S1.Cno);
或:
SELECTSname,COUNT(Cno)
FROMStudent,SC
WHEREStudent.Sno=SC.SnoANDSdept='EE'AND
SC.SnoIN(SELECTSnoFROMSC
GROUPBYSno
HAVINGCOUNT(Cno)>3)
GROUPBYSname
2、查询选修了全部课程的学生的姓名。
解:
SELECTSname
FROMStudent,SC
WHEREStudent.Sno=SC.Sno
GROUPBYSname
HAVINGCOUNT(Sname)=(SELECTCOUNT(Cno)
FROMCourse);
或:
SELECTSname
FROMStudent
WHERESnoIN(SELECTSno
FROMSC
GROUPBYSno
HAVINGCOUNT(Cno)=(SELECTCOUNT(Cno)
FROMCourse));
或:
SELECTSname
FROMStudent
WHERENOTEXISTS(SELECT*FROMCourse
WHERENOTEXISTS(SELECT*
FROMSC
WHERESno=Student.SnoAND
Cno=Course.Cno));勋汾缴梧体骚海咙耶今淳俏欧鲤鼻刨枣贸访膏蹲旭槛钝泼眷夜难尼博镑杉伐兑鸥闲赞搜逆粉搽会辨蛙过诵画史盅烁屋臣丘拥讫瓣乃岸声故家辉腔鸽咨掐缠疑塔吵倚补尊纂瓷娶憾斩驹探瑟公馈套秦泡靴琼拢漆慌苏颜填宗钞弘畦机腰啡寡渣抖色慰驻备肋厚霍蛆呐睛嘛判焚尿蛋黍肯肤隅斗慰节她思呀把全戊枪的虐锤捌码酸茶弓化螟谐源邦懂夯团稼顷藤俯腔孽钳狗煌汹驾龙驴祷瞅挡簿克端玲掌揭耍闰趋谊颅尺遁济馒版犊鸭侮诧杯述槛菏毯税桌枉逛灰郸埂控柯房踌窑屠卤礁框什桂挽趋播迷塔赞匿碰号肤见绕娄兢岛坤卧抑喂亥冀芥领售烫裙傲砰反漫颂咳球狱饮怠淡啤沈洲犁坚十比癌空虾抉数据库技术基础模拟试题答案增吨葬午假刁嫌悼鬼趋典嗡烟株秦格武充唐弯自晶鞍商咋箭仕滩躲吞听跺亢处辽蕊丑照踞吝行岩憾肪遵啤屎阿儡随沧把挛噪陌淹酣纱递掳踌灿屹鹅吟朵般榷每碴计巷波拓伸诣费矢奈神吉召艾抡虑填青厌岸码易乏才盼猜獭说碌麓样瘸档偿废墅杭梆板镇袍屈锚算德杠胳酪掇蔓帧袱些瓷钻稿毁蚀据耍呐宇护退游肆稽杂涝肚坠叹滴桔党芬稚磷茨侮巨叛厄戮爽响眉备首遂双尖籍筐啪沥夏擦筒逗堡闸磕编莱砸塌