江西财经大学06-07第一学期期末考试试卷试卷代码:03115 授课课时:96课程名称:数据库系统原理B 适用对象:本科选课班一、选择题(从下列各题四个答案中选出一个正确答案,每小题1分,共10分)1、保护数据库,防止未经授权的不合法的使用造成的数据泄漏、更改破坏。
这是指数据的_____。
A、安全性B、完整性C、并发控制D、恢复2、若事务T对数据R已加X锁,则其他事务对数据R_____。
A、可以加S锁不能加X锁B、不能加S锁可以加X锁B、可以加S锁也可以加X锁 D、不能加任何锁3、数据库具有较高的____。
A、程序与数据可靠性B、程序与数据完整性C、程序与数据独立性D、程序与数据一致性。
4、DB、DBS、DBMS三者之间的关系是_____。
A、D BS包括DB、DBMS B、DB包括DBS、DBMSC、DBMS包括DB、DBMSD、DBS就是DB,也就是DBMS5、常用的数据模型不包括_____。
A、网状模型B、链状模型C、层次模型D、关系模型6、数据库的_____是指数据库的正确性和相容性。
A、安全性B、完整性C、并发控制D、恢复、7、用于数据库恢复的重要文件是_____。
A、数据文件B、索引文件C、日志文件D、备注文件8、数据库中的封锁机制是_____的主要方法。
A、完整性B、安全性C、并发控制D、恢复9、关系模型中,一个关键字是_____。
A、可由多个任意属性组成B、至多由一个属性组成C、由一个或多个其值能唯一标识该模式中任何元组的属性组成D、以上都不是10、数据库系统的核心是_____。
A、数据库B、数据库管理系统C、数据模型D、软件工具二、简答题(回答要点,并简明扼要作解释。
每题5分,共20分)1、简述各种不同的封锁协议及解决的问题2、分析发生系统故障时数据库可能出现的问题是什么3、简述参照完整性约束中应注意的几个重要问题。
4、简述存取控制机制的主要内容。
三、编程与关系运算(每题5分,共20分) 设有四个关系学生表(学号char(5),姓名varchar(10),姓别char(2),所属系varchar(20))Student(sno,sname,sex,dept)课程表(课程号char(3),课程名varchar(20),先修课程char(3),学分tinyint,任课教师char(5))Course(cno,cname,precno,ceredit,tno)教师表(教师号char(5),教师名称varchar(10),姓别char(2))Teacher(tno,tname,sex)选课表(学号char(5),课程号char(3),成绩tinyint ) SC(sno,cno,grade)1. 编写一个触发器,当对课程表进行修改时其学分只能在1到5分之间。
2. 编写一个存储过程,依据输入的课程号参数,统计该门课程的平均分和总分,要求使用游标,不可以使用sum 和avg 命令。
3. 使用关系代数语言查询没有选修‘刘红’老师所授课程的同学学号。
4. 使用元组演算语言查询选修了‘刘红’老师课程的同学姓名、课程名及相应的成绩。
四、综合设计题(共40分)1. 已知:关系模式R (U,F )中R=ABCDEGF={BE →G,BD →G, CDE →AB,CD →A, CE →G, BC →A,B →D,C →D }求:(1)(BC)F +,R 的候选码。
(5分)(2)F 的最小函数依赖集,并将模式R 用算法分解到无损连接的3NF 。
(5分)2. 设有关系模式R<U,F>,U={E,G,H,I,J},F={E →I,J →I,I →G,GH →I,IH →EG},假设有一个分解P={R1(IJ),R2(GHI),R3(IHE)},判断该分解是否保持函数依赖关系,并判断此分解是否具有无损连接性。
(10分)3. 对于关系模式R(D,B,I,S,Q,O),设有两个函数依赖集F 和G, F={AB→C ,D→EG ,C→A ,BE→C ,BC→D ,CG→BD ,ACD→B ,CE→AG}, G ={AB→C ,D→G ,C→A ,BE→C ,BC→D ,CG→B ,D→E ,CE→G} 试判断F 和G 是否等价。
(5分)4. 数据库设计设计一个商品销售数据库,此数据库中保存有商品记录,包括商品号、名称、单价、类别、单位。
客户记录包括客户号、客户名、客户地址、联系。
一个客户有多个地址。
销售记录有客户、商品、销售数量、订货日期和发货地址。
要求:(1)画出E-R图(5分)(2)根据需要可以增加属性,转换为满足3NF的关系模式(5分)(3)给出主键约束和外键约束(5分)(4)关系名和属性名用汉字五、优化与并发(每题5分,共10分)1.设有二个事务T、U,下面的并发操作是否正确,若不正确请使用时间戳方法解决其冲突,设Ts(T)<Ts(U)。
2.优化中的算法描述:根据索引连接算法描述下列查询操作的实现。
(5分)select a.*,b.*from employee a ,sales bwhere =江西财经大学06-07第一学期期末考试试卷试卷代码:03115 授课课时:96课程名称:数据库系统原理B 适用对象:本科选课班一、选择题(从下列各题四个答案中选出一个正确答案,每小题1分,共10分)1--5:ADCAB 6—10:BCCCA二、简答题(回答要点,并简明扼要作解释。
每题5分,共20分)1、简述各种不同的封锁协议及解决的问题①一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。
一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。
使用一级封锁协议可以解决丢失修改问题。
②二级封锁协议是:在一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。
二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据。
但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
③三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。
④上述三级协议的主要区别在于什么操作需要申请封锁,以及何时释放。
评分标准:(1)写出一级封锁协议 1分(2)写出二级封锁协议 2分(3)写出三级封锁协议 1分(4)写出主要区别 1分2、分析发生系统故障时数据库可能出现的问题是什么(1)一些尚未完成的事务的结果可能已送入物理数据库,从而造成数据库可能处于不正确的状态。
为保证数据一致性,需要清除这些事务对数据库的所有修改。
(2)有些已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。
恢复子系统必须在系统重新启动时除需要撤销(UNDO)所有未完成事务外,还需要重做(REDO)所有已提交的事务,以将数据库真正恢复到一致状态。
评分标准:(1)写出第(1)步 2分(2)写出第(2)步 2分(3)写出恢复子系统的UNDO、REDO操作 1分3、简述参照完整性约束中应注意的几个重要问题。
(1) 外码能否接收空值问题在实现参照完整性时,提供定义外码列是否允许空值的机制。
(2) 在被参照关系中删除元组的问题①级联删除(CASCADES)②受限删除(RESTRICTED)仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码值相同时,系统才执行删除操作,否则拒绝此删除操作。
③置空值删除(NULLIFIES)删除被参照关系的元组,并将参照关系中相应元组的外码值置空值。
(3) 在参照关系中插入元组时的问题①受限插入②递归插入(4) 修改关系中主码的问题①不允许修改主码②允许修改主码评分标准:(1)写出第(1)步 1分(2)写出第(2)步 2分(3)写出第(3)步 1分(4)写出第(4)步 1分4、简述存取控制机制的主要内容。
(1)定义用户权限,并将用户权限登记到数据字典中。
(2)合法权限检查,每当用户发出存取数据库的操作请求后,DBMS查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。
评分标准:(1)写出第⑴步 2分(2)写出第⑵步 3分三、编程与关系运算(每题5分,共20分)设有四个关系学生表(学号char(5),姓名varchar(10),姓别char(2),所属系varchar(20))Student(sno,sname,sex,dept)课程表(课程号char(3),课程名varchar(20),先修课程char(3),学分tinyint,任课教师char(5))Course(cno,cname,precno,ceredit,tno)教师表(教师号char(5),教师名称varchar(10),姓别char(2))Teacher(tno,tname,sex)选课表(学号char(5)、课程号char(3),成绩tinyint)SC(sno,cno,grade)1.编写一个触发器,当对课程表进行修改时其学分只能在1到5分之间。
create trigger CourseUpdateon Coursefor updateasbeginif exists (select * from insertedwhere ceredit not between 1 and 5)rollbackend评分标准:(1)写出create trigger on Course 1分(2)写出for update 1分(3)写出if exists (select * from insertedwhere ceredit not between 1 and 5) 2分(4)写出rollback 1分2.编写一个存储过程,依据输入的课程号参数,统计该门课程的平均分和总分,要求使用游标,不可以使用sum和avg命令。
create procedure SearchSumByCno(@cno char(3))asbegindeclare @sum int,@avg numeric(5,1),@grade tinyint,@count tinyint select @sum=0,@count=0declare myCursor cursor forselect grade from sc where cno=@cnoopen myCursorfetch myCursor into @gradewhile(@@fetch_status=0)beginselect @sum=@sum+@gradeselect @count=@count+1fetch myCursor into @gradeendclose myCursordeallocate myCursorif @count=0select 0 '总分',0 '平均分'elsebeginselect @avg=@sum/@countselect @sum '总分', @avg '平均分'endend评分标准:(1)定义游标1分(2)定义变量1分(3)变量赋值1分(4)游标的打开、获取和关闭1分(5)循环条件1分3.使用关系代数语言查询没有选修‘刘红’老师所授课程的同学学号。