课后作业答案.docx

上传人:b****5 文档编号:6914122 上传时间:2023-01-12 格式:DOCX 页数:17 大小:23.85KB
下载 相关 举报
课后作业答案.docx_第1页
第1页 / 共17页
课后作业答案.docx_第2页
第2页 / 共17页
课后作业答案.docx_第3页
第3页 / 共17页
课后作业答案.docx_第4页
第4页 / 共17页
课后作业答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

课后作业答案.docx

《课后作业答案.docx》由会员分享,可在线阅读,更多相关《课后作业答案.docx(17页珍藏版)》请在冰豆网上搜索。

课后作业答案.docx

课后作业答案

产品数据库

Product(maker,model,type)

PC(model,speed,ram,hd,price)

Laptop(model,speed,ram,hd,screen,price)

Printer(model,color,type,price)

关系Product给出了各种产品的制造厂商、型号和产品类型(PC、笔记本电脑或者打印机)。

为了简单起见,假设所有产品的型号都唯一,而不管它是由哪个制造商生产的。

关系PC对于不同型号给出了如下属性:

速度(处理器的速度,单位是GHz)、RAM的大小(单位是MB)、硬盘的容量(单位是GB)以及价格。

关系Laptop与关系PC类似,它在PC的基础上增加了属性screen,即显示器的尺寸(以英寸为单位)。

关系Printer对于每种型号有如下属性:

是否彩色(如果是的话,这个值是true)、处理类型(激光的还是喷墨的)以及价格。

关系Product的数据

A

1001

pc

A

1002

pc

A

1003

pc

A

2004

laptop

A

2005

laptop

A

2006

laptop

B

1004

pc

B

1005

pc

B

1006

pc

B

2007

laptop

C

1007

pc

D

1008

pc

D

1009

pc

D

1010

pc

D

3004

printer

D

3005

printer

E

1011

pc

E

1012

pc

E

1013

pc

E

2001

laptop

E

2002

laptop

E

2003

laptop

E

3001

printer

E

3002

printer

E

3003

printer

F

2008

laptop

F

2009

laptop

G

2010

laptop

H

3006

printer

H

3007

printer

关系PC的数据

1001

2.66

1024

250

2114

1002

2.10

512

250

995

1003

1.42

512

80

478

1004

2.80

1024

250

649

1005

3.20

512

250

630

1006

3.20

1024

320

1049

1007

2.20

1024

200

510

1008

2.20

2048

250

770

1009

2.00

1024

250

650

1010

2.80

2048

300

770

1011

1.86

2048

160

959

1012

2.80

1024

160

649

1013

3.06

512

80

529

关系Laptop的数据

2001

2.00

2048

240

20.1

3673

2002

1.73

1024

80

17.0

949

2003

1.80

512

60

15.4

549

2004

2.00

512

60

13.3

1150

2005

2.16

1024

120

17.0

2500

2006

2.00

2048

80

15.4

1700

2007

1.83

1024

120

13.3

1429

2008

1.60

1024

100

15.4

900

2009

1.60

512

80

14.1

680

2010

2.00

2048

160

15.4

2300

关系Printer的数据

3001

true

ink-jet

99

3002

false

laser

239

3003

true

laser

899

3004

true

ink-jet

120

3005

false

laser

120

3006

true

ink-jet

100

3007

true

laser

200

二战中的大型舰船数据库

Classes(class,type,country,numGuns,bore,displacement)

Ships(name,class,launched)

Battles(name,date)

Outcomes(ship,battle,result)

相同设计的舰船组成一个“类”,类别的名称通常就是这个类的第一艘船的名字。

关系Classes记录了“类”的名字、型号(bb代表主力舰,bc代表巡洋舰)、生产国家、火炮的门数、火炮的尺寸(口径,单位是英寸)和排水量(重量,单位是吨)。

关系Ships记录了舰船的名字、舰船类属名字、开始服役的日期。

关系Battles给出了这些舰船参加的战役的时间。

关系Outcomes给出了各个舰船在各场战役中的结果(是沉没,还是受伤,或者完好)

关系Classes的数据

Bismarck

bb

Germany

8

15

42000

Iowa

bb

USA

9

16

46000

Kongo

bc

Japan

8

14

32000

NorthCarolina

bb

USA

9

16

37000

Renown

bc

Gt.Britain

6

15

32000

Revenge

bb

Gt.Britain

8

15

29000

Tennessee

bb

USA

12

14

32000

Yamato

bb

Japan

9

18

65000

关系Ships的数据

California

Tennessee

1921

Haruna

Kongo

1915

Hiei

Kongo

1914

Iowa

Iowa

1943

Kirishima

Kongo

1915

Kongo

Kongo

1913

Missouri

Iowa

1944

Musashi

Yamato

1942

NewJersey

Iowa

1943

NorthCarolina

NorthCarolina

1941

Ramillies

Revenge

1917

Renown

Renown

1916

Repulse

Renown

1916

Resolution

Revenge

1916

Revenge

Revenge

1916

RoyalOak

Revenge

1916

RoyalSovereign

Revenge

1916

Tennessee

Tennessee

1920

Washington

NorthCarolina

1941

Wisconsin

Iowa

1944

Yamato

Yamato

1941

关系Battles的数据

DenmarkStrait

5/24-27/41

Guadalcanal

11/15/42

NorthCape

12/26/43

SurigaoStrait

10/25/44

关系Outcomes的数据

Arizona

PearlHarbor

sunk

Bismarck

DenmarkStrait

sunk

California

SurigaoStrait

ok

DukeofYork

NorthCape

ok

Fuso

SurigaoStrait

sunk

Hood

DenmarkStrait

sunk

KingGeorgeV

DenmarkStrait

ok

Kirishima

Guadalcanal

sunk

PrinceofWales

DenmarkStrait

damaged

Rodney

DenmarkStrait

ok

Scharnhorst

NorthCape

sunk

SouthDakota

Guadalcanal

damaged

Tennessee

SurigaoStrait

ok

Washington

Guadalcanal

ok

WestVirginia

SurigaoStrait

ok

Yamashiro

SurigaoStrait

sunk

需要注意的是:

这个数据库中存在着“悬浮元组”,比如,在关系Outcomes中出现的船只可能在关系Ships中查不到。

※作业一:

习题1.1

1.对于产品数据库中的4个关系,写出它们的关系模式定义语句。

CREATETABLEProduct(

makerchar(3),

modelchar(4)primarykey,

typechar(10)

);

CREATETABLEPC(

modelchar(4)primarykey,

speeddecimal(3,2),

ramint,

hdint,

priceint

);

CREATETABLELaptop(

modelchar(4)primarykey,

speeddecimal(3,2),

ramint,

hdint,

screendecimal(3,1),

priceint

);

CREATETABLEPrinter(

modelchar(4)primarykey,

colorchar(5),

typechar(10),

priceint

);

2.修改关系Printer,删掉属性color。

ALTERTABLEPrinterDROPCOLUMNcolor;

3.修改关系Laptop,增加属性od(光驱类型,比如CD、DVD)。

如果某个笔记本电脑没有光驱,则该属性的默认值为‘none’。

ALTERTABLELaptopADDodchar(10)DEFAULT‘none’;

习题1.2[选做]

1.对于二战中的大型舰船数据库中的4个关系,写出它们的关系模式定义语句。

CREATETABLEClasses(

classchar(20)primarykey,

typechar

(2),

countrychar(20),

numGunssmallint,

boresmallint,

displacementint

);

CREATETABLEShips(

namechar(20)primarykey,

classchar(20),

launchedint

);

CREATETABLEBattles(

namechar(20)primarykey,

datedatetime

);

CREATETABLEOutcomes(

shipchar(20),

battlechar(20),

resultchar(7),

primarykey(ship,battle)

);

2.修改关系Classes,删掉属性bore。

ALTERTABLEClassesDROPCOLUMNbore;

3.修改关系Ships,增加属性yard,它给出了该船的船坞。

ALTERTABLEShipsADDyardchar(30);

※作业二:

(写关系代数表达式)

习题2.1对于产品数据库,试写出下列查询的关系代数表达式。

1.哪种PC型号具有最少3.00的速度?

?

model(?

speed>=3.00(PC))

2.哪个生产厂商的笔记本电脑的硬盘容量至少100GB?

?

maker(Product?

(?

hd>=100(Laptop)))

3.查询厂商B生产的所有产品的型号和价格。

?

model,price(?

maker=’B’(Product)?

PC)?

?

model,price(?

maker=’B’(Product)?

Laptop)?

?

model,price(?

maker=’B’(Product)?

Printer)

4.查询所有彩色激光打印机的型号。

?

model(?

color=’true’?

type=’laser’(Printer))

5.查询那些只生产笔记本电脑,不生产PC的厂商。

?

maker(?

type=’laptop’(Product))-?

maker(?

type=’pc’(Product))

※习题2.2(关系代数计算)

已知关系

R(A,B):

{(0,1),(2,3),(0,1),(2,4),(3,4)}

S(B,C):

{(0,1),(2,4),(2,5),(3,4),(0,2),(3,4)}

计算下面的表达式:

1.?

B+1,C-1(S)2.?

B,A(R)3.?

(R)

4.?

B,AVG(C)(S)5.?

A,AVG(C)(R?

S)(注:

?

此处代表自然连接)

6.R与S的自然左外连接7.R与S的自然右外连接

答:

1.{(1,0),(3,3),(3,4),(4,3),(1,1),(4,3)}

2.{(0,1),(0,1),(2,3),(2,4),(3,4)}

3.{(0,1),(2,3),(2,4),(3,4)}

4.{(0,1.5),(2,4.5),(3,4)}

5.{(2,4)}

6.{(2,3,4),(2,3,4),(0,1,NULL),(0,1,NULL),(2,4,NULL),(3,4,NULL)}

7.{(2,3,4),(2,3,4),(NULL,0,1),(NULL,2,4),(NUL,2,5),(NULL,0,2)}

习题2.3[选做]

对于二战中的大型舰船数据库,试写出下列查询的关系代数表达式。

1.查询那些火炮口径大于16英寸的舰船类属和生产国。

?

class,country(?

bore>16(Classes))

2.查询在丹麦海峡(DenmarkStrait)战役中沉没的舰船。

?

ship(?

battle=’DenmarkStrait’?

result=’sunk’(Outcomes)

3.1921年签署的华盛顿条约禁止制造超过35000吨的大型军舰,请列出那些违背华盛顿条约的军舰。

?

name(?

displacement>35000(Classes)?

?

launched>1921(Ships))

4.列出参加了瓜达康纳尔岛(Guadalcanal)海战的战舰的名称、排水量及火炮的数目。

?

name,displacement,numGuns(?

battle=’Guadalcanal’(Outcomes)?

?

Outcomes.ship=ships.name(Ships)?

Classes)

5.列出那些既有主力舰又有巡洋舰的国家。

?

country(?

type=’bb’(Classes))?

?

country(?

type=’bc’(Classes))

作业三:

(写SQL语句)

习题3.1对于产品数据库,用SQL写出下面的查询:

以下4小题要求使用连接查询

1.查询硬盘容量至少30G的笔记本电脑制造商及该电脑的速度。

SELECTmaker,speed

FROMProduct,Laptop

WHEREProduct.model=Laptop.modelandhd>=30;

2.查询制造商B生产的任意类型的所有产品的型号和价格。

(SELECTProduct.model,price

FROMProduct,PC

WHEREProduct.model=PC.modelANDmaker='B')

UNION

(SELECTProduct.model,price

FROMProduct,Laptop

WHEREProduct.model=Laptop.modelANDmaker='B')

UNION

(SELECTProduct.model,price

FROMProduct,Printer

WHEREProduct.model=Printer.modelANDmaker='B');

3.查询出现在两种或两种以上PC中的硬盘大小。

SELECTDISTINCTX.hd

FROMPCX,PCY

WHEREX.hd=Y.hdandX.model

4.查询每对具有相同速度和RAM的PC的型号。

每一对只能列出一次;例如,若(i,j)已被列出,则(j,i)就不能再被列出。

SELECTX.model,Y.model

FROMPCX,PCY

WHEREX.speed=Y.speedandX.ram=Y.ramandX.model

以下4小题要求使用子查询(使用IN、EXISTS、ANY、ALL)

5.找出速度在3.0以上的PC制造商。

SELECTDISTINCTmaker

FROMProduct

WHEREmodelIN(

SELECTmodel

FROMPC

WHEREspeed>=3.0);

6.找出价格最高的打印机。

SELECTmodel

FROMPrinter

WHEREprice>=ALL(SELECTprice

FROMPrinter);

7.找出速度比任何一台PC都慢的笔记本电脑。

SELECTmodel

FROMLaptop

WHEREspeed

FROMPC);

8.找出价格最低的彩色打印机的制造商

SELECTmaker

FROMProduct

WHEREmodelIN(

SELECTmodelFROMPrinter

WHEREcolor=‘true’ANDprice<=ALL(SELECTprice

FROMPrinter

WHEREcolor=‘true’));

以下4小题使用集函数、分组

9.查询厂商A生产的PC的平均价格。

SELECTAVG(price)

FROMProduct,PC

WHEREProduct.model=PC.modelandmaker=’A’;

10.查询每种不同速度的PC的平均价格。

SELECTspeed,AVG(price)

FROMPC

GROUPbyspeed;

11.查询每家厂商生产的笔记本电脑的显示器尺寸的平均值。

SELECTmaker,AVG(screen)

FROMProduct,Laptop

WHEREProduct.model=Laptop.model

GROUPBYmaker

12.查询至少生产三种不同型号PC的制造商。

SELECTmaker

FROMProduct

WHEREtype=’pc’

GROUPBYmaker

HAVINGCOUNT(model)>=3;

习题3.2对于产品数据库,用SQL写出下面的更新:

1.通过两条INSERT语句在数据库中添加如下信息:

厂商C生产的型号为1100的PC,其速度为3.2,RAM容量大小为1024,硬盘容量大小为180,售价为$2499。

INSERTINTOProductVALUES(‘C’,‘1100’,‘pc’);

INSERTINTOPCVALUES(‘1100’,3.2,1024,180,2499);

2.删除所有硬盘容量低于100GB的PC。

DELETEFROMPC

WHEREhd<100;

3.厂商A收购了厂商B,将所有B生产的产品改为由A生产。

UPDATEProductSETmaker=’A’WHEREmaker=‘B’;

习题3.3

Movies(title,year,length,genre,studioName,producerC#)

StarsIn(movieTitle,movieYear,starName)

MovieStar(name,address,gender,birthdate)

MovieExec(name,address,cert#,netWorth)

Studio(name,address,presC#)

从上面的基本表构造以下视图:

1.视图StudioPress给出了既是电影公司经理(Studiopresident)又是制片人(MovieExecutive)的那些人的名字、地址、证书号和资产。

CREATEVIEWStudioPress(name,address,cert#,netWorth)AS

SELECTMovieExec.name,MovieExec.address,cert#,netWorth

FROMStudio,MovieExec

WHEREStudio.presC#=MovieExec.cert#;

2.视图ExecutiveStar给出了既是制片人又是演员的那些人的名字、地址、性别、生日。

CREATEVIEWExecutiveStar(name,address,gender,birthdate)AS

SELECTMovieExec.name,MovieExec.address,gender,birthdate

FROMMovieExec,MovieStar

WHEREMovieExec.name=MovieStar.nameandMovieExec.address=MovieStar.address;

不用基本表,基于以上视图,用SQL写出以下查询:

3.找出既是演员又是制片人的女性姓名。

SELECTname

FROMExecutiveStar

WHEREgender=’F’;

4.找出是电影公司经理,同时资产至少有$10000000的制片人名字。

SELECTname

FROMStudioPress

5.找出是演员同时资产至少有$50000000的电影公司经理的名字。

SELECTStudioPress.name

FROMStudioPress,ExecutiveStar

WHEREStudioPress.name=ExecutiveStar.nameandStudioPress.address=E

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1