设有一个工程供应数据库系统,包括如下四个关系模式:
S(Sno,Sname, Status,City) ;
P(Pno,Pname,Color ,Weight);
J(Jno,Jname, City) ;
SPJ(Sno,Pno,Jno,Qty) ;
供应商表 S 由供应商号、供应商名、状态、城市组成;
零件表 P 由零件号、零件名、颜色、重量组成;
工程项目表 J 由项目号、项目名、城市组成;
供应情况表 SPJ由供应商号、零件号、项目号、供应数量组成;
(1)用关系代数查询没有使用天津供应商生产的红色零件的工程号; (3 分)
(2) 用关系代数查询至少使用了供应商 S1 所供应的全部零件的工程号 JNO; (3 分)
(3)用 SQL 查询工程 J1 使用的各种零件的名称和使用数量; (3 分)
(4)用 SQL 查询没有使用天津供应商生产的零件的工程号; (3 分)
答案:
(1)πJno(J)- πJno (
City= '天津 ' (S)
SPJ
Color= '红 ' (P))
(2)πPno,Jno(SPJ)÷πPno (
Sno='S1' (SPJ))
(3)SELECT Pname,TotalQty FROM (SELECT Pno,SUM(Qty) TotalQty FROM SPJ WHERE Jno='J1' GROUP BY Pno) X,P WHERE P.Pno=X.Pno;
(4)SELECT Jno FROM J WHERE Jno NOT IN (SELECT Jno FROM SPJ WHERE Sno IN (SELECT Sno FROM S WHERE City=' 天津 '));
或:SELECT Jno FROM J WHERE NOT EXISTS (SELECT * FROM SPJ,S WHERE SPJ.Sno=S.Sno AND SPJ.Jno=J.Jno AND City=' 天津 ');
或: SELECT Jno FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.Jno=J.Jno AND EXISTS (SELECT * FROM S WHERE S.Sno=SPJ.Sno AND City=' 天津 '));