阅读下列说明和E-R图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某网上订书系统的E-R图(已消除了不必要的冗余)如图2-1所示(图中没有标出主码)。图中实体的说明如表2-1所示。相关属性说明如表2-2所示。
表2-1
实体 |
说明 |
Books |
书店内的书 |
Gustomers |
与书店有业务的顾客 |
Orders |
顾客向书店下的购书单 |
表2-2
主要属性 |
说明 |
qty_in_stock |
图书库存量 |
year_published |
出版日期 |
ordernum |
购书单编号 |
cid |
顾客编号 |
bid |
惟一表示每种图书的编码 |
cardnum |
顾客信用卡号码 |
orderdate |
填购书单日期 |
qty |
订购某种图书的数量 |
ship_date |
发货日期 |
一个顾客可以在同一天填写多张购书单,每张购书单上可填写多种图书,每种图书可以订购多本,bid相同的图书在同一张购书单上不能出现多次。
注:为简化起见,不考虑信用卡号码泄漏所带来的安全性等问题。
【图2-1】
【问题1】(9分)
根据E-R图中给出的词汇,按照“有关模式名(属性,属性,...)”的格式,将此E-R图转换为4个关系模式,并指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。
[问题2](2分)
创建Customers表时,cid使用INTEGER数据类型,cname使用CHAR(80)数据类型,address使用CHAR(200)数据类型,cardnum使用CHAR(16)数据类型并且要求此列值惟一。请在下列用于创建表Customers的SQL语句空缺处填入正确的内容。
CREATE TABLE Customers(cid INTEGER NOT NULL,
cname CHAR(80) NOT NULL,
address CHAR(200),
cardnum CHAR(16) NOT NULL,
__(1)__,
__(2)__ )
【问题3】(4分)
如下的SQL语句是书店用于查询“所有订购了bid为‘123-456’图书的用户订购其他图书的情况”的不完整语句,请在空缺处填入正确的内容。
Select bid
From orderlist A
Where not exists(Select * from Orders B
where A. ordernum = B.ordernum and B.cid __(3)__
(Select bid from orderlist C,orders D
where __(4)__.bid='123-456'
and __(5)__=D.ordernum))