2. 数据库运行的过程中,某个存储了数据的磁盘扇区坏了。针对这类故障,请写出相应
的恢复策略与方法(假设你拥有某个时刻T的数据库的海量静态转储副本,并拥有T时刻到故障发生时刻的日志文件副本)。
答:这类故障为介质故障,是最严重的一种故障。恢复方法是重装数据库,然后重做已完成的事务。具体过程是:(1)装入T时刻的海量静态转储副本,使数据库恢复到转储时的一致性状态。(2)装入转储结束时刻的日志文件副本,重做已完成的事务。
本题评分规则:答对第(1)点得3分;答对第二点得3分,提到需要撤消未完成事务的解答扣2分。
3. 已知有三个事务的一个调度R3(B)R1(A)W3(B)R2(B)R2(A)W2(B)R1(B)W1(A),试问该调度是
否是冲突可串行化调度?为什么?
答:该调度是冲突可串行化调度,理由如下: R1(A)和W3(B)是不冲突操作,交换位置可得: R3(B)W3(B)R1(A)R2(B)R2(A)W2(B)R1(B)W1(A)
R1(A)和R2(B)、R2(A)、W2(B)均为不冲突操作,交换位置可得: R3(B)W3(B)R2(B)R2(A)W2(B)R1(A)R1(B)W1(A)
本题评分规则:说明调度是冲突可串行化调度得2分。能正确说明可串行化的理由得4分。
四 综合应用题(共30分)
某大学举行运动会,要求建立一个简单的数据库系统管理学生的比赛成绩,经过分析得到的ER模型图如图3所示,Student表示学生实体(属性Sno、Sname、Ssex、Sage、Sdept分别表示学生的学号、姓名、性别、年龄、所在系),Sports表示运动项目实体(属性SportNo、SportName、SportUnit分别表示运动项目的编号、名称、项目的计分单位),Student与Sports之间的参与关系用SS表示(联系的属性Grade表示比赛成绩)。各表的结构如表1、表2、表3所示。
SsexSnameSnoStudentmSSnSportsSportUnitSportNameGradeSageSdept表1 Student表(描述学生实体)约束长度类型属性名5varcharSno主码20不能为空Snamevarchar2varcharSsex不能为空smallintSage不能为空20不能为空Sdeptvarchar表2 Sports表(描述运动项目实体)约束类型长度属性名5SportNovarchar主码SportNamevarchar20取值唯一SportUnitvarchar10不能为空表3 SS表(描述学生与运动项目的联系)SportNo图 3属性名SnoSportNoGrade类型长度约束varchar5主属性varchar5主属性smallint
1. 根据题目要求,写出相应的SQL语句。
(1) 写出创建表SS的SQL代码(6分)。
参考答案一: CREATE TABLE SS (
Sno varchar(5),
SportNo varchar(5), Grade SMALLINT,
PRIMARY KEY(Sno,SportNo),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY(SportNo) REFERENCES Sports(SportNo) )
参考答案二: CREATE TABLE SS (
Sno varchar(5) REFERENCES Student(Sno),
SportNo varchar(5) REFERENCES Sports(SportNo) Grade SMALLINT,
PRIMARY KEY(Sno,SportNo), )
评分规则:书写全部正确得6分,缺主码定义扣1分,缺外码扣2分。
(2) 从表SS中删除学生“张三”的参与比赛项目的记录(假设只有一个“张三”) (3分)。
DELETE FROM SS WHERE Sno IN
SELECT Sno FROM Student WHERE Sname LIKE ‘张三’
注:LIKE可用“=”号代替;因为只有一个“张三”,所以IN也可以用“=”号代替; 评分规则:学生解答多样,不正确则适当扣分。
(3) 为SS表添加一条记录,学号为“xh001”的学生参与了编号为“xm001”的运动项目,但还没成绩(3分)。
INSERT INTO SS(Sno,SportNo) VALUES('xh001', 'xm001'); 评分规则:学生解答多样,不正确则适当扣分。
(4) 查询“计算机”系的学生参加了哪些运动项目,只把运动项目名称列出,去除重复记录(3分)。
本题仅给出两种参考答案:
参考答案一:SELECT DISTINCT SportName FROM Sports WHERE SportNo IN (SELECT SportNo FROM SS WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept='计算机'));
注:该句中的DISTINCT可有可无,没有也正确。后面的Sdept='计算机'可以写成Sdept LIKE '计算机'或者 Sdept IN ('计算机')
参考答案二:SELECT DISTINCT SportName FROM Student, SS, Sports WHERE = and = AND ='计算机';
注:后面的Sdept='计算机'可以写成Sdept LIKE '计算机'或者 Sdept IN ('计算机')
评分规则:学生解答多样,不正确则适当扣分。
(5) 查询各个系的学生的“跳高”项目比赛的平均成绩 (不要求输出比赛项目的计分单位) (3分)。
SELECT Sdept,AVG(Grade) FROM Student, SS, Sports WHERE = and = AND SportName='跳高' GROUP BY Sdept;
本题的写法很多,Sdept等属性可以写成;AVG(Grade)列可以取个别名等等。 评分规则:学生解答多样,不正确则适当扣分。
(6) 建立“计算机”系所有男学生的信息视图JSJ_M_Student(3分)。 CREATE VIEW JSJ_M_Student AS
SELECT * FROM Student WHERE Sdept='计算机' AND Ssex='男';
或者
CREATE VIEW JSJ_M_Student AS
SELECT Sno, Sname, Ssex, Sage, Sdept FROM Student WHERE Sdept LIKE '计算机' AND Ssex LIKE '男'; 注:答案中“=”和“LIKE”可以互换。
评分规则:学生解答多样,不正确则适当扣分。
(7) 回收用户“李明”对Sports表的查询权限(3分)。 REVOKE SELECT ON TABLE Sports FROM 李明;
评分规则:语句中可以没有关键字TABLE,学生解答多样,不正确则适当扣分。
2. 用关系代数表达式表达以下查询。
(1) 查询参加“跳高”的学生的姓名(3分)。
Student((sSportName='跳高pSname'SSSports))
pSname(StudentSSsSportName='跳高'(Sports))评分规则:学生解答多样,不正确则适当扣分。 (2) 查询参加了所有运动项目的学生姓名(3分)。
pSname(pSno,SportNo(SS) ?pSno(Sports)评分规则:学生解答多样,不正确则适当扣分。
Student)
五 设计题(10分)
假设有“教师”、“学生”、“课程”三个实体。一门课程只能有一个教师任课,一个教师可以上多门课程;一个学生可以选修多门课程,一门课程可以由多个学生来选修。已知教师的属性有:工号、姓名、职称,课程的属性有课程号、课程名、学时数,学生的属性
有学号、姓名、性别、年龄。根据上述描述,解答下列问题:
(1)设计并画出E-R图,要求标注连通词(4分);
(2)将E-R图转化为关系模型,并指出各关系的主码和外码(6分)。 答:(1)E-R模型图如下图所示:
学号姓名性别年龄工号姓名职称教师1任课n学生m选修n课程课程号课程名学时数 (2)关系模式设计如下,其中下划线标注的是关系的主码: 教师(工号,姓名,职称)(1分);
学生(学号,姓名,性别,年龄)(1分);
课程(课程号,课程名,学时数,教师编号),外码教师编号参照教师(工号)(2分); 选修关系(学号,课程号),外码学号参照学生(学号),课程号参照课程(课程号)(2分)。
本题评分规则:本题ER图正确得4分。答案中有关系模式参考评分。
相关推荐: