实验7数据库设计Word文档格式.docx
《实验7数据库设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验7数据库设计Word文档格式.docx(20页珍藏版)》请在冰点文库上搜索。
②客户信息的维护;
③订单的确认和删除。
(3)读者可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理的情况。
2.2数据需求
系统共有七个实体:
客户、管理员、图书类型、图书、订单、详细订单、图书评价。
(1)会员的属性:
自动编号CustomerId、客户名、客户密码、真实姓名、性别、客户电话、E-mail、地址、注册时间
(2)管理员的属性:
自动编号AdminId、管理员名称、管理员邮箱、密码
(3)图书类型的属性:
自动编号BookTypeId、类别名称
(4)图书的属性:
自动编号BookId、图书名称、图书类型、出版社、出版日期、图书作者、图书定价、图书简介、图书库存量、图书成交量
(5)订单的属性:
自动编号OrderId、客户编号、下单日期、总订购数量、送货方式、支付方式、收货人姓名、收货地址、收货人联系方式、总卖出价
(6)详细订单属性:
自动编号Id、详细订单OrderDetailId、订单号OrderId、图书编号、订购数量、发货状态、收货状态、卖出总价
(7)图书评价的属性:
自动编号CommentId、图书编号、评论客户编号、评论客户名、评论时间、评论内容、审核标志
详细订单是针对每个商品进行下单,通过详细订单不仅可以产看商品信息而且可以看出每个商品的收发货状态,订单包括多个详细订单
此外,由以往的购物经验可知,一般买书的时候都会有一个临时购物车,客户可以把自己想买的书本放入购物车,但是购物车中的商品只是放入了购物车还没有下单
(8)临时购物车:
客户编号、图书编号、订购数量、总价,是否付款
实体间的联系:
通过以上分析可知,实体之间的联系有:
客户与客户评论之间是一对多关系(1:
n)
书籍类别与书籍之间是一对多关系(1:
用户与订单之间是一对多关系(1:
订单与详细订单之间是一对多关系(1:
客户与订单之间是一对多关系(1:
三、E-R图
3.1实体图
图3-1图书类别信息
图3-2管理员信息
图3-3图书信息
图3-4客户信息
图3-5购物车临时订购信息
图3-6订单信息
图3-7订单详细信息
图3-8图书评论信息
3.2实体关系E-R图
图3-9网上书店顶层E-R图
四、
逻辑结构
4.1
逻辑转换
根据3.2节中的E-R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为8个关系,详细信息如下所示:
客户(会员)(客户编号,客户名,客户密码,真实姓名,性别,客户电话,E-mail,地址,注册时间)
管理员(管理员编号,管理员名称,管理员邮箱,密码)
图书类型(图书类型编号,类别名称)
图书(图书编号,图书名称,图书类型,出版社,出版日期,图书作者,图书定价,图书简介,图书库存量,图书成交量)
购物车零时订购信息(客户编号,图书编号,订购数量,总价,是否付款)
订单(订单号,客户编号,下单日期,总订购数量,送货方式,支付方式,收货人姓名,收货地址,收货人联系方式,总卖出价)
详细订单(详细订单编号,订单号,图书编号,订购数量,发货状态,收货状态,卖出总价)
图书评价(图书评价编号,图书编号,评论客户编号,评论客户名,评论时间、评论内容,审核标志)
4.2
细化表结构
为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:
(1)
客户信息表tb_customerinfo
列名
说明
数据类型
约束
CustomerId
客户编号
int
主码(自增字段)
CustomerName
客户名称
varchar(20)
主码notnull
CustomerPwd
客户密码
notnull
Customertruename
真实姓名
CustomerSex
性别
varchar
(2)
notnull,取“男”或“女”
CustomerTel
客户电话
CustomerEmail
E-mail
CustomerAddr
地址
CustomerRegTime
注册时间
datetime
表1客户信息表
(2)
图书类型信息表tb_booktypeinfo
BookTypeId
图书类型编号
BookTypeName
类别名称
varchar(50)
表2图书类型信息表
(3)
图书信息表tb_bookinfo
BookId
图书编号
图书类型
notnull,引用tb_booktypeinfo的外码
BookName
图书名
BookPress
出版社
BookPubDate
出版日期
BookAuthor
图书作者
varchar(10)
BookPrice
图书定价
money
BookOutline
图书简介
varchar(200)
BookDealmount
成交量
BookStoremount
图书库存量
表3图书信息表
(4)
管理员信息表tb_manager
AdminId
管理员编号
AdminName
管理员名称
notnull
AdminPwd
密码
表4管理员信息表
(5)
购物车临时订购信息tb_shopbook
主码,引用tb_bookinfo的外码
ordermount
订购数量
price
总价
ispay
是否付款
notnull,默认为未付款,取“未付款”或“已付款”
表5购物车临时订购信息表
(6)
订单信息表tb_order
OrderId
订单编号
主码
notnull,引用tb_customerinfo的外码
Orderdate
下单日期
Ordermount
总订购数量
postmethod
送货方式
varchar(100)
paymethod
支付方式
recevername
收货人姓名
receveraddr
收货地址
recevertel
收货人电话号码
totalprice
总卖出价
表6订单信息表
(7)
订单详细信息表tb_orderdetail
OrderDetailId
详细订单编号
订单号
notnull,引用tb_order的外码
poststatus
发货状态
notnull,默认为未发货,取“未发货”或“已发货”
Recevstatus
收货状态
notnull,默认为未收货,取“未收货”或“已收货”
sigletotalprice
卖出总价
表7订单详细信息表
(8)
图书评价信息表tb_comment
CommentId
图书评价编号
notnull,引用tb_bookinfo的外码
评论客户编号
Customername
评论客户名
Commentdate
评论时间
Commentcontent
评论内容
Commentflag
审核标志
表8图书评价信息表
五、
数据库实施
本章节主要包含创建表、添加数据和创建必要的触发器、存储过程等内容。
5.1创建约束条件
外键关联关系:
(1)为图书信息表添加图书分类表的外键关联关系
altertabletb_bookinfo
addconstraintFK_TB_BOOKI_REFERENCE_TB_BOOKTforeignkey(BookTypeId)referencestb_booktypeinfo(BookTypeId)
()为图书评论表添加图书表的外键关联关系
altertabletb_comment
addconstraintFK_TB_COMME_REFERENCE_TB_BOOKIforeignkey(BookId)
referencestb_bookinfo(BookId)
()为图书评论表添加客户表的外键关联关系
addconstraintFK_TB_COMME_REFERENCE_TB_CUSTOforeignkey(CustomerId)
referencestb_customerinfo(CustomerId)
()为订单表添加用户的外键关联关系
altertabletb_order
addconstraintFK_TB_ORDER_REFERENCE_TB_CUSTOforeignkey(CustomerId)
()为详细订单表添加订单的外键关联关系
altertabletb_orderdetail
addconstraintFK_TB_ORDER_REFERENCE_TB_ORDERforeignkey(OrderId)
referencestb_order(OrderId)
()添加详细订单表与书本指尖的外键关联关系
addconstraintFK_TB_ORDER_REFERENCE_TB_BOOKIforeignkey(BookId)
()购物车与书本制作间的外键关联关系
altertabletb_shopbook
addconstraintFK_TB_SHOPB_REFERENCE_TB_BOOKIforeignkey(BookId)
()购物车与用户的外键关系
addconstraintFK_TB_SHOPB_REFERENCE_TB_CUSTOforeignkey(CustomerId)referencestb_customerinfo(CustomerId)
createtabletb_reply(
ReplyIdintnotnull,
CustomerIdintnotnull,
ReplyTypevarchar(20)notnull,
Replytitlevarchar(20)notnull,
Replycontentvarchar(100)notnull,
Customernamevarchar(20)notnull,
Commentdatedatetimenotnull,
CustomerIPvarchar(10)notnull,
constraintPK_TB_REPLYprimarykey(ReplyId)
)
5.2添加数据(注意添加的先后次序)
对于存在外键关联关系的表,注意添加数据的时候要先添加被关联的表的信息
5.3创建视图(需要经常进行的操作)
1定义一个视图查看根据客户的姓名查询其购物车的信息
createviewshopping_car
as
selectCustomerName,BookName,ordermount,pricefromtb_shopbook,tb_customerinfo
wheretb_bookinfo.BookId=tb_shopbook.BookIdand
tb_shopbook.CustomerId=tb_customerinfo.CustomerId
2定义一个视图客户可以根据其姓名查询所买到的图书的详细信息
createviewbook_info
selectCustomerName,BookName,BookTypeId,BookPress,BookPubDate,BookAuthor,BookPrice,BookOutlinefromtb_bookinfo,tb_customerinfo
wheretb_customerinfo.CustomerId=tb_orderdetail.CustomerIdand
BookId=(selectBookIdfromtb_orderdetailwhereRecevstatus='
已收货'
)insertintotb_manager(AdminName,AdminPwd,AdminFlag)values(’admin’,’admin’,1)
insertintotb_customerinfot(CustomerName,CustomerPwd,Customertruename,CustomerSex,CustomerTel,CustomerEmail,CustomerAddr,CustomerRegTime,CustomerQues,CustomerAnswer,CustomerLogTime,CustomerLastLogT)values(‘toy’,’toy’,’李明’,’男’,’1231628368’,’a122390@’,’常熟理工’,’1’,’’,’’,’2010-12-2211:
00:
11:
111’,’2010-12-2211:
111’)
insertintotb_booktypeinfo(BookTypeName)values(’科技类’)
insertintotb_bookinfovalues(‘’,’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-11:
1:
111’,’精品包装’)
insertintotb_ordervalues(‘’,’20101202001’,’1’,’2010-12-2212:
111’,’2’,’’,’申通快递’,’建行’,’’,’李明’,’常熟理工’,’12313212323’,’’,’180’)
insertintotb_orderdetailvalues(‘’,’2010120200101’,’20101202001’,’1’,’2’,’’,’’,’云峰’,’’,’180’)
insertintotb_parametervalues(‘风云网上书店’,’热熔器额外人’,’的发爱的’,’南京十字路口’,’331231’,’080-21312’,’@copyrightljfl’,C:
//logo.jpg’,’’,’建行、工行’,’发的发放’,’合法哈客户卡的合法’,’发的发’,’发的发’,’7.00’,’8:
00-12:
00’,’f得法’,’发的说法’,’0.87’,’的法定’)
5.4
创建必要触发器
定义一个触发器,其基本功能是在tb_bookinfo表中修改库存数量时,检查数量是否小于0,如果是提示库存不足,库存为空。
其具体代码如下所示:
createtriggertrig1
ontb_bookinfo
forupdate
as
ifupdate(BookStoremount)
begin
declare@mountint
select@mount=BookStoremountfrominserted
if(@mount<
0)
begin
print'
库存不足,库存为空'
rollback
end
end
定义一个触发器,其基本功能是在填写订单和详细订单的时候相应的总价被计算处理填入相应的位置。
createtriggertrig2
ontb_orderdetail
forinsert,update
declare@mountint,@pricemoney,@siglepricemoney,@totalpricemoney
set@mount=(selectordermountfrominserted)
set@totalprice=(selecttotalpricefromtb_order,insertedwheretb_order.orderid=inserted.orderid)
set@price=(selectbookpricefromtb_bookinfo,insertedwheretb_bookinfo.bookid=inserted.bookid)
set@sigleprice=@mount*@price
updatetb_orderdetailsetsigletotalprice=@siglepricewhereorderdetailid=(selectorderdetailidfrominserted)
updatetb_ordersettotalprice=(@totalprice+@sigleprice)whereorderid=(selectorderidfrominserted)
createtriggertrig2
ontb_orderdetail
forinsert,update
begin
declare@mountint,@pricemoney,@siglepricemoney,@totalpricemoney
set@mount=(selectordermountfrominserted)
set@totalprice=(selecttotalpricefromtb_order,insertedwheretb_order.orderid=inserted.orderid)
set@price=(selectbookpricefromtb_bookinfo,insertedwheretb_book