课后作业答案.docx
- 文档编号:8767054
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:23.85KB
课后作业答案.docx
《课后作业答案.docx》由会员分享,可在线阅读,更多相关《课后作业答案.docx(17页珍藏版)》请在冰豆网上搜索。
课后作业答案
产品数据库
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课后 作业 答案