问答题
阅读以下某工厂人事信息管理系统数据库的设计说明,根据要求回答问题1~问题4。
[说明]
某工厂有多个部门,每个部门有多位职工,每位职工属于并且仅属于一个部门,每个部门有一位负责人,每个办公室有一部电话。每位职工的月工资大致是:800≤月工资≤4500元。
软件开发公司A为该工厂开发的信息管理数据库的部分关系模式如下所示。
职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
部门(部门号,部门名,负责人代码,任职时间)
其中“职工”和“部门”的关系示例分别见表5-17和表5-18。

{{B}}表5-17“职工”关系示例表{{/B}}

{{B}}职工号{{/B}}
{{B}}姓名{{/B}}
{{B}}年龄{{/B}}
{{B}}月工资{{/B}}
{{B}}部门号{{/B}}
{{B}}电话{{/B}}
{{B}}办公室{{/B}}
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

{{B}}表5-18“部门”关系示例表{{/B}}

{{B}}部门号{{/B}}
{{B}}部门名{{/B}}
{{B}}负责人代码{{/B}}
{{B}}任职时间{{/B}}
1
人事处
1002
2004-8-3
2
机关
2001
2004-8-3
3
销售科
4
生产科
4002
2003-6-1
5
车间

问答题
[问题1]
请使用“关系模式标记规则”(见本题附录),给出上述各关系模式的主键和外键。
【正确答案】
【答案解析】[问题1]
这是一道要求考生根据题目给定的关系模式,以及属性间的函数依赖关系和给定的关系实例来确定各关系模式主键和外键的综合分析题。本试题的解答思路如下。
(1)由试题中给出的关键信息“某工厂有多个部门,每个部门有多位职工,每位职工属于并且仅属于一个部门,每个部门有一位负责人,……每位职工的月工资大致是:800≤月工资≤4500元”,可以整理出如表5-24所示的关系模式主要属性、含义及约束。

{{B}}表5-24 主要属性、含义及约束表{{/B}}

{{B}}属性{{/B}}
{{B}}含义及约束{{/B}}
职工号
唯一标识每个职工的编号,每个职工属于并且仅属于一个部门
部门号
唯一标识每个部门的编号,每个部门有一个负责人,且他也是一位职工
月工资
500≤月工资≤5000元

(2)设K为R(U,F)中的属性的组合,若,且对于K的任何一个真子集K′,都有K′不能决定 U,则K为R的候选码(候选关键字)。若有多个候选码,则选一个作为主码(主键)。
(3)部门关系模式的主键和外键。由题目中给出的关键信息“某工厂有多个部门,……每个部门有一位负责人”,并且结合试题所给出的“部门”关系示例(见表5-18)可知,仅用“部门号”作为主键,可以唯一区分部门关系中的每一个元组。同时考虑到部门负责人应该来自职员,所以“负责人代码”应为部门关系模式的外键。最后可得部门关系模式的主键和外键如下:
部门({{U}}部门号{{/U}},部门名,,任职时间)
(4)职工关系模式的主键和外键。由题干中给出的关键信息“每位职工属于并且仅属于一个部门”可知,仅用“职工号”作为主键,可以唯一区分职工关系中的每一个元组。同时考虑到“部门号”是部门关系模式的主键,所以它应是职工关系模式的外键。最后可得职工关系模式的主键和外键如下:
职工({{U}}职工号{{/U}},姓名,年龄,月工资,,电话,办公室)。
问答题
[问题2]
对于表5-17和表5-18所示的“职工”和“部门”关系,请指出表5-19中第①、②和③行是否允许插入?请分别用100字以内的文字简要说明理由。

{{B}}表5-19 新增“职工”关系示例表{{/B}}

{{B}}行号{{/B}}
{{B}}职工号{{/B}}
{{B}}姓名{{/B}}
{{B}}年龄{{/B}}
{{B}}月工资{{/B}}
{{B}}部门号{{/B}}
{{B}}电话{{/B}}
{{B}}办公室{{/B}}
1001
王新军
28
1000
1
8001234
主楼201
2003
李力
28
1000
5802
赵晓啸
36
1500
6
8001568
3号楼503

【正确答案】
【答案解析】[问题2] 这是一道要求考生掌握完整性定义的约束性的综合分析题。本试题的解答思路如下。 (1)用SQL定义关系模式的一个非常重要的问题是完整性控制。完整性控制应具有①定义功能、②检测功能和③处理功能等3方面的功能。一旦发现违背了完整性约束条件,则应采取相关的动作来保证数据的完整性。数据库中最重要的约束是声明一个或一组属性形成关系的键。键的约束在SQL的CREATE TABLE命令中声明。在关系系统中,最重要的完整性约束条件是:实体完整性和参照完整性。 (2)实体完整性定义。在关系中只能有一个主键。声明主键有以下两种方法:①将PRIMARY KEY保留字加在属性类型之后;②在属性列表中引入一个新元素,该元素包含保留字PRIMARY KEY和用圆括号括起的,形成该键的属性或属性组列表。 (3)参照完整性定义。定义格式如下:
问答题
[问题3]
查询每个部门中月工资最高的“职工号”的SQL查询语句如下。

(1)请用30字以内文字简要说明该查询语句对查询效率的影响。
(2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。
【正确答案】
【答案解析】[问题3] 这是一道要求考生分析查询效率的综合分析题。通常在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。 (1)试题中所给出的SQL查询语句,对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。 (2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。 解答思路①: 改正后的SQL语句使用了临时表。 解答思路②:
问答题
[问题4]
假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,如下的Select查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既可以完成相同功能又可以提高查询效率的 SQL语句。
【正确答案】
【答案解析】[问题4] 本试题所给出的原Select查询语句中使用了条件or,系统在查询的时候将对全表进行扫描,不会促使查询优化器使用索引,从而降低了查询效率。 既可以完成相同功能又可以提高查询效率的SQL语句修改如下。
问答题
[问题5]
该数据库系统在设计时,采用了异构数据库技术。请给出目前3种通用的异构数据库查询技术。
[附]
关系模式的标记规则如下
关系名(属性名1,属性名2,…,属性名n)
其中:①若该属性仅为主键属性时,则该属性名下画实{{U}}下画线{{/U}};
②若该属性仅为外键属性时,则该属性名下画虚{{U}}下画线{{/U}};
③若该属性既是主键属性,又是外键属性时,则在该属性名下画实下画线和虚{{U}}下画线{{/U}};
④若该属性既不是主键属性,又不是外键属性时,则在该属性名下不做标记。
【正确答案】
【答案解析】[问题5] 这是一道要求考生掌握异构数据库的基本概念题。本题所涉及的知识点如下。 异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有各自的DMBS。 异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有各自的应用特性、完整性控制和安全性控制。目前通用的异构数据库查询技术包括公共数据库网关技术、公共协议技术和公共编程接口技术。