某公司数据库的两个关系为:部门(部门号,部门名,负责人,电话)和员工(员工号,姓名,住址)。假设每个部门有若干名员工,一名负责人,一部电话;员工号为员工关系的主键。
若部门名是唯一的,请将下述SQL语句的空缺部分补充完整。
CREATE TABLE 部门 (部门号 CHAR(3) PRIMARY KEY,
部门名 CHAR(10) (58) ,
负责人CHAR(4),
电话CHAR(20))
(59) ;
(59)处填()。
A.PRIMARY KEY (部门号) NOT NULL UNIQUE
B.PRIMARY KEY (部门名) UNIQUE
C.FOREIGN KEY (负责人) REFERENCES 员工 (姓名)
D.FOREIGN KEY (负责人) REFERENCES 员工 (员工号)
参考答案:D
解析:
本题考查数据库中范式的基本概念和基本的SQL语句。
由于部门名是唯一的,因此在“部门名CHAR(10)”后应有“UNIQUE”。根据表1可以看出负责人来自员工且等于员工号属性,因为员工关系的主键是员工号,所以部门关系的外键负责人需要用FOREIGN KEY (负责人) REFERENCES 员工 (员工号) 来约束。这样部门关系的SQL语句如下:
CREATE TABLE 部门 (部门号 CHAR (3) PRIMARY KEY,
部门名 CHAR (10) UNIQUE,
负责人 CHAR (4),
电话 CHAR (20)
FOREIGN KEY (负责人) REFERENCES 员工 (员工号));
根据SQL的语法要求,查询各部门负责人的姓名及住址的SQL语句的空缺部分补充完整如下:
SELECT 部门名, 姓名, 住址
FROM 部门, 员工 WHERE 员工号=负责人;