资源描述
2012年真题
2011年真题
阅读以下某工厂信息管理数据库的设计说明,根据要求回答问题1~问题4。(15分)
【说明】某工厂有多个部门,每个部门有多位职工,每位职工属于并且仅属于一个部门,每个部门有一位负责人,每个办公室有一部电话。每位职工的月工资大致是:800≤月工资≤4 500元。
软件开发公司A为该工厂开发的信息管理数据库的部分关系模式如下所示。
职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
部门(部门号,部门名,负责人代码,任职时间)
其中“职工”和“部门”的关系示例分别见表3-10和表3-11。
表3-10 “职工”关系示例表
职 工 号
姓 名
年 龄
月 工 资
部 门 号
电 话
办 公 室
1001
郑俊华
26
1000
1
8001234
主楼201
1002
王平
27
1100
1
8001234
主楼201
2001
王晓华
38
1300
2
8001235
1号楼302
2002
李力
24
800
2
8001236
1号楼303
3001
黎运军
42
1300
3
8001237
主楼202
4001
李源
24
800
3
8001245
2号楼102
4002
李兴民
36
1200
4
8001246
2号楼103
5001
赵欣
25
0
Null
…
…
…
…
…
…
…
…
…
表3-11 “部门”关系示例表
部 门 号
部 门 名
负责人代码
任 职 时 间
1
人事处
1002
2004-8-3
2
机关
2001
2004-8-3
3
销售科
4
生产科
4002
2003-6-1
5
车间
【问题1】(2分)
请使用“关系模式标记规则”(见本题附录),给出上述各关系模式的主键和外键。
【问题2】(3分)
对于表3-10和表3-11所示的“职工”和“部门”关系,请指出表3-12中第①、②和③行是否允许插入?请分别用100字以内的文字简要说明理由。
表3-12 新增“职工”关系示例表
行 号
职 工 号
姓 名
年 龄
月 工 资
部 门 号
电 话
办 公 室
①
1001
王新军
28
1000
1
8001234
主楼201
②
2003
李力
28
1000
③
5802
赵晓啸
36
1500
6
8001568
3号楼503
【问题3】(5分)
查询每个部门中月工资最高的“职工号”的SQL查询语句如下。
Select 职工号 from 职工E
where 月工资=(Select Max(月工资)
from职工as M
where M.部门号=E.部门号)
(1)请用30字以内文字简要说明该查询语句对查询效率的影响。
(2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。
【问题4】(2分)
假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,如下的Select查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既可以完成相同功能又可以提高查询效率的SQL语句。
Select 姓名,年龄,月工资 from 职工
where 年龄>45 or 月工资<1000;
【问题5】(3分)
该数据库系统在设计时,采用了异构数据库技术。请给出目前3种通用的异构数据库查询技术。(异构数据库查询技术包括公共数据库网关技术、公共协议技术和公共编程接口技术。
【附】
关系模式的标记规则如下.
关系名(属性名1,属性名2,…,属性名n)
其中:①若该属性仅为主键属性时,则该属性名下画实下画线;
②若该属性仅为外键属性时,则该属性名下画虚下画线;
③若该属性既是主键属性,又是外键属性时,则在该属性名下画实下画线和虚下画线;
④若该属性既不是主键属性,又不是外键属性时,则在该属性名下不做标记。
【问题1】(2分)
(1)部门(部门号,部门名,负责人代码,任职时间)
(4)职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
【问题2】(3分)
在表3-12第①行中的职工号是“1001”,在题目给出的表3-10“职工”关系示例表中已经存在该职主号的记录,为了保证实体的完整性,该条记录不能插入。
表3-12第②行的元组可以插入到表3-10“职工”关系表中,尽管部门号、电话和办公室为空,但是它表示该雇员暂时没有分配到某个部门。
表3-12第③行的元组不能插入到表3-10“职工”关系表中,部门号是外键,而在部门关系中找不到部门号为“6”的元组,违反了参照完整性,所以不能做插入操作。
【问题3】(5分)
(1)试题中所给出的SQL查询语句,对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。
(2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。
解答思路①
改正后的SQL语句使用了临时表。
Select Max(月工资) as 最高工资,部门号 into Temp from职工
Group by部门号
Select 职工号 from职工,Temp
where月工资=最高工资 and 职工.部门号=Temp.部门号
解答思路②
Select 职工号 from 职工,(Select Max(月工资) as 最高工资,部门号 Group by 部门号)
as depMax
where 月工资=最高工资 and 职工.部门号=depMax.部门号
【问题4】(2分)
本试题所给出的原Select查询语句中使用了条件or,系统在查询的时候将对全表进行扫描,不会促使查询优化器使用索引,从而降低了查询效率。
既可以完成相同功能又可以提高查询效率的SQL语句修改如下。
Select 姓名,年龄,月工资 from 职工
where 年龄>45;
union
Select 姓名,年龄,月工资 from 职工
where 年龄 月工资<1000;
2008年真题
试题52
设关系R和S的元数分别为2和3,那么,与 (52) 等价。
(52) A. B. C. D.
试题53
关系模式Student(Sno,Sname,Cno,Cname,Grade,Tname,Taddr)的属性分别表示学号、学生姓名、课程号、课程名、成绩、任课教师名和教师地址。其中,一个学生可以选若干门课程,一个教师可以讲授若干门课程,一门课程可以由多个教师讲授,对于同一门课程,学生只能选定一个教师讲授的课程,教师不会重名。关系模式Student的分解ρ= (53) ,并且是无损联接及保持函数依赖。
(53) A.{(Sno,Sname,Cno,Tname,Taddr),(Sno,Sname,Cno,Cname,Grade)}∈1NF
B.{(Sno,Sname),(Sno,Cno,Grade,Tname,Taddr),(Cno,Cname)}∈2NF
C.{(Sno,Sname),(Sno,Cno,Grade),(Tname,Taddr),(Cno,Cname,)∈3NF
D.{(Sno,Sname),(Sno,Cno,Grade),(Tname,Taddr),(Tname,Cno),(Cno,Cname)}∈BCNF
10
展开阅读全文