【简答题】
试题二(15分)
阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】某工程项目公司的信息管理系统的部分关系模式如下:
职工(职工编号,姓名,性别,居住城市)
项目(项目编号,项目名称,状态,城市,负责人编号)
职工项目(职工编号,项目编号)
其中:
(1)一个职工可以同时参与多个项目,一个项目需要多个职工参与
(2)职工的居住城市与项目所在城市来自同一个域
(3)每个项目必须有负责人,且负责人为职工关系中的成员
(4)项目状态有两个:0表示未完成,1表示已完成
【问题1】(2分)
下面是创建职工关系的SQL语句,职工编号唯一识别一个职工,职工姓名不能为空。请将空缺部分补充完整。
CREATE TABLE 职工(
职工编号 CHAR(6),
姓名 CHAR(8) ____(a)____,
性别 CHAR(2),
城市 VARCHAR(20),
PRIMARY KEY ____(b)____);
【问题2】(4分)
下面是创建项目关系的SQL语句。请实现相关的完整性约束。
CREATE TABLE 项目(
项目编号 CHAR(6),
项目名称 VARCHAR(20),
状态 CHAR(1) CHECK ____(c)____,
城市 VARCHAR(20),
负责人编号 CHAR(6) ____(d)____,
FOREIGN KEY ____(e)____ REFERENCES ____(f)____ );
【问题3】(5分)
请完成下列查询的SQL语句。
(1)查询至少参加两个项目的职工编号和参与的项目数。
SELECT 职工编号, ____(g)____
FROM 职工项目
GROUP BY ____(h)____
HAVING ____(i)____ ;
(2)查询参与居住城市正在进行的工程项目的职工工号和姓名。
SELECT 职工.职工编号, 姓名
FROM 职工, 职工项目, 项目
WHERE 职工.职工编号 = 职工项目.职工编号 AND 项目.项目编号 = 职工项目.项目编号 AND ____(j)____ AND ____(k)____ ;
【问题4】(4分)
假设项目编号为“P001”的项目负责人李强(其用户名为U1)有对参与该项目的职工进行查询的权限。下面是建立视图emp和进行授权的SQL语句,请将空缺部分补充完整。
(1)CREATE VIEW ____(l)____
AS SELECT 职工编号, 姓名, 性别, 城市
FROM 职工
WHERE 职工编号 IN ( SELECT ____(m)____
FROM 职工项目
WHERE ____(n)____ )
WITH CHECK OPTION;
(2)GRANT ____(o)____ ON emp TO U1;