标签:
请大家指教,不知道做的对不对,欢迎联系972656027@qq.com
因为关系代数转sql语句感觉没有ALPHA语言转sql容易,所以只写了ALPHA语言的答案。
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
供应商S(SNO , SNAME , STATUS , CITY)
零件P(PNO , PNAME , COLOR , WEIGHT)
工程J(JNO , JNAME , CITY)
供应情况表SPJ(SNO , PNO , JNO , QTY)
GET W(SPJ.sno):SPJ.jno = “j1”;
GET W(SPJ.sno):SPJ.jno = “j1” ^ SPJ.pno=”p1”;
Range P px
GET W(SPJ.sno):存在px(SPJ.jno = px.jno ^ px.color = “red”);
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”);
思路: 依次检查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)
)
标签:
原文地址:http://www.cnblogs.com/yudidi/p/5390556.html