某公司的部门(部门号,部门名,负责人,电话)、商品(商品号,商品名称,单价,库存量)和职工(职工号,姓名,住址)三个实体对应的关系如表1、表2和表3所示。
假设每个部门有一位负责人,一个负责人只有一部电话,但有若干名员工;每种商品只能由一个部门负责销售。
①部门关系不属于第三范式的原因是 (36) 。如果用户要求得到表4所示的结果,需要 (37) ,并增加关系模式 (38) 。
②若部门名是唯一的,请将下述部门SQL语句的空缺部分补充完整。
CREATE TABLE 部门 (部门号 CHAR(3) PRIMARY KEY,
部门名CHAR(10) (39) ,
负责人CHAR(4),
电话CHAR(20))
(40) );
③查询各部门负责人的姓名及住址的SQL语句如下:
SELECT 部门名,姓名,住址
FROM 部门,职工 (41) ;
(41)处应填()。
A.WHERE 职工号=负责人
B.WHERE职工号=’负责人’
C.WHERE 姓名=负责人
D.WHERE 姓名=’负责人’
参考答案:A
解析:
试题(36)~(41)
[分析]:
本题考查的是应试者对范式、SQL语言的掌握程度。
试题(36)考查的是范式的基础知识。部门关系不属于第三范式的原因是因为部门的主键是部门号,非主属性部门名,负责人,电话虽然不存在对键的部分函数依赖,但是存在传递依赖,即部门号→部门名→电话。所以正确的答案是C。
试题(37)正确的答案是D;因为表4中有职工号、姓名、部门名和月销售额,此时必须知道职工属于哪个部门,故需在职工关系中增加一个部门号属性,并且增加关系模式销售(职工号,商品号,日期,数量),所以试题(38)正确的答案是A。
试题(39)正确的答案是B,因为试题要求部门名是唯一的,根据表1可以看出负责人来自职工且等于职工号属性;试题(40)正确的答案是D,因为职工关系的主键是职工号,所以部门关系的外键负责人需要用FOREIGN KEY(负责人)REFERENCES职工(职工号)来约束。这样部门关系的SQL语句如下;
CREATE TABLE部门(部门号CHAR(3)PRIMARY KEY,
部门名CHAR(10)UNIQUE,
负责人CHAR(4),
电话CHAR(20)
FOREIGN KEY(负责人)REFERENCES职工(职工号));
试题(41)正确的答案是A,将查询各部门负责人的姓名及住址的SQL语句的空缺部分补充完整如下:
SELECT 部门名,姓名,住址 FROM 部门,职工 WHERE 职工号:负责人;