1、数据库设计练习 1设有商店和顾客两个实体, “商店”属性有商店编号、商店名、地址、电话, “顾客” 属性有顾客编号、姓名、地址、年龄、性别,假设一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物有一个消费金额和日期,而且规定每个顾客在每个商店里每天最多消费一次,根据上述情况完成如下设计:1. 设计该系统的 E-R 图。2. 将 E-R 图转换为关系模式,并标出指出转换后每个关系模式的主码和外码。关系的码用下划线标出商店(商店编号,商店名,地址,电话) 主码:商店编号顾客(顾客编号,姓名,地址,年龄,性别) 主码:顾客编号购物(商店编号,顾客编号,日期,消费金额)主码:商店编
2、号,顾客编号,日期。外码:顾客编号,依赖于顾客表中的顾客编号属性;商店编号,依赖于商店表中的商店编号属性。3. 使用 SQL 语句定义各个关系模式。create table 商店( 商店编号 char(8) primary key,商店名 char(20),地址 char(80),电话 char(11); Create table 顾客(顾客编号 char(8) primary key,姓名 char(10),地址 char(80),年龄 char(4),性别 char(2);create table 购物(商店编号 char(8),顾客编号 char(8),日期 datetime,消费金额
3、decimal(8,2)primary key (商店编号,顾客编号),foreign key (商店编号) references 商店( 商店编号),foreign key (顾客编号) references 顾客( 顾客编号);4. 使用 SQL 语句定义一个按照顾客年龄降序的索引文件。create index c_ageon 顾客 (年龄 desc)数据库设计练习 2请设计一个图书馆数据库,此数据库中对每个借阅者保存读者记录,包括:读者号、姓名、地址、性别、年龄、单位,对每本书存有:书号、书名、作者、出版社,对每本被借出的书存有读者号、借出日期和应还日期。根据上述情况完成如下设计:1.
4、设计该系统的 E-R 图。2. 将 E-R 图转换为关系模式,并标出指出转换后每个关系模式的主码和外码。关系的码用下划线标出读者(读者号,姓名,地址,性别,年龄,单位)主码:读者号图书(书号,书名,作者,出版社)主码:书号借阅(读者号,书号,借出日期,应还日期)主码:读者号,书号。外码:读者号,依赖于读者表中的读者号属性;书号,依赖于图书表中的书号属性。3. 使用 SQL 语句定义各个关系模式。create table 读者(读者号 char(20)primary key,姓名 char(20),地址 char(80),性别 char(2),年龄 char(3),单位 char(80);cre
5、ate table 图书(书号 char(20)primary key,书名 char(40),作者 char(20),出版社 char(80);create table 借阅(读者号 char(20),书号 char(20),借出日期 datetime,应还日期 datetime,primary key(读者号,书号),foreign key(读者号)references 读者(读者号),foreign key(书号)references 图书(书号);4. 使用 SQL 语句定义一个按照读者年龄降序的索引文件。create index reader_ageon 读者 (年龄 desc)查询
6、练习题 1对于某大型商场的订货数据库中的两个基本表订单(订单号,货号,订货单位,订货量,送货地点)库存(货号,货名,库存量,仓库地点,单价)1. 使用 SQL 语言查询所订货物存放在北京的订货单位。select 订货单位 from 订单, 库存 where 订单.货号=库存. 货号 and 仓库地点= 北京;2. 使用 SQL 语言统计每张订单应付的总款项。Select 订单号,订货量* 单价 as 总款项From 订单 ,库存Where 订单.货号=库存. 货号 ;3. 使用 SQL 语言查询没有接到订单货物的所有信息。Select * from 库存where 库存.货号 not in(s
7、elect distinct 货号 from 订单);4. 将货名为“冰箱” 的订货量置为。update 订单 set 订货量=50where 货号 in (select 货号 from 库存 where 货名=冰箱);5. 将查询“三星公司 ”所订货物的名称及送货地点的权限赋予用户“王刚”。create view sam asselect 货名,送货地点from 订单 ,库存where 订单.货号=库存. 货号 and 订货单位= 三星公司grant select on sam to 王刚查询练习题设某商业集团关于商店销售商品的数据库中有三个基本表:SHOP (S#, SNAME, AREA
8、, MGR_NAME)其属性是:商店编号,商店名称,区域名,经理姓名。销售 SALE(S#, G#, QUANTITY)其属性是:商店编号,商品编号,销售数量。商品 GOODS(G#, GNAME, PRICE)其属性是:商品编号,商品名称,单价。1. 使用 SQL 语言查询销售单价高于 500 元商品的商店名称。Select SNAMEFrom shop,sale,goodsWhere shop.S#=sale.S# and sale.G#=goods.G# and price5002. 试用 SQL 语言检索销售“文具 ”的商店的编号和商店名称。Select 商店编号,商店名称From s
9、hop,sale,goodsWhere shop.S#=sale.S# and sale.G#=goods.G# and GNAME=文具3. 试写出下列操作的 SQL 语句:从 SALE 表中,把“利民商店”中销售单价低于 200 元的商品的销售元组全部删除。Delete from saleWhere S# =(select S# from shop where sname=利民商店)And G# in (select g# from goods where price200);试写出下列操作的 SQL 语句:统计区域名为“中部”的所有商店销售的每一种商品的总数量和总价值。要求显示(G#, GNAME, SUM_QUANTITY, SUM_VALUE),其属性为:商品编号、商品名称、销售数量、销售价值。Select goods.G#,gname,sum(quantity) as SUM_QUANTITY,price* sum(quantity) as SUM_VALUEFrom shop,sale,goodsWhere shop.S#=sale.S# and sale.G#=goods.G# and area=中部Group by goods.G#