问题 单项选择题

某数据库中有供应商关系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(8),

Qty NUMERIC(9),

() (Sno,Pno),

() (Sno),

()(Pno));

查询供应了“红”色零件的供应商号、零件号和数量(Qty)的元组演算表达式为:

(()

u[1]=v[1]

v[2]=w[1]

w[3]=’红’

()))

∧()))

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]=u[4]

D.t[1]=u[1]∧t[2]=v[2]∧t[3]=v[4]

答案

参考答案:D

解析:

[分析]:

本题的SQL语言填空部分非常容易,实际上就是要考生写出关系的主键和外键,即使考生不记得如何用SQL定义主键、外键,只要能正确找出主键、外键就能根据备选项推出正确答案。

现在我们来分析SP关系的主键和外键。SP中的字段有供应商代码、零件号、状态和数量。题目中提到“要求一个供应商可以供应多种零件,而一种零件可由多个供应商供应”,所以要确定一种零件必须知道其供应商代码和零件号。因此,SP关系的主键应为(供应商代码,零件号),即(Sno,Pno)。又因为Sno为S关系的主键,Pno为P关系的主键,所以Sno是SP关系对应S关系的外键,Pno是SP关系对应P关系的外键。所以(7)选B,设置(Sno,Pno)为SP关系的主键;(8)选C,设置Sno为SP关系对应S关系的外键;(9)选D,设置Pno为,SP关系对应P关系的外键。

(10)和(11)是按要求补充元组演算表达式。

在关系元组演算中,元组演算表达式(简称为元组表达式)的一般形式为{t|[*](t)},其中t是元组变量,它表示一个元数固定的元组,[*]是公式,公式是由原子公式组成的。{t|[*](t)}表示满足公式[*]的所有元组t的集合。原子公式有下 * * 种形式:

(1)R(u),其中R是关系名,u是元组变量。它表示u是关系R的一个元组。

(2)u[i]θv[j],其中u和v都是元组变量,θ是算术比较运算符。该原子公式表示元组u的第i个分量与元组v的第j个分量之间满足θ关系。

(3)w[i]θa或aθw[i],这里a是一个常量,表示元组w的第i个分量与常量a之间满足θ关系。

在一个公式中,如果一个元组变量的前面没有存在量词[*]或全称量词[*]等符号,那么称之为自由元组变量,否则称之为约束元组变量。在元组表达式的一般形式{t|[*](t)}中,t是[*]中惟一的自由元组变量。

关系代数的5种基本运算可以用元组表达式表示如下:

R∪S可用{t|R(t)∨S(t)表示;

R-S可用{t|R(t)∧[*]S(t)}表示;

R×S可用{t(r+s)|

([*]u(r)([*]v(s)(R(u)[*]S(v)[*]t[1]=u[1][*]…[*]t[r]=u[r][*]t[r+1]=v[1][*]…[*]t[r+s]=v[s])}表示,其中t(r+s)表示t有r+s个属性;

πil,...ik(R)可用{t(k)|([*]u)(R(u)[*]t[1]=u[i1][*]t[k]=u[ik])}表示;

σF(R)可用{t|R(t)∧F’)表示,其中F’是F的等价表示形式。

当了解了元组演算的相关知识以后,我们可以分析试题了。从上面的元组表达式的书写格式我们可以看出:(10)应是填写要操作的关系名,这个关系名的顺序是有要求的,因为对应的u,v,w后面有相应的操作。由于后面有条件:w[3]="红",而在关系SP,S,P中,只有关系P有颜色字段,所以P应对应w,又从u[1]=v[1]和v[2]=w[1]可以看出v和两个关系都要关联,在SP,S,P中能与两个关系都有关联的,只有SP,所以断定SP对应v。因此(10)应填S(u)∧SP(v)∧P(w)。(11)是确定结果集要选取的字段,题目要求查询供应商号、零件号和数量(Qty),前面我们已经知道了u,v,w对应的关系了,供应商号出现在S和SP两个关系中,所以t[1]=u[1]或t[1]=v[1]都行。零件号出现在了SP和P两个关系中,t[2]=v[2]或t[2]=w[1]都行,最后的数量只有SP一个关系中有,t[3]=v[4]。故答案t[1]=u[1]∧t[2]=v[2]∧t[3]=v[4]是正确的。

问答题 案例分析题
单项选择题