[说明]
某企业网上销售管理系统的数据库部分关系模式如下所示:
客户(客户号,姓名,性别,地址,邮编)
产品(产品号,名称,库存,单价)
订单(订单号,时间,金额,客户号)
订单明细(订单号,产品号,数量)
关系模式的主要属性及约束如下表所示。
|
关系名
|
约束
|
|
客户
|
客户号唯一标识一位客户,客户性别
取值为“男”或者“女”
|
|
产品
|
产品号唯一标识一个产品
|
|
订单
|
订单号唯一标识一份订单。一份订单
必须仅对应一位客户,一份订单可由
一到多条订单明细组成。一位客户可
以有多份订单
|
|
订单明细
|
一条订单明细对应一份订单中的一个
产品
|
|
客户关系
|
|
客户号
|
姓名
|
性别
|
地址
|
邮编
|
|
01
|
王晓甜
|
女
|
南京路2号
|
200005
|
|
02
|
林俊杰
|
男
|
北京路18号
|
200010
|
|
产品关系
|
|
产品号
|
名称
|
库存
|
单价
|
|
01
|
产品A
|
20
|
298.00
|
|
02
|
产品B
|
50
|
168.00
|
|
订单关系
|
|
订单号
|
时间
|
金额
|
客户号
|
|
1001
|
2006.02.03
|
1268.00
|
01
|
|
1002
|
2006.02.03
|
298.00
|
02
|
|
订单明细关系
|
|
订单号
|
产品号
|
数量
|
|
1001
|
01
|
2
|
|
1001
|
02
|
4
|
|
1002
|
01
|
1
|
填空题
[问题1]
以下是创建部分关系表的SQL语句,请将空缺部分补充完整。
CREATE TABLE 客户 (客户号 CHAR(5)
__(a)__
,
姓名 CHAR (30),
性别 CHAR (2)
__(b)__
,
地址 CHAR (30),
邮编 CHAR(6));
CREATE TABLE 单 (
单号 CHAR (4),
时间 CHAR (10),
金额 NUMBER (6,2),
客户号 CHAR(5) NOT NULL,
PRIMARY KEY (单号),
__(c)__
);
填空题
[问题2]
请按题意将下述SQL查询语句的空缺部分补充完整。
按客户购买总额的降序,输出每个客户的客户名和购买总额。
SELECT 客户.客户号,
__(g)__
__(h)__
__(i)__
,
问答题
[问题3]
当一个订单和对应的订单明细数据入库时,应该减少产品关系中相应的产品库存,为此应该利用数据库管理系统的什么机制实现此功能?请用100字以内的文字简要说明。
【正确答案】
【答案解析】采用数据库管理系统的触发器机制。对产品关系定义一个触发器,在订单明细中的记录插入或更新之后,该触发器被激活,根据订单明细中订购的产品及数量,减少产品关系中对应产品的库存量。