某数据库中有供应商关系S和零件关系P,其中,供应商关系模式S(Sno,Sname,Szip,City)中的属性分别表示:供应商代码、供应商名、邮编、供应商所在城市;零件号、零件名;颜色、重量、产地。要求一个供应商可以供应多种零件,而一种零件可以由多个供应商供应。请将下面的SQL语句的空缺部分补充完整。
CREATE TABLE SP (Sno CHAR(5),
Pno CHAR(6),
Status CHAR(8),
Qty NUMERIC(9),
(32) (Sno,Pno),
(33) (Sno),
(34) (pno);
查询供应了“红”色零件的供应商号、零件号和数量(QTY)的元组演算表达式为:
t|(u|$)($V)($w)( (35) ^u[1]=v[1]^v[2]=w[1]^w[3]=’红’^ (36) )
(36)处填()。
A.t[1]=U[1]^T[2]=W[2]^T[3]=V[4]
B.t[1]=V[1]^T[2]=U[2]^T[3]=U[4]
C.t[1]=W[1]^T[2]=U[2]^T[3]=V[4]
D.t[1]=U[1]^T[2]=V[2]^T[3]=V[4]
参考答案:D
解析:
[分析]: SQL空缺部分主要是对关系模式SP的完整性定义。根据题意要求,一个供应商可以供应多个零件,而一个零件可以由多个供应商供应,这样在供应商和零件之间存在多对多的联系,为此需要为该联系创建一个关系模式,该关系模式的主码由供应商代码Sno和零件号Pno构成。
供应商代码Sno为供应商关系的主码,在关系SP中的供应商代码Sno必须参照供应商关系S。
零件号Pno为零件关系的主码,在SP关系中的零件号Pno必须参照零件关系P。
完整的SQL语句如下:
CREATETABLESP(Sno CHAR(5),
Pno CHAR(6),
Status CHAR(8),
Qty NUMERIC(9),
PRIMARYKEY(Sno,Pno),
FOREIGNKEY(Sno),
FOREIGNKEY(Pno);
在题目所提及的元组演算表达式中,u[1]=v[1]^v[2]=w[1]^w[3]=’红’,由于w[3]=’红’,这意味着元组变量w应该说明零件关系P;由于w[1]表示零件号,当v[2]=w[1]时,这意味着元组变量v应该说明供应商与零件关系之间的联系SP;由于v[1]表示零件号,当u[1]=v[1]时,根据题目给出的已知条件,不难看出元组变量u应该说明供应商关系S。
由于试题要求查询供应了“红”色零件的供应商号、零件号和数量(Qty)的元组演算表达式,结果集有供应商号、零件号和数量,分别对应关系S的第一个分量,关系SP的第二个分量和第四个分量。