1、软件水平考试(中级)数据库系统工程师下午(应用技术)试题-试卷 3 及答案解析(总分:56.00,做题时间:90 分钟)一、试题一(总题数:2,分数:8.00)1.试题一()(分数:4.00)_阅读以下说明和关系表,回答问题 12,将解答填入对应的解答栏内。说明 设 T1、T2 是如下两个事务: T1:A=B+2 T2:B=A*B A、B 的初值分别是 2 和 2。(分数:4.00)(1).假设 T1 和 T2 可以并发执行,且对 T1、T2 的调度不加限制,它们的并发执行可能产生哪几种结果?(分数:2.00)_(2).这些结果中哪些是正确的?(分数:2.00)_二、试题二(总题数:2,分数:
2、20.00)2.试题二()(分数:10.00)_阅读以下说明,回答问题 1-5,将解答填入对应的解答栏内。说明 设关系 R,S 分别为下面表所示:(分数:10.00)(1).计算 RS。(分数:2.00)_(2).计算 RS。(分数:2.00)_(3).计算 R-S。(分数:2.00)_(4).计算 RS。(分数:2.00)_(5).计算 R*S。(分数:2.00)_三、试题三(总题数:2,分数:12.00)3.试题三()(分数:6.00)_阅读以下说明和关系表,回答问题 1-3。关系表 (分数:6.00)(1).试问以下行是否可以插入表“学生”中,并说明理由。 (分数:2.00)_(2).若
3、想再多建一个名为“导师”的表,其属性有“教师号”“姓名”“性别”“所在院系”“学生”“职称”。其中“教师号”与“姓名”属性不能为空,并将“教师号”设为主码,将“所在院系”设为表“院系”中属性“院系代号”的一个外键。规定各属性的数据类型如下:“教师号”:smallint;“姓名”:char(10);“性别”:char(2);“所在院系”:int;“学生”:char (10);“职称”:char(8)。 用 SQL 语言创建该表,并插入以下信息(以第(1)条为例即可)。 (分数:2.00)_(3).(1)用关系代数表达式完成以下操作: 检索“平均成绩”低于 80 的学生的“学号”“姓名”“院系名称
4、”; 检索“学生”陈鑫导师的“教师号”。(2)用 SQL 语言完成以下操作: 列出“平均成绩”最高的学生信息; 将 03 级的所有学生按“学号”升序进行排序。(分数:2.00)_四、试题四(总题数:2,分数:16.00)4.试题四()(分数:8.00)_阅读以下说明,回答问题 1-4。说明 设学校教学数据库的模式如下: S(SNUM,SNAME,AGE) SC(SNUM,CNUM,CREDIT,SCORE) C(CNUM,CNAME,TEACHER) T(TNUM,TEHCHER,POS,SAL) SNUM 表示学生的学号,SNAME 表示学生的姓名,AGE 表示学生的年龄,CNUM 表示选修
5、课程的编号,CREDIT 表示该课程的学分,SCORE 表示课程的成绩,CNAME 表示课程名,TEACHER 表示任课的教师,TNUM 表示老师的工作证号,POS 表示教师的职称,SM,表示教师的收入。 试定义下列完整性约束和规则:(分数:8.00)(1).在关系 S 中插入的学生年龄值应在 1821 岁之间。(分数:2.00)_(2).在关系 SC 中插入的元组时,其 SNUM 和 CNUM 的值必须分别在 S 和 C 中出现过。(分数:2.00)_(3).在关系 C 中把某个 CNUM 的值改为新的值的时候,必须同时要把关系 SC 中那些同样的 CNUM 的值也修改为新值。(分数:2.0
6、0)_(4).为 T 定义完整性规则,“教授的工资不得低于 2000 元,如果低于 2000 元,自动改为 2000 元”。(分数:2.00)_软件水平考试(中级)数据库系统工程师下午(应用技术)试题-试卷 3 答案解析(总分:56.00,做题时间:90 分钟)一、试题一(总题数:2,分数:8.00)1.试题一()(分数:4.00)_解析:阅读以下说明和关系表,回答问题 12,将解答填入对应的解答栏内。说明 设 T1、T2 是如下两个事务: T1:A=B+2 T2:B=A*B A、B 的初值分别是 2 和 2。(分数:4.00)(1).假设 T1 和 T2 可以并发执行,且对 T1、T2 的调
7、度不加限制,它们的并发执行可能产生哪几种结果?(分数:2.00)_正确答案:(正确答案:第一种调度:读 A=2,B=2: (T1) A=B+2=4 (T1) 写回 A=4,B=2 (T1) 读 A=4,B=2 (T2) B=A*B=8 (T2) 写回 A=4,B=8 (T2) 结果:A=4,B=8 第二种调度:读 A=2,B=2 (T2) B=A*B=4 (T2) 写回 A=2,B=4 (T2) 读 A=2,B=4 (T1) A=B+2=4 (T1) 写回 A=4,B=4 (T2) 结果:A=4,B=4 第三种调度:读 A=2,B=2 (T1) 读 A=2,B=2 (T2) A=B+2=4 (
8、T2) B=A*B=4 (T2) 写回 A=4,B=2 (T1) 写回 A=2,B=4 (T2) 结果:A=2,B=4 第四种调度:读A=2,B=2 (T2) 读 A=2,B=2 (T1) B=A*B=4 (T2) A=B+2=4 (T1) 写回 A=2,B=4 (T2) 写回A=4,B=2 (T1) 结果:A=4,B=2 第五种调度:读 A=2,B=2 (T1) A=B+2=4 (T1) 读 A=2,B=2 (T2) B=A*B=4 (T2) 写回 A=4,B=2 (T1) 写回 A=2,B=4 (T2) 结果:A=2,B=4 第六种调度:读A=2,B=2 (T2) B=A*B=4 (T2)
9、 读 A=2,B=2 (T1) A=B+2=4 (T1) 写回 A=2,B=4 (T2) 写回A=4,B=2 (T1) 结果:A=4,B=2)解析:(2).这些结果中哪些是正确的?(分数:2.00)_正确答案:(正确答案:第一种调度结果:A=4,B=8;第二种调度结果:A =4,B=4 正确。 根据被并行调度策略的可串行化的调度原则,两个事务并发执行的结果只要和任意一种串行的结果相同,就认为是正确的,所以第一、二种调度都正确。)解析:二、试题二(总题数:2,分数:20.00)2.试题二()(分数:10.00)_解析:阅读以下说明,回答问题 1-5,将解答填入对应的解答栏内。说明 设关系 R,S
10、 分别为下面表所示:(分数:10.00)(1).计算 RS。(分数:2.00)_正确答案:(正确答案: )解析:(2).计算 RS。(分数:2.00)_正确答案:(正确答案: )解析:(3).计算 R-S。(分数:2.00)_正确答案:(正确答案: )解析:(4).计算 RS。(分数:2.00)_正确答案:(正确答案: )解析:(5).计算 R*S。(分数:2.00)_正确答案:(正确答案: )解析:三、试题三(总题数:2,分数:12.00)3.试题三()(分数:6.00)_解析:阅读以下说明和关系表,回答问题 1-3。关系表 (分数:6.00)(1).试问以下行是否可以插入表“学生”中,并说
11、明理由。 (分数:2.00)_正确答案:(正确答案:第(1)行行不能插入,因为在表“院系”中不存在代号为 1106 的院系; 第(2)行不能插入,因为违反了键完整性,其学号键为空; 第(3)行可以插入,平均成绩可以为 NULL 值,表示现在尚未有成绩。)解析:(2).若想再多建一个名为“导师”的表,其属性有“教师号”“姓名”“性别”“所在院系”“学生”“职称”。其中“教师号”与“姓名”属性不能为空,并将“教师号”设为主码,将“所在院系”设为表“院系”中属性“院系代号”的一个外键。规定各属性的数据类型如下:“教师号”:smallint;“姓名”:char(10);“性别”:char(2);“所在
12、院系”:int;“学生”:char (10);“职称”:char(8)。 用 SQL 语言创建该表,并插入以下信息(以第(1)条为例即可)。 (分数:2.00)_正确答案:(正确答案:创建“导师”表: create table 导师 (教师号 small int not NULL, 姓名 char(10) not NULL, 性别 char(2), 院系代号 int, 学生 char(10), 职称 char(8), primary key (教师号), foreign key (院系代号)reference 院系 ) 插入第(1)条信息: insert into 导师values(33张辉男
13、,1101,陈鑫,教授)解析:(3).(1)用关系代数表达式完成以下操作: 检索“平均成绩”低于 80 的学生的“学号”“姓名”“院系名称”; 检索“学生”陈鑫导师的“教师号”。(2)用 SQL 语言完成以下操作: 列出“平均成绩”最高的学生信息; 将 03 级的所有学生按“学号”升序进行排序。(分数:2.00)_正确答案:(正确答案:(1)第一题:学号,姓名,院系名称( 平均成绩80(院系 学生) 第二题:可建立一个临时关系 R )解析:四、试题四(总题数:2,分数:16.00)4.试题四()(分数:8.00)_解析:阅读以下说明,回答问题 1-4。说明 设学校教学数据库的模式如下: S(S
14、NUM,SNAME,AGE) SC(SNUM,CNUM,CREDIT,SCORE) C(CNUM,CNAME,TEACHER) T(TNUM,TEHCHER,POS,SAL) SNUM 表示学生的学号,SNAME 表示学生的姓名,AGE 表示学生的年龄,CNUM 表示选修课程的编号,CREDIT 表示该课程的学分,SCORE 表示课程的成绩,CNAME 表示课程名,TEACHER 表示任课的教师,TNUM 表示老师的工作证号,POS 表示教师的职称,SM,表示教师的收入。 试定义下列完整性约束和规则:(分数:8.00)(1).在关系 S 中插入的学生年龄值应在 1821 岁之间。(分数:2.0
15、0)_正确答案:(正确答案:定义 s 时采用检查子句: CREATTABLE S( SNUM CHAR(5), SNAME char(10) NOT NULL, AGE SMALLINT, PRIMARY KEY(SNUM) CHECK ;18 and AGE=21)解析:(2).在关系 SC 中插入的元组时,其 SNUM 和 CNUM 的值必须分别在 S 和 C 中出现过。(分数:2.00)_正确答案:(正确答案:采用外键子句约束: CREAT TABLE SC( SNUM CHAR(4), CNUM CHAR(5), CREDIT SMALLINT, SCORE SMALLINT, FOR
16、EIGN KEY (SNUM) REFERENCE S(SNUM) FOREIGN KEY (CNUM) REFERENCE C(CNUM) )解析:(3).在关系 C 中把某个 CNUM 的值改为新的值的时候,必须同时要把关系 SC 中那些同样的 CNUM 的值也修改为新值。(分数:2.00)_正确答案:(正确答案:采用外键约束: CREATE TABLE SC( SNUM CHAR(4), CNUM CHAR(5), CREDIT SMALLINT, SCORE SMALLINT, FOREIGN KEY (CNUM) REFERENCE C(CNUM) ON UPDATE CASCADE, FOREIGN KEY(SNUM) REFERENCE S(SNUM)解析:(4).为 T 定义完整性规则,“教授的工资不得低于 2000 元,如果低于 2000 元,自动改为 2000 元”。(分数:2.00)_正确答案:(正确答案:用数据库的触发器来实现: CREATE TRIGGER UPDATE SAL BEFORE INSERT OR UPDATE OF SAL,POS ON T FOR EACH ROW WHEN(:new.POS=教授) BEGIN IP:new.SAL解析: