实验数据库设计.docx

上传人:b****8 文档编号:10773622 上传时间:2023-02-22 格式:DOCX 页数:17 大小:149.81KB
下载 相关 举报
实验数据库设计.docx_第1页
第1页 / 共17页
实验数据库设计.docx_第2页
第2页 / 共17页
实验数据库设计.docx_第3页
第3页 / 共17页
实验数据库设计.docx_第4页
第4页 / 共17页
实验数据库设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验数据库设计.docx

《实验数据库设计.docx》由会员分享,可在线阅读,更多相关《实验数据库设计.docx(17页珍藏版)》请在冰豆网上搜索。

实验数据库设计.docx

实验数据库设计

Documentnumber【SA80SAB-SAA9SYT-SAATC-SA6UT-SA18】

 

实验数据库设计

实验7数据库设计(6学时)

⒈实验目的与要求

了解数据库设计的重要性和数据库设计在信息系统开发和建设中的核心地位。

掌握数据库设计方法和步骤。

⒉实验任务

在某个RDBMS产品上,选择合适的应用系统开发工具为某个部门或单位开发一个数据库应用系统。

通过实践,掌握本章介绍的数据库设计方法,同时培养团队合作精神。

要求5~6位同学组成一个开发小组,每位同学承担不同角色(例如:

项目管理员、DBA、系统分析员、系统设计员、系统开发员、系统测试员)。

具体要求:

给出数据库设计各个阶段的详细设计报告;写出系统的主要功能和使用说明;提交运行的系统;写出收获和体会,包括已解决和尚未解决的问题,进一步完善的设想与建议;每个小组进行20分钟的报告和答辩,讲解设计方案,演示系统运行,汇报分工与合作情况。

网上书店数据库设计

一、设计意义

伴随着信息化的发展,计算机走进了千家万户,人们的交流变得方便,方便了网民的生活!

此外,伴随着卓越、当当、淘宝等网络购物平台的兴起,网络购物也被网民认可,首先,网上书店方便了网民的生活,更加便捷地、足不出户便可买到心仪的书籍;其次,网上购书减少了许多中间销售代理,因此价格会比较低,对广大网民的好处是非常明显的;再者,网上书店是信息化购物,基本上所有操作都是通过计算机程序自动完成的,因此大大降低了劳力的消耗;最后,电子商务与出版发行业的结合使发展网上书店及研究网上书店具有双重意义,充分结合互联网销售的特点探索图书发行的新渠道和新模式,是对电子商务科学的充实和补充,更是对出版发行业发行渠道和市场的开拓和创新。

数据库对于一个系统的意义是相当重要的,它关系到整个项目的整体流程,整个网站的后期维护便捷与否,从长远利益来看,数据库的设计是至关重要的。

二、需求分析

系统功能分析

本实验将设计出一个网上书店数据库,其要求简要如下:

(1)系统用户由两类组成:

管理员和客户。

(2)管理员负责后台管理:

①图书信息的维护(增、删、改),图书要进行分类管理;

②客户信息的维护;

③订单的确认和删除。

(3)读者可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理的情况。

数据需求

系统共有七个实体:

客户、管理员、图书类型、图书、订单、详细订单、图书评价。

(1)会员的属性:

自动编号CustomerId、客户名、客户密码、真实姓名、性别、客户电话、E-mail、地址、注册时间

(2)管理员的属性:

自动编号AdminId、管理员名称、管理员邮箱、密码

(3)图书类型的属性:

自动编号BookTypeId、类别名称

(4)图书的属性:

自动编号BookId、图书名称、图书类型、出版社、出版日期、图书作者、图书定价、图书简介、图书库存量、图书成交量

(5)订单的属性:

自动编号OrderId、客户编号、下单日期、总订购数量、送货方式、支付方式、收货人姓名、收货地址、收货人联系方式、总卖出价

(6)详细订单属性:

自动编号Id、详细订单OrderDetailId、订单号OrderId、图书编号、订购数量、发货状态、收货状态、卖出总价

(7)图书评价的属性:

自动编号CommentId、图书编号、评论客户编号、评论客户名、评论时间、评论内容、审核标志

详细订单是针对每个商品进行下单,通过详细订单不仅可以产看商品信息而且可以看出每个商品的收发货状态,订单包括多个详细订单

此外,由以往的购物经验可知,一般买书的时候都会有一个临时购物车,客户可以把自己想买的书本放入购物车,但是购物车中的商品只是放入了购物车还没有下单

(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图

四、逻辑结构

逻辑转换

根据节中的E-R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为8个关系,详细信息如下所示:

客户(会员)(客户编号,客户名,客户密码,真实姓名,性别,客户电话,E-mail,地址,注册时间)

管理员(管理员编号,管理员名称,管理员邮箱,密码)

图书类型(图书类型编号,类别名称)

图书(图书编号,图书名称,图书类型,出版社,出版日期,图书作者,图书定价,图书简介,图书库存量,图书成交量)

购物车零时订购信息(客户编号,图书编号,订购数量,总价,是否付款)

订单(订单号,客户编号,下单日期,总订购数量,送货方式,支付方式,收货人姓名,收货地址,收货人联系方式,总卖出价)

详细订单(详细订单编号,订单号,图书编号,订购数量,发货状态,收货状态,卖出总价)

图书评价(图书评价编号,图书编号,评论客户编号,评论客户名,评论时间、评论内容,审核标志)

细化表结构

为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:

(1)客户信息表tb_customerinfo

列名

说明

数据类型

约束

CustomerId

客户编号

int

主码(自增字段)

CustomerName

客户名称

varchar(20)

主码notnull

CustomerPwd

客户密码

varchar(20)

notnull

Customertruename

真实姓名

varchar(20)

notnull

CustomerSex

性别

varchar

(2)

notnull,取“男”或“女”

CustomerTel

客户电话

varchar(20)

notnull

CustomerEmail

E-mail

varchar(20)

notnull

CustomerAddr

地址

varchar(20)

notnull

CustomerRegTime

注册时间

datetime

notnull

表1客户信息表

 

(2)图书类型信息表tb_booktypeinfo

列名

说明

数据类型

约束

BookTypeId

图书类型编号

int

主码(自增字段)

BookTypeName

类别名称

varchar(50)

notnull

表2图书类型信息表

(3)图书信息表tb_bookinfo

列名

说明

数据类型

约束

BookId

图书编号

int

主码(自增字段)

BookTypeId

图书类型

int

notnull,引用tb_booktypeinfo的外码

BookName

图书名

varchar(20)

notnull

BookPress

出版社

varchar(20)

notnull

BookPubDate

出版日期

datetime

notnull

BookAuthor

图书作者

varchar(10)

notnull

BookPrice

图书定价

money

notnull

BookOutline

图书简介

varchar(200)

notnull

BookDealmount

成交量

int

notnull

BookStoremount

图书库存量

int

notnull

表3图书信息表

(4)管理员信息表tb_manager

列名

说明

数据类型

约束

AdminId

管理员编号

int

主码(自增字段)

AdminName

管理员名称

varchar(10)

notnull

AdminPwd

密码

varchar(20)

notnull

表4管理员信息表

 

(5)购物车临时订购信息tb_shopbook

列名

说明

数据类型

约束

CustomerId

客户编号

int

主码(自增字段)

BookId

图书编号

int

主码,引用tb_bookinfo的外码

ordermount

订购数量

int

notnull

price

总价

money

notnull

ispay

是否付款

varchar(10)

notnull,默认为未付款,取“未付款”或“已付款”

表5购物车临时订购信息表

(6)订单信息表tb_order

列名

说明

数据类型

约束

OrderId

订单编号

varchar(20)

主码

CustomerId

客户编号

int

notnull,引用tb_customerinfo的外码

Orderdate

下单日期

datetime

notnull

Ordermount

总订购数量

int

notnull

postmethod

送货方式

varchar(100)

notnull

paymethod

支付方式

varchar(100)

notnull

recevername

收货人姓名

varchar(10)

notnull

receveraddr

收货地址

varchar(20)

notnull

recevertel

收货人电话号码

varchar(10)

notnull

totalprice

总卖出价

money

notnull

表6订单信息表

 

(7)订单详细信息表tb_orderdetail

列名

说明

数据类型

约束

OrderDetailId

详细订单编号

int

主码

OrderId

订单号

varchar(20)

notnull,引用tb_order的外码

BookId

图书编号

int

notnull

ordermount

订购数量

int

notnull

poststatus

发货状态

varchar(10)

notnull,默认为未发货,取“未发货”或“已发货”

Recevstatus

收货状态

varchar(10)

notnull,默认为未收货,取“未收货”或“已收货”

sigletotalprice

卖出总价

money

notnull

表7订单详细信息表

(8)图书评价信息表tb_comment

列名

说明

数据类型

约束

CommentId

图书评价编号

int

主码(自增字段)

BookId

图书编号

int

notnull,引用tb_bookinfo的外码

CustomerId

评论客户编号

int

notnull,引用tb_customerinfo的外码

Customername

评论客户名

varchar(20)

notnull

Commentdate

评论时间

datetime

notnull

Commentcontent

评论内容

varchar(100)

notnull

Commentflag

审核标志

varchar(10)

notnull

表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)

()为图书评论表添加客户表的外键关联关系

altertabletb_comment

addconstraintFK_TB_COMME_REFERENCE_TB_CUSTOforeignkey(CustomerId)

referencestb_customerinfo(CustomerId)

()为订单表添加用户的外键关联关系

altertabletb_order

addconstraintFK_TB_ORDER_REFERENCE_TB_CUSTOforeignkey(CustomerId)

referencestb_customerinfo(CustomerId)

()为详细订单表添加订单的外键关联关系

altertabletb_orderdetail

addconstraintFK_TB_ORDER_REFERENCE_TB_ORDERforeignkey(OrderId)

referencestb_order(OrderId)

()添加详细订单表与书本指尖的外键关联关系

altertabletb_orderdetail

addconstraintFK_TB_ORDER_REFERENCE_TB_BOOKIforeignkey(BookId)

referencestb_bookinfo(BookId)

()购物车与书本制作间的外键关联关系

altertabletb_shopbook

addconstraintFK_TB_SHOPB_REFERENCE_TB_BOOKIforeignkey(BookId)

referencestb_bookinfo(BookId)

()购物车与用户的外键关系

altertabletb_shopbook

addconstraintFK_TB_SHOPB_REFERENCE_TB_CUSTOforeignkey(CustomerId)referencestb_customerinfo(CustomerId)

 

5.2添加数据(注意添加的先后次序)

对于存在外键关联关系的表,注意添加数据的时候要先添加被关联的表的信息

创建视图(需要经常进行的操作)

1定义一个视图查看根据客户的姓名查询其购物车的信息

createviewshopping_car

as

selectCustomerName,BookName,ordermount,pricefromtb_shopbook,tb_customerinfo

where=and

=

2定义一个视图客户可以根据其姓名查询所买到的图书的详细信息

createviewbook_info

as

selectCustomerName,BookName,BookTypeId,BookPress,BookPubDate,BookAuthor,BookPrice,BookOutlinefromtb_bookinfo,tb_customerinfo

where=and

BookId=(selectBookIdfromtb_orderdetailwhereRecevstatus='已收货')

 

创建必要触发器

(1)定义一个触发器,其基本功能是在tb_bookinfo表中修改库存数量时,检查数量是否小于0,如果是提示库存不足,库存为空。

其具体代码如下所示:

createtriggertrig1

ontb_bookinfo

forupdate

as

ifupdate(BookStoremount)

begin

declare@mountint

select@mount=BookStoremountfrominserted

if(@mount<0)

begin

print'库存不足,库存为空'

rollback

end

end

(2)定义一个触发器,其基本功能是在填写订单和详细订单的时候相应的总价被计算处理填入相应的位置。

其具体代码如下所示:

createtriggertrig2

ontb_orderdetail

forinsert,update

as

begin

declare@mountint,@pricemoney,@siglepricemoney,@totalpricemoney

set@mount=(selectordermountfrominserted)

set@totalprice=(selecttotalpricefromtb_order,insertedwhere=

set@price=(selectbookpricefromtb_bookinfo,insertedwhere=

set@sigleprice=@mount*@price

updatetb_orderdetailsetsigletotalprice=@siglepricewhereorderdetailid=(selectorderdetailidfrominserted)

updatetb_ordersettotalprice=(@totalprice+@sigleprice)whereorderid=(selectorderidfrominserted)

end

 

创建必要存储过程

1)建立存储过程customer_book,功能是客户在网站前台根据客户名称来查询买到的图书详细情况,其实现代码如下所示:

createprocedurecustomer_book

@customernamevarchar(20),

@booknamevarchar(20)out,

@pricemoneyout,

@ordermountintout,

@totalpricemoneyout,

as

select

@bookname=,@price=,

@ordermount=,@totalprice=,

fromtb_bookinfo,tb_customerinfo,tb_orderdetail

where=

and='已收货'

and=

and=@customername

(2)根据客户名查询所买商品的发货状态

createprocedurebook_poststate

@customernamevarchar(20),

as

selectBookName,ordermount,poststatusfromtb_orderdetail,tb_bookinfo

where=and=

and=

 

六、总结

通过本次实验使我们对数据库有了一个更加全面,更加深入的了解,也可以说是对本学期所学的数据库知识的一个总结,这次实验不像以前一样,只是对数据库某一部分知识的练习巩固,不仅仅是设计几张表,设计几个存储过程,触发器,而是对这些知识的一个整合,是一次综合的练习,使我们对设计一个数据库的流程有了一个了解和掌握。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1