黄淮学院_期末考试_数据库4

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据库系统概论》A 卷参考答案及评分标准

一、选择题(每题1分,共20分):

二、填空题(每题2分,共20分)

三、判断题(每题1分,共10分。对的填√,错的填×)

四、关系操作题(共24分) 1、(共8分)

X=R ∪S (2分) Y=X ÷T (3分)W (3分)

2、(每题4分,共16分)

(1)SELECT * FROM Student WHERE Sdep=‘CS ’; (2)SELECT Sno ,Sname FROM Student WHERE SNO=

(SELECT SNO FROM SC WHERE CNO=

(SELECT CNO FROM C WHERE Cname=“数据库”)); 或:以上等号用IN 代替。

或:SELECT Sno ,Sname FROM Student ,Course ,SC

WHERE Studnet.SNO=SC.SNO AND O=O

AND ame=‘数据库’;

(3)查询每一名学生的姓名及所选课程的总成绩

(4)查询所有比“张三”年龄大的学生姓名、年龄和性别 五、分析题(共24分)

1、解答:

(1)不能。因为定义了关系S 的主码为Sno ,根据实体完整性规则:若属性或属性组A 是

基本关系R 的主属性,则A 不能取空值。因此Sno 属性的值不能为NULL 。实体完整

性是由RDBMS系统自动进行检查的,而且违约处理策略是拒绝执行。因此元组(NULL,‘张强’,30,‘01’)不能插入到关系P 中。……………………………………………………………………(2.5分)

(2)不能。因为在属性列Sage上定义了属性列上的约束条件:CHECK(Sage >10 AND Sage<35),当向表中插入元组或修改属性值时,RDBMS系统就会检查属性上的约束条件是否满足,若不满足则拒绝执行。要插入元组的Sage属性值为40,违背了属性列Sage上的约束条件,因此元组(‘007’,NULL,40,‘02’)不能被插入到关系P 中。………(2.5分)

(3)能。虽然关系P中定义了参照完整性:属性Dno是外码,其参照属性为关系D中的Dno属性。根据参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中的每个元组在F上的值必须:取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值。这样,关系S的属性Dno 要么取空值,要么要等于D中的某个元组的主码Dno的值。若将关系S中学号为‘010’的学生的系别号修改为‘04’,将造成关系S中该元组的Dno值非空且不等于D中某元组的主码Dno的值,违背了参照完整性规则。而当参照完整性被破坏时,系统除采用默认的拒绝策略处理外,还可以采取级连删除和将外码设置为空两种处理策略。若希望系统采取其它策略,则必须显式说明。而在上述定义中,没有显式说明,系统会采取默认的拒绝策略处理。因此,不能将S表中学号为‘010’的学生的系别号改为‘04’…………………………………………………………(3分)

2、图中数据转储是在系统中无运行事务时进行转储的,转储期间不允许对数据库的任何存

取、修改活动,这是静态转储。………………………………………………………………

(2分)

优点:实现简单,得到的一定是一个数据一致性的副本。……………………………(1分)

缺点:降低了数据库的可用性,因为转储必须等正运行的用户事务结束才能开始,而新的事务必须等转储结束才能执行。……………………………………………………………………(1分)

采用动态转储,在转储期间允许事务对数据库进行存取或修改,便可以提高数据库的可用性。但动态转储不能保证其副本中的数据是正确有效。因此,需要将转储期间事务对数据库的更新操作记录到日志文件中,利用日志文件使数据库能在故障发生后恢复到某个一致性状态。……(2分)

转储是十分耗费时间和资源的,不能频繁进行。如果我是某公司数据库的管理员的话,①我会根据数据库使用情况确定一个适当的转储周期,定期进行数据转储。为了使存储转储副本的外存有条理,我会根据转储周期,为保存转储副本的外存(如磁带)编号,依次轮换使用这些外存来存储周期内不同时间的转储副本。②将海量转储与增量转储两种方式交替进行。比如:每天晚上进行动态增量转储;每周进行一次动态海量转储;每月进行一次静态海量转储。…………………(3分)

3、若按上述顺序执行两个事务,则最后的余票为30,显然不对,因为正确结果应为20。这

种错误属于“丢失修改”,即把甲写回的数据丢失了。……………………………………………(2分)

应采用封锁机制实现并发控制,具体修改如下:

(答案不唯一)

………………(3分)

通过封锁机制可以解决并发事务的三类问题:丢失修改、不可重复读、读脏数据。封锁就是要求事务在对某个数据对象操作之前,先向系统发出请求,对其加锁;在事务释放它的锁之前,其它的事务不能更新此数据对象。有两种类型的基本锁:

(1)排它锁X。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。

(2)共享锁S。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。

在运用封锁机制,对数据对象加锁时可遵守不同的封锁协议(约定的规则)来进行,比如:三级封锁协议、两段锁协议等,所采用的并发调度策略应保证其正确性。并发控制机制调度并发事务操作是否正确的判别准则是可串行性。并发操作的正确性则通常由两段锁协议来保证。两段锁协议是可串行化调度的充分条件,但不是必要条件。

封锁机制有可能导致活锁与死锁现象,DBMS应提供一定的诊断和解除方法。…………(3分)

六、综合应用题(共12分)

解答:

(1)完善的E-R图如下:…………………………………………………………………………(3

(2)关系模型:……………………………………………………………………………………(3分)

相关文档
最新文档