【简答题】
试题二(20分)
阅读下列说明,回答问题1至问题5,将解答填入答题纸的对应栏内。
【说明】
某工厂的仓库管理数据库的部分关系模式如下所示:
仓库(仓库号,面积,负责人,电话)
原材料(编号,名称,数量,储备量,仓库号)
要求一种原材料只能存放在同一仓库中。“仓库”和“原材料”的关系实例分别如表2-1和表2-2所示。
【问题1】根据上述说明,用SQL定义“原材料”和“仓库”的关系模式如下,请在空缺处填入正确的内容。(4分)
CREATE TABLE 仓库( 仓库号 CHAR(4),
面积 INT,
负责人 CHAR(8),
电话 CHAR(8),
(a) ) ; //主键定义
CREATE TABLE 原材料( 编号 CHAR(4) (b) , //主键定义
名称 CHAR(16),
数量 INT,
储备量 INT,
仓库号 (c) ,
(d) ) ; //外键定义
【问题2】将下面的SQL语句补充完整,完成“查询存放原材料数量最多的仓库号” 的功能。(3分)
SELECT 仓库号
FROM (e)
(f) ;
【问题3】将下面的SQL语句补充完整,完成“01号仓库所存储的原材料信息只能由管理员李劲松来维护,而采购员李强能够查询所有原材料的库存信息”的功能。(5分)
CREATE VIEW raws_in_wh01 AS
SELECT (g)
FROM 原材料
WHERE 仓库号 = “01” ;
GRANT (h) ON (i) TO 李劲松;
GRANT (j) ON (k) TO 李强;
【问题4】仓库管理数据库的订购计划关系模式为:订购计划(原材料编号,订购数量)。采用下面的触发器程序可以实现“当仓库中的任一原材料的数量小于其储备量时,向订购计划表中插入该原材料的订购记录,其订购数量为储备量的三倍”的功能。请将该程序的空缺部分补充完整。(3分)
CREATE TRIGGER ins_order_trigger AFTER (l) ON 原材料
REFERENCING NEW ROW AS nrow
FOR EACH ROW
WHEN nrow.数量< nrow.储备量
INSERT INTO 订购计划 VALUES
( (m) , (n) );
【问题5】 如果一种原材料可以在多个仓库中存放,则问题4中的触发器程序存在什么问题,如何修改?(5分)