案例分析题

试题四
阅读下列说明,回答问题,将解答填入答题纸的对应栏内。
【说明】
某公司要对其投放的自动售货机建立商品管理系统,其数据库的部分关系模式如下:售货机:VEMαEMno,Location),各属性分别表示售货机编号、部署地点:
商品:GOODS(Gno,Brand,Price),各属性分别表示商品编号、品牌名和价格;
销售单:SALES(Sno,VEMno,Gno,SDate,STime),各属性分别表示销售号、售货机编号、商品编号、日期和时间。
缺货单:OOS(VEMno.Gno.SDa也STim),各属性分别表示售货机编号、商品编号、日期和时间。
相关关系模式的属性及说明如下:(1)售货机摆放固定种类的商品,售货机内每种商品最多可以储存10件。管理员在每天结束的时候将售货机中所有售出商品补全。
(2)每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机上某种商品的销售记录达到10条,则表明该售货机上该商品已售完,需要通知系统立即补货,通过自动向缺货单中添加一条缺货记录来实现。
根据以上描述,回答下列问题,将SQL语句的空缺部分补充完整。

问答题

请将下面创建销售单表的SQL语句补充完整,要求指定关系的主码和外码约束。
CREATETABLESALES(
Sno CHAR(8)(a)
VEl\VEMnoCHAR(5)(b)
Gno CHAR(8)(c)
SDateDATE,
STime TIME);

【正确答案】

(a)PRIMARY KEY
(b)REFERENCES VEM(VEMno)
(c)REFERENCES GOODS(Gno)

【答案解析】
问答题

创建销售记录详单视图SALES Detail,要求按日期统计每个售货机上各种商品的销售数量,属性有VEMno、Location、Gno、Brand、Price、amount和SD础。为方便实现,首先建立一个视图SALES_Total,然后利用SALES Total完成视图SALES Detail的定义。
CREATE VIEW SALES _tTotal(VEMno,Gno,SDate,amount)AS
SELECT VENno,Gno,SDate,count(*)
FROM SALES
GROUP BY(d);
CREATE VIWE(e)AS
SELECT VEM.VEMno,Location,GOODS.Gno,Brand,Price,amount,SDate
FROMVE GOODS,SALES_Total
WHERE(f)AND(g)

【正确答案】

(d)VEMno,Gno,SDate
(e)SALES_Detail(VEMno,Location,Gno,Brand,Price,Amount,SDate)
(f)VEM.VEMno=SALES_Total. VEMno
(g)GOODS.Gno= SALES_Total. Gno
f和g可以互换

【答案解析】
问答题

每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机上某种商品的销售记录达到10条,则自动向缺货单中添加一条缺货记录。需要用触发器来实现缺货单的自动维护。程序中的GetTimeO获取当前时间。
CREAT(h)OOS TRG AFTER(i)ONSALES ON SALES
REFERENCING new row AS nrow FOREACHROW
FOR EACH ROW
BEGIN
INSERT INTO OOS
SELECT SALES.VENno(j)Get Time()
FROMSALES
WHERE SALES.VEMno=nrow.VEMno AND SALES.Gno=nrow.Gno
AND SALES.SDate=nrow.SDate
GROUP BY SALES.VEl\在no,SALES.Gno,SALES.SDate
HAVING count(*)>0 AND mod(count(*),10)=0;
END

【正确答案】

(h)TRIGGER
(i)INSERT
(j)SALES.Gno,SALES.SDate

【答案解析】
问答题

查询当天销售最多的商品编号、品牌和数量。程序中的GetDate()获取当天日期。
SELECT GOODS.Gno,Brand,(k)
FROM GOODS,SALES
WHERE GOODS.Gno=SALES.GNO AND SDATE=GEEDATE()
GROUP BY(l)
HAVING(M)(SELECT count(*)
FORM SALELS
WHERE SDATE=GETDATE()
GROUP BY GNO);

【正确答案】

(k)COUNT(*) AS 数量
(l)GOODS.Gno,Brand
(m)COUNT(*)>=ALL

【答案解析】
问答题

查询一件都没有售出的所有商品编号和品牌。
SELECT GNO,BRAND
FROM GOODS
WHERE GNO(N)
SELECT DISTINCT GNO
FROM(O)

【正确答案】

(n)NOT IN
(o)SALES

【答案解析】