课后作业答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
产品数据库
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)、处理类型(激光的还是喷墨的)以及价格。
关系PC的数据
关系Laptop的数据
关系Printer的数据
二战中的大型舰船数据库
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的数据
关系Battles的数据
关系Outcomes的数据
需要注意的是:这个数据库中存在着“悬浮元组”,比如,在关系Outcomes中出现的船只可能在关系Ships中查不到。
※作业一:
习题1.1
1.对于产品数据库中的4个关系,写出它们的关系模式定义语句。
CREATE TABLE Product (
maker char(3),
model char(4) primary key,
type char(10)
);
CREATE TABLE PC (
model char(4) primary key,
speed decimal(3,2),
ram int,
hd int,
price int
);
CREATE TABLE Laptop (
model char(4) primary key,
speed decimal(3,2),
ram int,
hd int,
screen decimal(3,1),
price int
);
CREATE TABLE Printer (
model char(4) primary key,
color char(5),
type char(10),
price int
);
2.修改关系Printer,删掉属性color。
ALTER TABLE Printer DROP COLUMN color;
3.修改关系Laptop,增加属性od(光驱类型,比如CD、DVD)。如果某个笔记本电脑没有光驱,则该属性的默认值为‘none’。
ALTER TABLE Laptop ADD od char(10) DEFAULT ‘none’;
习题1.2 [选做]
1.对于二战中的大型舰船数据库中的4个关系,写出它们的关系模式定义语句。CREATE TABLE Classes (
class char(20) primary key,
type char(2),
country char (20),
numGuns smallint,
bore smallint,
displacement int
);
CREATE TABLE Ships (
name char(20) primary key,
class char(20),
launched int
);
CREATE TABLE Battles (
name char(20) primary key,
date datetime
);
CREATE TABLE Outcomes (
ship char(20),
battle char(20),
result char(7),
primary key (ship, battle)
);
2.修改关系Classes,删掉属性bore。
ALTER TABLE Classes DROP COLUMN bore;
3.修改关系Ships,增加属性yard,它给出了该船的船坞。
ALTER TABLE Ships ADD yard char(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,A VG(C)(S)
5. γA,A VG(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)}