数据库系统概论(第四版)课后习题答案

第1章 绪论 习题参考答案

13.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。请用E-R图画山此工厂产品,零件,材料,仓库的概念模型。 构成 产品 m n 零件 m n 制成 n 存储 L 原材料

n 仓库 存储 1 第2章 关系数据库习题参考答案

5.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: 1)求供应工程J1零件的供应商号码SNO:

πSno(σπSno(σπSno(σ

Jno=‘J1’

(SPJ))

(SPJ))

(P)∞SPJ))

(S∞SPJ∞P)

2)求供应工程J1零件P1的供应商号码SNO:

Jno=‘J1’∧Pno=‘P1‘

3)求供应工程J1零件为红色的供应商号码SNO:

Pno=‘P1‘

(σ

COLOR=’红‘

4)求没有使用天津供应商生产的红色零件的工程号JNO:

πJno(SPJ)- πJNO(σ

city=‘天津’∧Color=‘红‘

5)求至少用了供应商S1所供应的全部零件的工程号JNO:

πJno,Pno(SPJ)÷ πPno(σ

Sno=‘S1‘

(SPJ))

第3章 SQL语言习题参考答案

用SQL语句建立第二章习题5中的四个表。

S(SNO,SNAME,STATUS,CITY);

P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY);

SPJ(SNO,PNO,JNO,QTY);

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:

CREATE TABLE S

( Sno CHAR(2) UNIQUE,

Sname CHAR(6) ,

Status CHAR(2), City CHAR(4) );

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成: CREATE TABLE P

( Pno CHAR(2) UNIQUE, Pname CHAR(6), COLOR CHAR(2), WEIGHT INT );

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成:

CREATE TABLE J

( JNO CHAR(2) UNlQUE, JNAME CHAR(8), CITY CHAR(4) );

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成:

CREATE TABLE SPJ

( SNO CHAR(2),PNO CHAR(2),JNO CHAR(2), QTY INT);

4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:

求供应工程J1零件的供应商号码SNO: SELECT SNO FROM SPJ

WHERE JNO=’J1’

求供应工程J1零件P1的供应商号码SNO: SELECT SNO FROM SPJ

WHERE JNO='J1' AND PNO='P1'

求供应工程J1零件为红色的供应商号码SNO: SELECT SNO FROM SPJ,P

WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红' 求没有使用天津供应商生产的红色零件的工程号JNO: SELECT JNO FROM SPJ WHERE JNO NOT IN (

SELECT JNO FROM SPJ,P,S

WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO); 或者:

SELECT JNO FROM J WHERE NOT EXITS

( SELECT * FROM SPJ,S,P

WHERE S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO); 求至少用了供应商S1所供应的全部零件的工程号JNO。

解法一:将查询分为两步

A、查询S1供应商供应的零件号

SELECT DIST PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2) B、查询哪一个工程既使用P1零件又使用P2零件。

SELECT JNO FROM SPJ WHERE PNO='P1'

AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2') 解法二:

SELECT DISTINCT JNO FROM SPJ SPJZ

WHERE NOT EXISTS (

SELECT * FROM SPJ SPJX WHERE SPJX.SNO=’S1’ AND NOT EXISTS( SELECT * FROM SPJ SPJY

WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNO=SPJZ.JNO AND SPJY.SNO=’S1’));

5.针对习题3中的四个表试用SQL语言完成以下各项操作: (1)找出所有供应商的姓名和所在城市。 SELECT SNAME,CITY FROM S

(2)找出所有零件的名称、颜色、重量。 SELECT PNAME,COLOR,WEIGHT FROM P

(3)找出使用供应商S1所供应零件的工程号码。 SELECT DIST JNO FROM SPJ WHERE SNO='S1'

(4)找出工程项目J2使用的各种零件的名称及其数量。 SELECT PNAME,QTY FROM SPJ,P

WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'

(5)找出上海厂商供应的所有零件号码。

SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY='上海' (6)找出使用上海产的零件的工程名称。 SELECT JNAME FROM SPJ,S,J

WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO

(7)找出没有使用天津产的零件的工程号码。

注意: SELECT DISP JNO FROM SPJ

WHERE JNO NOT IN ( SELECT DIST JNO FROM SPJ,S

WHERE S.SNO=SPJ.SNO AND S.CITY='天津')

(8)把全部红色零件的颜色改成蓝色。

UPDATE P SET COLOR='蓝' WHERE COLOR='红' (9)由S5供给J4的零件P6改为由S3供应。

UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6' (10)从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应 的记录。

A、DELETE FROM S WHERE SNO=’S2’ B、DELETE FROM SPJ WHERE SNO=’S2’ (11)请将(S2,J6,P4,200)插入供应情况关系。 INSERT INTO SPJ VALUES(‘S2’,‘J6’,‘P4’,200)

第4章 数据库安全性

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4