1、实验数据库设计 Document number【SA80SAB-SAA9SYT-SAATC-SA6UT-SA18】实验数据库设计实验7 数据库设计(6学时) 实验目的与要求了解数据库设计的重要性和数据库设计在信息系统开发和建设中的核心地位。掌握数据库设计方法和步骤。 实验任务在某个RDBMS产品上,选择合适的应用系统开发工具为某个部门或单位开发一个数据库应用系统。通过实践,掌握本章介绍的数据库设计方法,同时培养团队合作精神。要求56位同学组成一个开发小组,每位同学承担不同角色(例如:项目管理员、DBA、系统分析员、系统设计员、系统开发员、系统测试员)。具体要求:给出数据库设计各个阶段的详细设计
2、报告;写出系统的主要功能和使用说明;提交运行的系统;写出收获和体会,包括已解决和尚未解决的问题,进一步完善的设想与建议;每个小组进行20分钟的报告和答辩,讲解设计方案,演示系统运行,汇报分工与合作情况。网上书店数据库设计一、设计意义 伴随着信息化的发展,计算机走进了千家万户,人们的交流变得方便,方便了网民的生活!此外,伴随着卓越、当当、淘宝等网络购物平台的兴起,网络购物也被网民认可,首先,网上书店方便了网民的生活,更加便捷地、足不出户便可买到心仪的书籍;其次,网上购书减少了许多中间销售代理,因此价格会比较低,对广大网民的好处是非常明显的;再者,网上书店是信息化购物,基本上所有操作都是通过计算机
3、程序自动完成的,因此大大降低了劳力的消耗;最后,电子商务与出版发行业的结合使发展网上书店及研究网上书店具有双重意义,充分结合互联网销售的特点探索图书发行的新渠道和新模式,是对电子商务科学的充实和补充,更是对出版发行业发行渠道和市场的开拓和创新。 数据库对于一个系统的意义是相当重要的,它关系到整个项目的整体流程,整个网站的后期维护便捷与否,从长远利益来看,数据库的设计是至关重要的。二、需求分析系统功能分析本实验将设计出一个网上书店数据库,其要求简要如下:(1)系统用户由两类组成:管理员和客户。(2)管理员负责后台管理: 图书信息的维护(增、删、改),图书要进行分类管理; 客户信息的维护; 订单的
4、确认和删除。(3)读者可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理的情况。 数据需求系统共有七个实体:客户、管理员、图书类型、图书、订单、详细订单、图书评价。(1)会员的属性:自动编号CustomerId、客户名、客户密码、真实姓名、性别、客户电话、E-mail、地址、注册时间(2)管理员的属性:自动编号AdminId、管理员名称、管理员邮箱、密码(3)图书类型的属性:自动编号BookTypeId、类别名称(4)图书的属性:自动编号BookId、图书名称、图书类型、出版社、出版日期、图书作者、图书定价、图书简介、图书库存量、图书成交量(5)订单的属性:自动编号
5、OrderId、客户编号、下单日期、总订购数量、送货方式、支付方式、收货人姓名、收货地址、收货人联系方式、总卖出价(6)详细订单属性:自动编号Id、详细订单OrderDetailId、订单号OrderId、图书编号、订购数量、发货状态、收货状态、卖出总价(7)图书评价的属性:自动编号CommentId、图书编号、评论客户编号、评论客户名、评论时间、评论内容、审核标志详细订单是针对每个商品进行下单,通过详细订单不仅可以产看商品信息而且可以看出每个商品的收发货状态,订单包括多个详细订单此外,由以往的购物经验可知,一般买书的时候都会有一个临时购物车,客户可以把自己想买的书本放入购物车,但是购物车中的
6、商品只是放入了购物车还没有下单(8)临时购物车:客户编号、图书编号、订购数量、总价,是否付款实体间的联系:通过以上分析可知,实体之间的联系有:客户与客户评论之间是一对多关系(1:n)书籍类别与书籍之间是一对多关系(1:n)用户与订单之间是一对多关系(1:n)订单与详细订单之间是一对多关系(1:n) 客户与订单之间是一对多关系(1:n)三、E-R图实体图图3-1 图书类别信息图3-2 管理员信息图3-3 图书信息图3-4 客户信息图3-5 购物车临时订购信息图3-6 订单信息图3-7 订单详细信息图3-8 图书评论信息 实体关系E-R图图3-9 网上书店顶层E-R图四、逻辑结构 逻辑转换 根据节
7、中的E-R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为8个关系,详细信息如下所示:客户(会员)(客户编号,客户名,客户密码,真实姓名,性别,客户电话,E-mail,地址,注册时间)管理员(管理员编号,管理员名称,管理员邮箱,密码)图书类型(图书类型编号,类别名称)图书(图书编号,图书名称,图书类型,出版社,出版日期,图书作者,图书定价,图书简介,图书库存量,图书成交量)购物车零时订购信息(客户编号,图书编号,订购数量,总价,是否付款)订单(订单号,客户编号,下单日期,总订购数量,送货方式,支付方式,收货人姓名,收货地址,收货人联系方式,总卖出价)详细订单(详细订单编号,订单号,
8、图书编号,订购数量,发货状态,收货状态,卖出总价)图书评价(图书评价编号,图书编号,评论客户编号,评论客户名,评论时间、评论内容,审核标志) 细化表结构 为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:(1)客户信息表tb_customerinfo列名说明数据类型约束CustomerId客户编号int主码(自增字段)CustomerName客户名称varchar(20)主码not nullCustomerPwd客户密码varchar(20)not nullCustomertruename真实姓名varchar(20)no
9、t nullCustomerSex性别varchar(2)not null, 取“男”或“女”CustomerTel客户电话varchar(20)not nullCustomerEmailE-mailvarchar(20)not nullCustomerAddr地址varchar(20)not nullCustomerRegTime注册时间datetimenot null表1 客户信息表(2)图书类型信息表tb_booktypeinfo列名说明数据类型约束BookTypeId图书类型编号int主码(自增字段)BookTypeName类别名称varchar(50)not null表2 图书类型信
10、息表(3)图书信息表tb_bookinfo列名说明数据类型约束BookId图书编号int主码(自增字段)BookTypeId图书类型intnot null, 引用tb_booktypeinfo的外码BookName图书名varchar(20)not nullBookPress出版社varchar(20)not nullBookPubDate出版日期datetimenot nullBookAuthor图书作者varchar(10)not nullBookPrice图书定价moneynot nullBookOutline图书简介varchar(200)not nullBookDealmount成交
11、量intnot nullBookStoremount图书库存量intnot null表3 图书信息表(4)管理员信息表tb_manager列名说明数据类型约束AdminId管理员编号int主码(自增字段)AdminName管理员名称varchar(10)not null AdminPwd密码varchar(20)not null表4 管理员信息表(5)购物车临时订购信息tb_shopbook列名说明数据类型约束CustomerId客户编号int主码(自增字段)BookId图书编号int主码, 引用tb_bookinfo的外码ordermount订购数量intnot nullprice总价mon
12、eynot nullispay是否付款varchar(10)not null,默认为未付款,取“未付款”或“已付款”表5 购物车临时订购信息表(6)订单信息表tb_order列名说明数据类型约束OrderId订单编号varchar(20)主码CustomerId客户编号intnot null, 引用tb_customerinfo的外码Orderdate下单日期datetimenot nullOrdermount总订购数量intnot nullpostmethod送货方式varchar(100)not nullpaymethod支付方式varchar(100)not nullrecevernam
13、e收货人姓名varchar(10)not nullreceveraddr收货地址varchar(20)not nullrecevertel收货人电话号码varchar(10)not nulltotalprice总卖出价moneynot null表6 订单信息表(7)订单详细信息表tb_orderdetail列名说明数据类型约束OrderDetailId详细订单编号int主码OrderId订单号varchar(20)not null, 引用tb_order的外码BookId图书编号intnot nullordermount订购数量intnot nullpoststatus发货状态varchar(
14、10)not null,默认为未发货,取“未发货”或“已发货”Recevstatus收货状态varchar(10)not null,默认为未收货,取“未收货”或“已收货”sigletotalprice卖出总价moneynot null表7 订单详细信息表(8)图书评价信息表tb_comment列名说明数据类型约束CommentId图书评价编号int主码(自增字段)BookId图书编号intnot null,引用tb_bookinfo的外码CustomerId评论客户编号intnot null, 引用tb_customerinfo的外码Customername评论客户名varchar(20)no
15、t nullCommentdate评论时间datetimenot nullCommentcontent评论内容varchar(100)not nullCommentflag审核标志varchar(10)not null表8 图书评价信息表五、数据库实施本章节主要包含创建表、添加数据和创建必要的触发器、存储过程等内容。5.1创建约束条件外键关联关系:(1)为图书信息表添加图书分类表的外键关联关系alter table tb_bookinfo add constraint FK_TB_BOOKI_REFERENCE_TB_BOOKT foreign key (BookTypeId) referen
16、ces tb_booktypeinfo (BookTypeId) ()为图书评论表添加图书表的外键关联关系alter table tb_comment add constraint FK_TB_COMME_REFERENCE_TB_BOOKI foreign key (BookId) references tb_bookinfo (BookId) ()为图书评论表添加客户表的外键关联关系alter table tb_comment add constraint FK_TB_COMME_REFERENCE_TB_CUSTO foreign key (CustomerId) references
17、tb_customerinfo (CustomerId) ()为订单表添加用户的外键关联关系alter table tb_order add constraint FK_TB_ORDER_REFERENCE_TB_CUSTO foreign key (CustomerId) references tb_customerinfo (CustomerId) ()为详细订单表添加订单的外键关联关系alter table tb_orderdetail add constraint FK_TB_ORDER_REFERENCE_TB_ORDER foreign key (OrderId) referenc
18、es tb_order (OrderId) ()添加详细订单表与书本指尖的外键关联关系 alter table tb_orderdetail add constraint FK_TB_ORDER_REFERENCE_TB_BOOKI foreign key (BookId) references tb_bookinfo (BookId) ()购物车与书本制作间的外键关联关系alter table tb_shopbook add constraint FK_TB_SHOPB_REFERENCE_TB_BOOKI foreign key (BookId) references tb_bookinf
19、o (BookId) ()购物车与用户的外键关系 alter table tb_shopbook add constraint FK_TB_SHOPB_REFERENCE_TB_CUSTO foreign key (CustomerId) references tb_customerinfo (CustomerId) 5.2添加数据(注意添加的先后次序)对于存在外键关联关系的表,注意添加数据的时候要先添加被关联的表的信息 创建视图(需要经常进行的操作)1 定义一个视图查看根据客户的姓名查询其购物车的信息create view shopping_car asselect CustomerName
20、,BookName,ordermount,price from tb_shopbook,tb_customerinfowhere = and = 2 定义一个视图客户可以根据其姓名查询所买到的图书的详细信息create view book_infoasselect CustomerName,BookName,BookTypeId,BookPress,BookPubDate,BookAuthor,BookPrice,BookOutline from tb_bookinfo ,tb_customerinfo where = andBookId = (select BookId from tb_or
21、derdetail where Recevstatus=已收货) 创建必要触发器(1)定义一个触发器,其基本功能是在tb_bookinfo表中修改库存数量时,检查数量是否小于0,如果是提示库存不足,库存为空。其具体代码如下所示:create trigger trig1 on tb_bookinfo for update as if update(BookStoremount) begin declare mount int select mount=BookStoremount from inserted if(mount0) begin print 库存不足,库存为空 rollback en
22、d end(2)定义一个触发器,其基本功能是在填写订单和详细订单的时候相应的总价被计算处理填入相应的位置。其具体代码如下所示:create trigger trig2 on tb_orderdetail for insert,update as begin declare mount int,price money,sigleprice money,totalprice money set mount=(select ordermount from inserted) set totalprice=(select totalprice from tb_order,inserted where
23、= set price=(select bookprice from tb_bookinfo,inserted where = set sigleprice=mount*price update tb_orderdetail set sigletotalprice=sigleprice where orderdetailid=(select orderdetailid from inserted ) update tb_order set totalprice=(totalprice+sigleprice) where orderid=(select orderid from inserted
24、) end 创建必要存储过程1) 建立存储过程customer_book,功能是客户在网站前台根据客户名称来查询买到的图书详细情况,其实现代码如下所示:create procedure customer_book customername varchar(20), bookname varchar(20) out, price money out,ordermount int out, totalprice money out, as select bookname=,price=, ordermount=,totalprice=, from tb_bookinfo,tb_customerin
25、fo,tb_orderdetail where = and =已收货 and = and =customername (2)根据客户名查询所买商品的发货状态create procedure book_poststatecustomername varchar(20),asselect BookName,ordermount,poststatus from tb_orderdetail,tb_bookinfowhere = and = and = 六、总结 通过本次实验使我们对数据库有了一个更加全面,更加深入的了解,也可以说是对本学期所学的数据库知识的一个总结,这次实验不像以前一样,只是对数据库某一部分知识的练习巩固,不仅仅是设计几张表,设计几个存储过程,触发器,而是对这些知识的一个整合,是一次综合的练习,使我们对设计一个数据库的流程有了一个了解和掌握。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1