最常用的一种基本数据模型是关系数据模型,它用统一的 21 结构来表示实体及实体之间的联系。关系数据库的数据操作语言(DML)主要包括 22 两类操作。 关系运算以关系代数为理论基础,关系代数的最基本操作是并、差、笛卡儿积、 23 。 用RS表示关系只和关系S的 24 。 设关系尺和关系S图示如下: R:A B C a b c b b f C a d d a d S:B C D b c d b C e a d b T:A B C D a b c d a b C e c a d b d a d b 则关系T是关系R和关系S 25 的结果。
27. b.b.若需得到每种产品的名称和该产品的总库存量,则对应的查询语句为: SELECT name, SUM (quantity) FROMP, I WHERE A.P. productID=I.productID; B.P.productID=I.productID ORDER BY name; C.P.productID=I.productID GROUP BY name; D.P.productID=I.productID GROUP BY name, quantity;
A B C D
C
28. c.c.若需得到在所有仓库中都存在的产品的名称,则对应的查询语句为: SELECT name FROM P WHERE (SELECT*FROM W WHERE NOT EXISTS (SELECT*FROM I WHERE P.productID=I.productID AND W.warehouseID=I.warehouseID)) A.EXISTS B.NOTEXISTS C.IN D.NOTm
设供应商供应零件的关系模式为SP(Sno,Pno,Qty),其中Sno表示供应商号,Pno表示零件号,Qty表示零件数量。查询至少包含了供应商“168”所供应的全部零件的供应商号的 SQL语句如下: SELECT Sno FROMSP SPX WHERE 37 (SELECT* FROM SP SPY WHERE 38 ANDNOTEXISTS (SELECT* FROM SP SPZ WHERE 39 ));
37.
A.EXISTS
B.NOTEXISTS
C.IN
D.NOT IN
A B C D
B
38.
A.SPY.Sno='168’
B.SPY.Sno<>'168'
C.SPY.Sno=SPX.Sno
D.SPY.Sno<>SPX.Sno
A B C D
A
39.
A.SPZ.Sno=SPY.Sno AND SPZ.Pno=SPY.Pno
B.SPZ.Sno=SPX.Sno AND SPZ.Pno=SPX.Pno
C.SPZ.Sno=SPX.Sno AND SPZ.Pno=SPY.Pno
D.SPY.Sno<>'168' AND SPZ.Pno=SPY.Pno
A B C D
C
[解析] 题目要求的是至少包含了供应商“168”所供应的全部零件的供应商号,可以分解成两个否定形式:不存在这样的供应商,168号选了的商品,该供应商没有选择。 根据以上的分解,显然第一空选择否定的表达,而IN/NOT IN的一般用法为 SELECT * FROM table_name1 WHERE column1 IN/NOT IN (SELECT column1 FROM table_name2 WHERE conditions); 也就是说,IN后面接的是一个集合,且前面有列名column1。 EXISTS/NOT EXISTS指是否存在,一般用法为: SELECT * FROMtable_name1 WHEREEXISTS/NOTEXISTS (SELECT* FROMtable_name2 WHERE conditions);
40. 对于基本表S(S#,NAME,SEX,BIRTHDAY)和SC(S#,C#,GRADE),其中S#,NAME,SEX, BIRTHDAY,C#和GRADE分别表示学号、姓名、性别、生日、课程号和成绩。 有一SQL语句: SELECT S# NAME FROM S WHERE S# NOT IN (SELECT S# FROM S WHERE C#='c102'); 其等价的关系代数表达式是。
[解析] (1)因为R上的一个函数依赖集为F={H→J,J→K,I→J,KL→J,JL→H),对于分解ρ ={HIL,IKL,IJL)可以构造一个二维表,如表7-14所示。 ①根据函数依赖集中H→J,J→K对上表进行修改,由于属性列H和属性列J上午相同的元素,所以无法修改。但对于I→J在属性列I上对应的1,2,3行上为全a2元素,且J中的第3行为a3,所以可将属性列J的第1行b13和第2行b23改为a3。修改后的表如表7-15所示。 ②JL→H在属性列JL上对应的1,2,3行上为a3,a5元素,属性列H的第1行为a1,所以将属性列H的第2行b21和第3行b31改为a1。修改后的表如表7-16所示。 从上表可以看到第2行全为ala2a3a4a5,所以ρ是无损的。 (2)因为关系代数表达式ρ5<'2'(R)的含义为选取关系R中第5个属性E的值小于“2”的元组,所以等价的SQL语句为SELECT* FROM R WHEREE<'2'。