文档库 最新最全的文档下载
当前位置:文档库 › 数据库系统概论(第四版)课后习题答案

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

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

第1章绪论习题参考答案

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

第2章关系数据库习题参考答案

5.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:

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

πSno(σJno=‘J1’(SPJ))

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

πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))

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

πSno(σPno=‘P1‘(σCOLOR=’红‘(P)∞SPJ))

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

πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘(S∞SPJ∞P)

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章数据库安全性

8、(a)GRANT SELECT ON 职工,部门 TO 王明;

(b)GRANT INSERT,DELETE ON 职工,部门 TO 李勇;

(c)GRANT SELECT ON 职工 WHEN USER()=NAME TO ALL;

(d)GRANT SELECT,UPDATE(工资) ON 职工 TO 刘星;

(e)GRANT ALTER TABLE ON 职工,部门 TO 张新;

(f)GRANT ALL PRIVILEGES ON 职工,部门 TO 周平

WITH GRANT OPTION;

(g)CREATE VIEW 部门工资 AS SELECT MAX(工资),MIN(工资) ,AVG(工资),部门名称

FROM 职工,部门

WHERE 职工.部门号=部门.部门号

GROUP BY 职工.部门号;

GRANT SELECT ON 部门工资 TO 杨兰;

第5章数据库完整性

6、CREATE TABLE DEPT

(Deptno NUMERIC(2),

Deptname VARCHAR(10),

Manager VARCHAR(10),

PhoneNumber Char(12),

CONSTRAINT PK_SC PRIMARY KEY(Deptno));

CREATE TABLE EMP

(Empno NUMERIC(4),

Ename VARCHAR(10),

Age NUMERIC(3),

CONSTRAINT C1 CHECK (Age<=60),

Job VARCHAR(9),

Sal NUMERIC(7,2),

Deptno NUMERIC(2),

CONSTRAINT FK_DEPTNO FOREIGN KEY(Deptno) REFERENCES DEPT(Deptno));

第6章关系数据理论习题参考答案

2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。

学生:学号、姓名、出生年月、系名、班号、宿舍区。

班级:班号、专业名、系名、人数、入校年份。

系:系名、系号、系办公地点、人数。

学会:学会名、成立年份、办公地点、人数。

语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在

同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。

请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在?

解:(1)关系模式如下:

学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)

班级:C(Class,Pname,Dept,Cnum,Cyear)

系:D(Dept,Dno,Office,Dnum)

学会:M(Mname,Myear,Maddr,Mnum)

(2)每个关系模式的最小函数依赖集如下:

A、学生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函数依赖集如下:

Sno Sname,Sno Sbirth,Sno Class,Class Dept,DEPT Rno

传递依赖如下:

由于Sno Dept,而Dept,Dept Rno(宿舍区)

所以Sno与Rno之间存在着传递函数依赖。

由于Class Dept,Dept ,Dept Rno

所以Class与Rno之间存在着传递函数依赖。

由于Sno Class,Class Sno,Class Dept

所以Sno与Dept之间存在着传递函数依赖。

B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:

Class Pname,Class Cnum,Class Cyear,Pname Dept.

由于Class Pname,Pname Class,Pname Dept

所以C1ass与Dept之间存在着传递函数依赖。

C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:

Dept Dno,Dno Dept,Dno Office,Dno Dnum

根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。

D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:

Mname Myear,Mname Maddr,Mname Mnum

该模式不存在传递依赖。

(3)各关系模式的候选码、外部码,全码如下:

A、学生S候选码:Sno;外部码:Dept、Class;无全码

B、班级C候选码:Class;外部码:Dept;无全码

C、系D候选码:Dept或Dno;无外部码;无全码

D、学会M候选码:Mname;无外部码;无全码

(注:可编辑下载,若有不当之处,请指正,谢谢!)

相关文档