软考真题
第27题
(共15分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】
某健身俱乐部要开发一个信息管理系统,该信息系统的部分关系模式如下:

员工(员工身份证号,姓名,工种,电话,住址)

会员(会员手机号,姓名,折扣)

项目(项目名称,项目经理,价格)

预约单(会员手机号,预约日期,项目名称,使用时长)(外键:会员手机号)

消费(流水号会员手机号项目名称,消费金额,消费日期)(外键:会员手机号,项目名称)

有关关系模式的属性及相关说明如下:

1)俱乐部有多种健身项目,不同的项目每小时的价格不同。俱乐部实行会员制,且需要电话或在线提前预约。

2)每个项目都有一个项目经理,一个经理只能负责一个项目。

3)俱乐部对会员进行积分,达到一定积分可以进行升级,不同的等级具有不同的折扣。

根据以上描述,回答下列问题:
【问题:2.1】请将下面创建消费关系的SQL语句的空缺部分补充完整,要求指定关系的主码、外码,以及消费金额大于零的约束。
CREATE TABLE 消费(
流水号 CHAR(12) (a) ,
会员手机号CHAR(11),
项目名称CHAR (8),
消费金额NUMBER (b) ,
消费日期DATE,
(c),
(d) ,
);
【问题:2.2】(1)手机号为18812345678的客户预约了2014年3月18日两个小时的羽毛球场地,消费流水号由系统自动生成。请将下面SQL语句的空缺部分补充完整。
INSERT INTO消费(流水号,会员手机号,项目名称,消费金额,消费日期)
SELECT ‘201403180001’,‘18812345678’,‘羽毛球’, (e) ,
‘2014/3/18’
FROM 会员,项目,预约单
WHERE 预约单.项目名称=项目.项目名称AND (f)
AND 项目.项目名称=‘羽毛球’
AND 会员.会员手机号=‘18812345678’;
(2)需要用触发器来实现会员等级折扣的自动维护,函数float vip_value(char(11) 会员手机号)依据输入的手机号计算会员的折扣。请将下面SQL语句的空缺部分补充完整。
CREATE TRIGGER VIP_TRG AFTER (g) 0N (h)
REFERENCING new row AS nrow
FOR EACH ROW
BEGIN
UPDATE 会员
SET (i)
WHERE (j) ;
END
【问题:2.3】请将下面SQL语句的空缺部分补充完整。
(1)俱乐部年底对各种项目进行绩效考核,需要统计出所负责项目的消费总金额大于等于十万元的项目和项目经理,并按消费金额总和降序输出。
SELECT 项目.项目名称,项目经理,SUM(消费金额)
FROM 项目,消费
WHERE (k)
GROUP BY (l)
ORDER BY (m) ;
(2)查询所有手机号码以"888”结尾,姓“王”的员工姓名和电话。
SELECT 姓名,电话
FROM 员工
WHERE 姓名 (n) AND 电话 (o)