某数据库中有供应商关系S和零件关系P,其中,供应商关系模式S(Sno,Sname, SZip,City)中的属性分别表示;供应商代码、供应商名、邮编、供应商所在城市;零件关系模式P(Pno,Pname,Color,Weight,City)中的属性分别表示:

admin2006-03-15  42

问题 某数据库中有供应商关系S和零件关系P,其中,供应商关系模式S(Sno,Sname, SZip,City)中的属性分别表示;供应商代码、供应商名、邮编、供应商所在城市;零件关系模式P(Pno,Pname,Color,Weight,City)中的属性分别表示:零件号、零件名、颜色、重量、产地。要求一个供应商可以供应多种零件,而一种零件可以由多个供应商供应。请将下面的SQL语句空缺部分补充完整。
   CREATE TABLE SP (Sno CHAR(5),
                    Pno  CHAR(6),
                    Status CHAR(S),
                    Qty NUMERIC(9),
                     (28)  (Sno,Pno),
                     (29)  (Sno),
                      (30)  (Pno));
    查询供应了“红”色零件的供应商号、零件号和数量(Qty)的元组演算表达式为:
   {t|((31)∧u[1]=v[1]∧v[2]=w[1]∧w[3]=’红’∧(32))}

选项 A、FOREIGN KEY
B、PRIMARY KEY
C、FOREIGN KEY(Sno)REFERENCES S
D、FOREIGN KEY(Pno)REFERENCES P

答案B

解析 本题考查的是关系数据库SQL语言与元组演算语言的基础知识。
   SQL空缺部分主要是对关系模式SP的完整性定义。根据题意要求一个供应商可以供应多个零件,而一个零件可以由多个供应商供应,这样在供应商和零件之间存在多对多的联系,为此需要为该联系创建一个关系模式,该关系模式的主码为供应商代码Sno、和零件号Pno构成。因此,空(28)应填PRIMARY KEY。
   供应商代码Sno为供应商关系的主码,在SP关系中的供应商代码Sno必须参照供应商关系S,所以,空(29)应填FOREIGN KEY (Sno)  REFERENCES S。
   零件号Pno为零件关系的主码,在SP关系中的零件号Pno必须参照零件关系P,所以,空(30)应填FOREIGN KEY(Pno)  REFERENCES P。
   完整的SQL语句如下:
   CREATE TABLE SP(Sno CHAR(5),
                   Pno  CHAR(6),
                   Status  CHAR(8),
                   Qty NUMERIC(9),
                   PRIMARY KEY(Sno,Pno),
                   FOREIGN KEY(Sno)  REFERENCES S(SnO),
                    FOREIGN KEY (Pno) REFERENCES P(Pno)):
   对于空(31)的确定,我们应当先分析试题中已给出的元组演算表达式的条件部分: 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。可见空(31)应填:S(u)∧SP(v)∧P(w)。
   对于空(32)的确定,实际上是结果集的确定。由于试题要求查询供应了“红”色零件的供应商号、零件号和数量(Qty)的元组演算表达式,结果集有供应商号、零件号和数量,分别对应关系S的第一个分量,关系SP的第二个分量和第四个分量,所以空 (32)应填t[1]=u[1]∧t[2]=v[2]∧t[3]=v[4]。
   完整的关系代数表达式如下: {t|(S(u)∧SP(V)∧P(w)∧u[1]=V[1]∧V[2]=w[1]∧w[3]=’红’∧t[1]=u[1]∧t[2]=v[2]∧t[3]=v[4])}
转载请注明原文地址:https://kaotiyun.com/show/bsPZ777K
0

最新回复(0)