您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 2010级软工数据库期中考试
一、问答题(15分)1,数据库数据的三个基本特点是什么?(3分)教材第4面:永久存储、有组织、可共享2,数据库系统的数据独立性包括哪几个方面?这些方面具体是什么含义?(5分)教材第10面:数据独立性包括数据的物理独立性和数据的逻辑独立性。物理独立性是指数据库在磁盘上怎样存储数据是由DBMS管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,当数据的物理存储改变时,应用程序不用改变。数据的逻辑独立性是指当数据的逻辑结构改变时,用户程序也可以不变。3,通过角色来实现将一组权限授予一个用户的步骤是怎么样的?(4分)教材第142面:(1)角色的创建(2)给角色授权(3)将一个角色赋予用户4,当出现破坏参考完整性的操作时,DBMS可以采取哪些策略进行处理?(3分)教材第155面:(1)拒绝执行(2)级联操作(3)设置为空值二、设计题(15分)某医院想设计数据库系统进行管理住院情况。其中科室有科名,地址,电话等信息;病房有病房号,床位号,所属科室名等信息;医生有工作证号,姓名,职称,所属科室名等信息;病人有病历号,姓名,性别,主管医生,病房号等信息。现有如下规定:一个科室有多个病房、多个医生一个病房只能属于一个科室一个医生只能属于一个科室,但可以负责多个病人的诊治一个病人的主管医生只有一个请根据以上描述用E-R图画出该医院住院情况概念模型主要的问题:无中生有,设想病房和病人间的联系三、综合应用题(70分)有一个学生管理数据库,包括以下四个关系模式Student(Sno,Sname,Ssex);Course(Cno,Cname,Ccredit);SC(Sno,Cno,mark);学生表Student由学号Sno,姓名Sname,性别Ssex组成;课程表Course由课程号Cno,课程名Cname和学分数Ccredit组成;成绩表SC由学号Sno,课程号Cno和分数mark组成1,请使用关系代数完成以下查询(只写表达式):(1)查询选修过”数据库”课程的同学的学号和姓名(4分)(2)查询“李强”同学没有学过的课程的课程号(4分)(3)查询选修过课程号为C01和C03的同学的学号和姓名(4分)(4)查询每位同学都修过的课程的课程号(4分)(5)查询修过的所有课程的分数都大于等于60分的同学的学号和姓名(4分)2,某图书馆数据库LIBDB,里面有3张表,分别为读者表Reader,书籍表Book和借书表Record,这几张表的各属性及说明如下读者表Reader属性名类型及长度说明读者号RnoChar(10)主键姓名RnameChar(8)非空联系电话TelCHAR(11)书籍表Book属性名类型及长度说明书籍号BnoChar(12)主键书名SnameChar(20)非空ISBN编号ISBNChar(20)非空作者AuthorChar(20)注:同一本书的多个副本是ISBN编号相同,而书籍号不同借书表Record属性名类型及长度说明借书流水号RnoChar(20)主键读者号RnameChar(10)非空书籍号BnoChar(12)非空借书时间borrowtimedatetime非空还书时间returntimedatetime空值表示未还(1)使用SQL语句创建这3张表,并为这3张表添加相应的完整性约束(15分)CREATETABLEReader(Rnochar(10)PRIMARYKEY,Rnamechar(8)NOTNULL,Telchar(11))CREATETABLEBook(Bnochar(12)PRIMARYKEY,Snamechar(20)NOTNULL,ISBNchar(20)NOTNULL,Authorchar(20))CREATETABLERecord(Rnochar(20)PRIMARYKEY,Rnamechar(10)NOTNULL,Bnochar(12)NOTNULL,BorrowtimeDATETIMENOTNULL,ReturntimeDATETIME,FOREIGNKEY(Rname)REFERENCESReader(Rno),FOREIGNKEY(Bno)REFERENCESBook(Bno))()利用SQL语句,将一个名叫读者号为‘R123’的读者在年月日所借的书籍号为R0033的信息加入到借书表中区,借书流水号为(分)/*insertintoReadervalues('R123','HEHE','13333333333');insertintoBookvalues('R0033','计算机','13333333333','fefe');*/INSERTINTORecordVALUES('0003332228','R123','R0033','2012-04-18',NULL)或者INSERTINTORecord(Rno,Rname,Bno,Borrowtime)VALUES(‘’,’R0033’,’R123’,’-04-18’)主要考察,一个属性为空时,怎么样往表内插入一条记录()查询所有书名中含有“软件”这两个字的书名(5分)SelectsnameFrombookWheresnamelike'%软件%'()查询读者号是‘R123’的读者所有借过的书的书名(分)SelectsnameFromBook,RecordWhereBook.Bno=Record.BnoandRname='R123';()查询借书最多没有还的读者的姓名和借书数量(分)selectReader.Rname,numfromReader,(selectRname,COUNT(*)asnumfromRecordwherereturntimeisnullgroupbyRname)asawhereReader.Rno=a.RnameANDa.num=all(selectCOUNT(*)fromRecordwherereturntimeisnullgroupbyRname)()查询读者号是‘R123’和‘R122’的读者都借阅过的书的书名(分)同一本书可能有不同副本,判断是否同一本书是看ISBN,不是看书籍号(6,7,8三题都是这样)很多同学以书籍号作为判断是否同一本书的唯一标识,把题目简化了。这样的同学一律也给全分,分的题目给了分。(),(),(8)都是这个要求/*以ISBN为准*/SelectSnameFromBookWhereISBNIN(SELECTISBNFROMBook,RecordWherebook.bno=Record.BnoandRname=‘R123’)AndISBNIN(SELECTISBNFROMBook,RecordWherebook.bno=Record.BnoandRname=‘R122’)/*以bno为准*/SelectSnameFromBookWherebnoIN(SELECTbnoFROMBook,RecordWherebook.bno=Record.BnoandRname=‘R123’)AndbnoIN(SELECTbnoFROMBook,RecordWherebook.bno=Record.BnoandRname=‘R123’)()查询至少借阅过读者号是‘R123’的读者所有借过的书的读者的姓名和电话(分)/*以ISBN为准*/SelectRname,TELFromReaderWhereNOTEXISTS(SELECTISBNFROMBook,RecordBWherebook.bno=B.BnoandB.Rname='R123'EXCEPTSELECTISBNFROMBook,RecordBWherebook.bno=B.BnoandB.Rname=Reader.Rno)/*以bno为准*/selectRname,TELfromReaderwherenotexists(SELECT*FROMRecordAwhereNOTEXISTS(select*fromRecordBwhereB.Rname='R123'andB.bno=a.bnoandReader.Rno=B.Rname))(8)查询年度被借阅次数做多的书的书名和作者(分)/*以ISBN为准*/SelectSname,AuthorFromBookWhereISBNin(SELECTISBNFROMRecord,BookWHERERecord.bno=Book.Bnoandyear(borrowtime)=2011GROUPBYISBNHavingcount(*)=all(selectcount(*)FROMRecord,BookWHERERecord.bno=Book.Bnoandyear(borrowtime)=2011GROUPBYISBN))/*以bno为准*/SelectSname,AuthorFromBookWhereBNOin(SELECTBNOFROMRecord,BookWHERERecord.bno=Book.Bnoandyear(borrowtime)=2011GROUPBYBNOHavingcount(*)=all(selectcount(*)FROMRecord,BookWHERERecord.bno=Book.Bnoandyear(borrowtime)=2011GROUPBYBNO))
本文标题:2010级软工数据库期中考试
链接地址:https://www.777doc.com/doc-4843824 .html