题干

设有一个SPJ数据库,包括S、P、J及SPJ4个关系模式:

S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY)。

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商
所在城市(CITY)组成。零件表P由零件代码(PNO)、零件名( PNAME)、颜色( COL0OR)、重量( WEIGHT)组成。

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。供应情况表SPJ由供应商代码(SNO)、零件代码( PNO)、工程项目代码(JNO)、供应数量(QTY )组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
今有若干数据如下:
题干图表
试用关系代数、ALPHA语言、QBE语言完成如下查询:
(1)求供应工程J1零件的供应商号码SNO;
(2)求供应工程J1零件P1的供应商号码SNO:
(3)求供应工程J1零件为红色的供应商号码SNO;
(4)求没有使用天津供应商生产的红色零件的工程号JNO;
(5)求至少用了供应商S1所供应的全部零件的工程号JNO。

解答

(1)在SPJ表中选择J1零件,即JNO='J1'

$\prod _{SNO}(\sigma _{JNO='J1'}(SPJ))$

(2)在SPJ表中选择J1零件,同时供应商为P1,即同时满足JNO='J1'和PNO='P1'

$\prod _{SNO}(\sigma _{JNO='J1'\wedge PNO='P1'}(SPJ))$

(3)SPJ表和P表共有PNO属性相同,因此通过这个属性连接两张表

在SPJ表中选择J1零件,同时颜色为红色,但是SPJ表中没有,因此连接P表,即在SPJ表中满足JNO='J1',在P表中满足

$\prod _{SNO}(\prod _{SNO,PNO}(\sigma _{JNO='J1'}(SPJ))\Join \prod _{PNO}(\sigma _{COLOR='红'}(P)))$

(4)查询JNO,应使用J表,减去天津供应商生产的红色零件的条件,即是所得结果
image.png

$\prod _{JNO}-\prod _{JNO}(\prod _{SNO}(\sigma _{CITY='天津'}(S))\Join \prod _{JNO,SNO,PNO}(SPJ) \Join \prod _{PNO}(\sigma _{COLOR='红'}(P)))$

(5)$\prod _{JNO,PNO}(SPJ) \prod _{PNO}(\sigma _{SNO='S1'}(SPJ))​$


已注销
1 声望2 粉丝