问答题 [说明]
设某商业集团为仓库存储商品设计了三个基本表:
仓库STORE(S#,SNAME,SADDR),其属性是仓库编号、仓库名称和地址。
存储SG(S#,C#,QUANTITY),其属性是仓库编号、商品编号和数量。
商品GOODS(C#,GNAME,PRICE),其属性是商品编号、商品名称和单价。
现检索仓库名称为“莘庄”的仓库里存储的商品的编号和名称。
问答题 [问题1]
试写出相应的关系代数表达式、元组表达式、关系逻辑规则和SELECT语句。
【正确答案】
【答案解析】关系代数表达式为: [解析]
关系代数表达式为:
π G#,GNAMESNAME="莘庄" (STORE SG GOODS))
元组表达式为:
{ t |((u)((v)((w)(COODS(u)∧SC(v)∧ STOBE(w)
∧u[1]=v[2]∧[1]:w[1]∧w[2]
=莘庄"∧"t[1]=u[1]∧t[2]=u[2])}
关系逻辑规则如下:
W(x,y)(GOODS(x,y,a)∧SG(b,x,c)∧ STORE(b,莘庄,"d)
SELECT语句为:
SELECT A.G#,GNAME
FROM GOODS AS A.SG AS B,STORE AS C
WHERE A.C#:B.C# AND B.S#=C.S# AND
SNAME="莘庄":
问答题 [问题2]
在基本表中,检索存储全部种类商品的仓库的编号及名称。试写出相应的关系代数表达式、元组表达式、关系逻辑规则和SELECT语句。
【正确答案】
【答案解析】关系代数表达式为:
π S#.SNAME(STORES#,G# (SG)÷π G# (GOODS)))
元组表达式为: {t}((u)((v)((w)(STORE(u)∧GOODS(v)∧SG(w)∧w[1]
=u[1)∧w[2]=v[1]∧t[1]=u[1]∧t [2]=u[2])}
关系逻辑规则如下:
W(x,y)← STORE(x,y,a) ∧┑ GOODS(b,c, d) ∧┒ `SG(x,b,e)
SELECT 语句为:
SELECT S#, SNAME
FROM STORE
WHERE NOT EXISTS
( SELECT *
FROM GOODS
WHERE NOT EXISTS
( SELECT *
FROM SG
WHERE SG. S# = STORE. S#
AND SG. G# = GOODS. G#) );
问答题 [问题3]
在基本表中,检索每个仓库存储商品的总价值。试写出相应的SELECT语句。要求显示(S#,SUM_VALUE),其属性为仓库编号及该库存储商品的总价值。
【正确答案】
【答案解析】SELECT 语句为:
SELECT S#, SUM ( QUANTITY * PRICE) AS
SUM_VALUE
FROM SG,GOODS
WHERE SG. G# = GOODS. G#
GROUP BY S#;
问答题 [问题4]
在基本表中,写一个断言,规定每个仓库存储商品的单价为1万元以上的商品种类最多为20种。
【正确答案】
【答案解析】CREATE ASSERTION ASSE6 CHECK
(20 > = ALL ( SELECT COUNT( SG. G#)
FROM SG, GOODS
WHERE SG. G# = GOODS. G# AND PRICE >
10000
GROUP BY S#));