关系代数 和 ALPHA语言 习题p75
求供应工程J1零件的供应商号码SNO
求供应工程J1零件P1的供应商号码
求供应工程J1零件为红色的供应商号码SNO
求没有使用天津供应商生产的红色零件的工程号JNO;
求至少用了供应商S1所供应的全部零件的工程号JNO;
请大家指教,不知道做的对不对,欢迎联系[email protected]
因为关系代数转sql语句感觉没有ALPHA语言转sql容易,所以只写了ALPHA语言的答案。
ALPHA语言 习题p75
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
供应商S(SNO , SNAME , STATUS , CITY)
零件P(PNO , PNAME , COLOR , WEIGHT)
工程J(JNO , JNAME , CITY)
供应情况表SPJ(SNO , PNO , JNO , QTY)
求供应工程J1零件的供应商号码SNO
GET W(SPJ.sno):SPJ.jno = “j1”;
求供应工程J1零件P1的供应商号码
GET W(SPJ.sno):SPJ.jno = “j1” ^ SPJ.pno=”p1”;
求供应工程J1零件为红色的供应商号码SNO
Range P px
GET W(SPJ.sno):存在px(SPJ.jno = px.jno ^ px.color = “red”);
求没有使用天津供应商生产的红色零件的工程号JNO;
Range S sx,P px,SPJ spjx
GET W(SPJ.jno):不存在spjx(spjx.sno = sx.sno ^ sx.city = “天津” ^ spjx.pno = p.pno ^ p.color = “red”);
Range S sx,P px,SPJ spjx
GET W(SPJ.x):全部spjx(spjx.sno != sx.sno ^ sx.city = “天津” 或者 spjx.pno != p.pno ^ p.color = “red”);
会漏掉暂时还没有供应情况的工程
Range S sx,P px,SPJ spjx
GET W(J.jno):不存在spjx(spjx.sno = sx.sno ^ sx.city = “天津” ^ spjx.pno = p.pno ^ p.color = “red”);
Range S sx,P px,SPJ spjx
GET W(J.jno):全部spjx(spjx.sno != sx.sno ^ sx.city = “天津” 或者 spjx.pno != p.pno ^ p.color = “red”);
求至少用了供应商S1所供应的全部零件的工程号JNO;
思路: 依次检查P中每一个零件,看S1是否供应了该零件。该如果S1供应了这个零件,再看某个工程是否用了这个零件。如果某个工程
用了S1供应的所有零件,那么这个工程可以放入结果集。
表达式涉及的表: J
操作条件涉及的表: SPJ,SPJ
Range SPJ spjx,SPJ spjy,P px
GET W(J.jno): 全部px(
存在spjx(spjx.pno=px.pno ^ spjx.sno = “S1”) => 存在spjy(spjy.pno = px.pno ^ spjy.jno = J.jno)
)