《实验7--数据库设计(共14页).doc》由会员分享,可在线阅读,更多相关《实验7--数据库设计(共14页).doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验7 数据库设计(6学时) 实验目的与要求了解数据库设计的重要性和数据库设计在信息系统开发和建设中的核心地位。掌握数据库设计方法和步骤。 实验任务在某个RDBMS产品上,选择合适的应用系统开发工具为某个部门或单位开发一个数据库应用系统。通过实践,掌握本章介绍的数据库设计方法,同时培养团队合作精神。要求56位同学组成一个开发小组,每位同学承担不同角色(例如:项目管理员、DBA、系统分析员、系统设计员、系统开发员、系统测试员)。具体要求:给出数据库设计各个阶段的详细设计报告;写出系统的主要功能和使用说明;提交运行的系统;写出收获和体会,包括已解决和尚未解决的问题,进一步
2、完善的设想与建议;每个小组进行20分钟的报告和答辩,讲解设计方案,演示系统运行,汇报分工与合作情况。网上书店数据库设计一、设计意义伴随着信息化的发展,计算机走进了千家万户,人们的交流变得方便,方便了网民的生活!此外,伴随着卓越、当当、淘宝等网络购物平台的兴起,网络购物也被网民认可,首先,网上书店方便了网民的生活,更加便捷地、足不出户便可买到心仪的书籍;其次,网上购书减少了许多中间销售代理,因此价格会比较低,对广大网民的好处是非常明显的;再者,网上书店是信息化购物,基本上所有操作都是通过计算机程序自动完成的,因此大大降低了劳力的消耗;最后,电子商务与出版发行业的结合使发展网上书店及研究网上书店具
3、有双重意义,充分结合互联网销售的特点探索图书发行的新渠道和新模式,是对电子商务科学的充实和补充,更是对出版发行业发行渠道和市场的开拓和创新。数据库对于一个系统的意义是相当重要的,它关系到整个项目的整体流程,整个网站的后期维护便捷与否,从长远利益来看,数据库的设计是至关重要的。二、需求分析2.1系统功能分析本实验将设计出一个网上书店数据库,其要求简要如下:(1)系统用户由两类组成:管理员和客户。(2)管理员负责后台管理: 图书信息的维护(增、删、改),图书要进行分类管理; 客户信息的维护; 订单的确认和删除。(3)读者可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理
4、的情况。2.2 数据需求系统共有七个实体:客户、管理员、图书类型、图书、订单、详细订单、图书评价。(1)会员的属性:自动编号CustomerId、客户名、客户密码、真实姓名、性别、客户电话、E-mail、地址、注册时间(2)管理员的属性:自动编号AdminId、管理员名称、管理员邮箱、密码(3)图书类型的属性:自动编号BookTypeId、类别名称(4)图书的属性:自动编号BookId、图书名称、图书类型、出版社、出版日期、图书作者、图书定价、图书简介、图书库存量、图书成交量(5)订单的属性:自动编号OrderId、客户编号、下单日期、总订购数量、送货方式、支付方式、收货人姓名、收货地址、收货
5、人联系方式、总卖出价(6)详细订单属性:自动编号Id、详细订单OrderDetailId、订单号OrderId、图书编号、订购数量、发货状态、收货状态、卖出总价(7)图书评价的属性:自动编号CommentId、图书编号、评论客户编号、评论客户名、评论时间、评论内容、审核标志详细订单是针对每个商品进行下单,通过详细订单不仅可以产看商品信息而且可以看出每个商品的收发货状态,订单包括多个详细订单此外,由以往的购物经验可知,一般买书的时候都会有一个临时购物车,客户可以把自己想买的书本放入购物车,但是购物车中的商品只是放入了购物车还没有下单(8)临时购物车:客户编号、图书编号、订购数量、总价,是否付款实
6、体间的联系:通过以上分析可知,实体之间的联系有:客户与客户评论之间是一对多关系(1:n)书籍类别与书籍之间是一对多关系(1:n)用户与订单之间是一对多关系(1:n)订单与详细订单之间是一对多关系(1:n)客户与订单之间是一对多关系(1:n)三、 E-R图3.1实体图图书类型图书类别号类别名称图3-1 图书类别信息管理员管理员编号管理员名称管理员邮箱密码图3-2 管理员信息图 书图书编号图书名称图书类型出版社出版日期图书作者图书定价图书简介图书库存量图书成交量图3-3 图书信息客 户客户编号客户名客户密码真实姓名性别地址客户电话注册时间E-mail图3-4 客户信息购物车临时订购信息客户编号图书
7、编号订购数量总价是否付款图3-5 购物车临时订购信息订 单订单编号客户编号下单日期总订购数量送货方式支付方式收货人姓名收货地址收货人联系方式总卖出价图3-6 订单信息详细订单订单详细编号订单号图书编号订购数量发货状态收货状态卖出总价图3-7 订单详细信息图书评价评价编号图书编号评价客户编号评价客户名审核标志评价内容评价时间图3-8 图书评论信息3.2 实体关系E-R图图书分类图书参照参照参照评论详细订单订单购物车参照客户参照参照1N1NN11NN1N11N图3-9 网上书店顶层E-R图四、逻辑结构4.1 逻辑转换 根据3.2节中的E-R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分
8、为8个关系,详细信息如下所示:客户(会员)(客户编号,客户名,客户密码,真实姓名,性别,客户电话,E-mail,地址,注册时间)管理员(管理员编号,管理员名称,管理员邮箱,密码)图书类型(图书类型编号,类别名称)图书(图书编号,图书名称,图书类型,出版社,出版日期,图书作者,图书定价,图书简介,图书库存量,图书成交量)购物车零时订购信息(客户编号,图书编号,订购数量,总价,是否付款)订单(订单号,客户编号,下单日期,总订购数量,送货方式,支付方式,收货人姓名,收货地址,收货人联系方式,总卖出价)详细订单(详细订单编号,订单号,图书编号,订购数量,发货状态,收货状态,卖出总价)图书评价(图书评价
9、编号,图书编号,评论客户编号,评论客户名,评论时间、评论内容,审核标志)4.2 细化表结构 为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:(1)客户信息表tb_customerinfo列名说明数据类型约束CustomerId客户编号int主码(自增字段)CustomerName客户名称varchar(20)主码not nullCustomerPwd客户密码varchar(20)not nullCustomertruename真实姓名varchar(20)not nullCustomerSex性别varchar(2)no
10、t 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 图书类型信息表(3)图书信息表tb_bookinfo列名说明数据类型约束
11、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成交量intnot nullBookStoremount图书库存量
12、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总价moneynot nullispay是否付款varchar(10)n
13、ot 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 nullrecevername收货人姓名varchar(10)not nullreceve
14、raddr收货地址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(10)not null,默认为未发货,取“未发货”或“已发货”
15、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)not nullCommentdate评论时间datetimeno
16、t 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) references tb_booktypeinfo (BookTypeI
17、d) ()为图书评论表添加图书表的外键关联关系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 tb_customerinfo (CustomerId) (
18、)为订单表添加用户的外键关联关系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) references tb_order (OrderId) ()添加详细订单
19、表与书本指尖的外键关联关系 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_bookinfo (BookId) ()购物车与用户的外键关系 alter
20、 table tb_shopbook add constraint FK_TB_SHOPB_REFERENCE_TB_CUSTO foreign key (CustomerId) references tb_customerinfo (CustomerId) create table tb_reply ( ReplyId int not null, CustomerId int not null, ReplyType varchar(20) not null, Replytitle varchar(20) not null, Replycontent varchar(100) not null
21、, Customername varchar(20) not null, Commentdate datetime not null, CustomerIP varchar(10) not null, constraint PK_TB_REPLY primary key (ReplyId)5.2 添加数据(注意添加的先后次序)对于存在外键关联关系的表,注意添加数据的时候要先添加被关联的表的信息5.3 创建视图(需要经常进行的操作)1 定义一个视图查看根据客户的姓名查询其购物车的信息create view shopping_car asselect CustomerName,BookName,o
22、rdermount,price from tb_shopbook,tb_customerinfowhere tb_bookinfo.BookId = tb_shopbook.BookId and tb_shopbook.CustomerId = tb_customerinfo.CustomerId2 定义一个视图客户可以根据其姓名查询所买到的图书的详细信息create view book_infoasselect CustomerName,BookName,BookTypeId,BookPress,BookPubDate,BookAuthor,BookPrice,BookOutline fro
23、m tb_bookinfo ,tb_customerinfo where tb_customerinfo.CustomerId = tb_orderdetail.CustomerId andBookId = (select BookId from tb_orderdetail where Recevstatus=已收货) insert into tb_manager(AdminName,AdminPwd, AdminFlag) values (admin,admin,1)insert into tb_customerinfot (CustomerName, CustomerPwd, Custo
24、mertruename, CustomerSex, CustomerTel, CustomerEmail, CustomerAddr, CustomerRegTime, CustomerQues, CustomerAnswer, CustomerLogTime, CustomerLastLogT) values (toy,toy,李明,男,a,常熟理工,1,2010-12-22 11:00:11:111, 2010-12-22 11:00:11:111)insert into tb_booktypeinfo(BookTypeName) values (科技类)insert into tb_bo
25、okinfo values (, 1, php编程宝典 ,清华大学出版社, 2010-2-1, 16k,第二版,云峰,978-7-900-2131-8,56.00,100,合法哈客户卡的合法,发的发,发的发,57.00,56.50,12,34,0.87,C:/1.jpg,90,2010-1-1 1:1:1:111,精品包装)insert into tb_order values (, , 1 , 2010-12-22 12:00:11:111, 2, ,申通快递,建行,李明,常熟理工,180)insert into tb_orderdetail values (, 01, ,1, 2, ,云峰
26、,180)insert into tb_parameter values (风云网上书店, 热熔器额外人, 的发爱的 ,南京十字路口, , 080-21312,copyright ljfl, C:/logo.jpg,建行、工行,发的发放,合法哈客户卡的合法,发的发,发的发,7.00,8:00-12:00,f得法,发的说法,0.87,的法定)5.4 创建必要触发器(1)定义一个触发器,其基本功能是在tb_bookinfo表中修改库存数量时,检查数量是否小于0,如果是提示库存不足,库存为空。其具体代码如下所示:create trigger trig1 on tb_bookinfo for upda
27、te as if update(BookStoremount) begin declare mount int select mount=BookStoremount from inserted if(mount0) begin print 库存不足,库存为空 rollback end end(2)定义一个触发器,其基本功能是在填写订单和详细订单的时候相应的总价被计算处理填入相应的位置。其具体代码如下所示:create trigger trig2 on tb_orderdetail for insert,update as begin declare mount int,price money
28、,sigleprice money,totalprice money set mount=(select ordermount from inserted) set totalprice=(select totalprice from tb_order,inserted where tb_order.orderid=inserted.orderid) set price=(select bookprice from tb_bookinfo,inserted where tb_bookinfo.bookid=inserted.bookid) set sigleprice=mount*price
29、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) end create trigger trig2on tb_orderdetailfor insert,updateas begin declare mount int,pric
30、e money,sigleprice money,totalprice money set mount=(select ordermount from inserted) set totalprice=(select totalprice from tb_order,inserted where tb_order.orderid=inserted.orderid) set price=(select bookprice from tb_bookinfo,inserted where tb_bookinfo.bookid=inserted.bookid) set sigleprice=mount
31、*priceupdate tb_orderdetail set sigletotalprice=sigleprice where orderdetailid=(select orderdetailid from inserted )update tb_order set totalprice=(totalprice+sigleprice) where orderid=(select orderid from inserted)end go5.5 创建必要存储过程1) 建立存储过程customer_book,功能是客户在网站前台根据客户名称来查询买到的图书详细情况,其实现代码如下所示:creat
32、e procedure customer_book customername varchar(20), bookname varchar(20) out, price money out,ordermount int out, totalprice money out, as select bookname=tb_bookinfo.BookName,price=tb_bookinfo.BookPrice, ordermount=tb_orderdetail.Ordermount,totalprice=tb_orderdetail.totalprice, from tb_bookinfo,tb_
33、customerinfo,tb_orderdetail where tb_customerinfo.CustomerId =tb_order.CustomerId and tb_orderdetail.Recevstatus=已收货 and tb_bookinfo.BookId=tb_orderdetail.BookId and tb_customerinfo.CustomerId =customername (2)根据客户名查询所买商品的发货状态create procedure book_poststatecustomername varchar(20),asselect BookName,
34、ordermount,poststatus from tb_orderdetail,tb_bookinfowhere tb_orderdetail.OrderId = tb_order.OrderId and tb_order.CustomerId = tb_customerinfo.CustomerIdand tb_orderdetail.BookId = tb_bookinfo.BookIdcreate procedure admin_bookcustomername varchar(20),orderdate datetime out,bookname varchar(20) out,m
35、essage varchar(100) out,memo varchar(100) out,recevername varchar(10)out,receveraddr varchar(20) out,recevertel varchar(10) out,price money out,orsermount int out,sigletotalprice money out,totalprice money out,pstatus varchar(10) out,rstatus varchar(10) outas select orderdate=orderdate,bookname=book
36、name,message=message, memo=memo,recevername=recevername,receveraddr=receveraddr, recevertel=recevertel,price=bookprice,sigletotalprice=sigletotalprice, totalprice=totalprice,pstatus=poststatus,rstatus=recevstatus from tb_bookinfo,tb_customerinfo,tb_order,tb_orderdetail where tb_customerinfo.customerid=tb_order.customerid and tb_bookinfo.bookid=tb_orderdetail.bookid and tb_customerinfo.customername=customername六、总结 通过本次实验使我们对数据库有了一个更加全面,更加深入的了解,也可以说是对本学期所学的数据库知识的一个总结,这次实验不像以前一样,只是对数据库某一部分知识的练习巩固,不仅仅是设计几张表,设计几个存储过程,触发器,而是对这些知识的一个整合,是一次综合的练习,使我们对设计一个数据库的流程有了一个了解和掌握。专心-专注-专业