网上购物数据库设计.docx

上传人:b****6 文档编号:12756695 上传时间:2023-06-07 格式:DOCX 页数:19 大小:141.11KB
下载 相关 举报
网上购物数据库设计.docx_第1页
第1页 / 共19页
网上购物数据库设计.docx_第2页
第2页 / 共19页
网上购物数据库设计.docx_第3页
第3页 / 共19页
网上购物数据库设计.docx_第4页
第4页 / 共19页
网上购物数据库设计.docx_第5页
第5页 / 共19页
网上购物数据库设计.docx_第6页
第6页 / 共19页
网上购物数据库设计.docx_第7页
第7页 / 共19页
网上购物数据库设计.docx_第8页
第8页 / 共19页
网上购物数据库设计.docx_第9页
第9页 / 共19页
网上购物数据库设计.docx_第10页
第10页 / 共19页
网上购物数据库设计.docx_第11页
第11页 / 共19页
网上购物数据库设计.docx_第12页
第12页 / 共19页
网上购物数据库设计.docx_第13页
第13页 / 共19页
网上购物数据库设计.docx_第14页
第14页 / 共19页
网上购物数据库设计.docx_第15页
第15页 / 共19页
网上购物数据库设计.docx_第16页
第16页 / 共19页
网上购物数据库设计.docx_第17页
第17页 / 共19页
网上购物数据库设计.docx_第18页
第18页 / 共19页
网上购物数据库设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

网上购物数据库设计.docx

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

网上购物数据库设计.docx

网上购物数据库设计

一、概述

1.1需求背景

伴着电子时代的迅猛发展和人民物质生活的水平的提高,越来越多的电子购物浪潮也汹涌而来。

我们容身在这个信息化的大时代,网购也就成了许多人生活中必不可少的一部分,足不出户的便捷式购物与传统的购物方式大相径庭,人们在享受到方便、实惠的同时也不必担忧安全的问题,既方便了自身也推动着国家经济的发展。

电子商务网络购物平台,无疑是这个时代的进步。

1.2编写目的

数据库设计说明书是数据库设计的必要部分,对设计中的数据库的所有标识、逻辑结构和物理结构作出具体的设计规定。

本数据库的设计说明书编写的目的是对网上购物系统设计的说明,明确系统中的各项功能与非功能的需求,从而做出系统的数据流图以及实体联系图。

作为系统的基准文档,为以后的开发和维护提供依据。

1.3软件定义

Myeclipse10.0:

一个非常优秀的用于开发Java、J2EE的Eclipse插件集合,Myeclipse功能非常强大,支持也十分广泛,尤其对各种开源产品的支持也不错。

ApacheTomcat6.0:

是一个开放源代码、运行servlet和JSPWeb应用软件容器。

MicrosoftSQLServer2005:

StructuredQueryLanguage

1.4开发环境

本电子商务网络购物平台的开发环境是Windows7、Myeclipse10.0、ApacheTomcat6.0,数据库环境是MicrosoftSQLServer2005。

二、需求分析

2.1问题陈述

设计网络购物系统的数据库。

2.1需完成的功能

客户功能:

(1)游客可以查看商品信息,浏览网站信息,经过注册可以成为注册客户。

(2)注册客户:

注册、客户信息查看和修改。

客户登录、确认客户信息,显示客户信息。

商品信息浏览、购物车管理、商品查找、订单查询以及商品评论。

结账、确认订单、订单状态查询、历史订单查询。

商家功能:

商品的增删改。

订单处理、订单配送。

客户注册后,登录到电子商务网站,进入购物流程。

客户在浏览所有商品信息后,可以查看每个商品的详细信息,选择购买或加入购物车,购物车内可以随意增删商品,修改商品数量,并同时统计购物车内商品总额。

客户确认购物车内的商品,选中购买,即可生成订单。

可以查看订单状态,“0表示”商品未发出,“1”表示商品已发出。

客户分为普通客户和VIP客户,依据购买商品的金额和数量,自动升级。

不同的VIP等级享有不同的折扣。

2.1数据流图

网络购物系统总数据流图如下

图1:

网络购物系统总数据流图

2.1数据字典

客户表数据字典:

字段

中文描述

数据类型

是否为空

备注

UserID

客户ID

BigInt

Notnull

主键

UserName

客户名

Varchar(30)

Notnull

RealName

客户真实姓名

Varchar(30)

Notnull

UserPassword

客户密码

Varchar(30)

Notnull

Email

客户邮箱

Varchar(30)

Notnull

Phone

联系电话

Varchar(30)

Notnull

ID

身份证号

Varchar(30)

Notnull

Question

密码问题

Varchar(30)

Null

Result

答案

Varchar(30)

Null

RegTime

注册时间

Datetime

Notnull

GradeID

会员等级

BigInt

Notnull

AddressID

地址

Int

Notnull

表1:

客户表字段信息

商品表数据字典:

字段

中文描述

数据类型

是否为空

备注

GoodsID

商品号

BigInt

Notnull

主键

GName

商品名称

Varchar(30)

Notnull

GPrice

商品价格

Smallmoney

Notnull

GTypeID

商品类别

BigInt

Notnull

GIntro

商品描述

Varchar(200)

Null

GImage

商品图片路径

Varchar(100)

Null

GCount

商品计数

Int

Notnull

GSail

商品销量

BigInt

Notnull

GWeight

商品重量

BigInt

Null

GDateTime

上架日期

Datetime

Notnull

GSize

商品规格

Varchar(100)

Notnull

表2:

商品表字段信息

商品类别表数据字典:

字段

中文描述

数据类型

是否为空

备注

TypeID

商品类别号

BigInt

Notnull

主键

TypeName

类别描述

Varchar(50)

Notnull

表3:

商品类别表字段信息

商家表数据字典:

字段

中文描述

数据类型

是否为空

备注

ProducerID

商家号

BigInt

Notnull

主键

ProName

商家名

Varchar(30)

Notnull

ProAddress

商家地址

Varchar(50)

Notnull

ProPhone

商家电话

Varchar(30)

Notnull

表4:

商家表字段信息

订单表数据字典:

字段

中文描述

数据类型

是否为空

备注

SubID

订单号

Varchar(30)

Notnull

主键

UserID

客户号

BigInt

Notnull

GoodsID

商品号

BigInt

Notnull

RAddress

送货地址

Varchar(50)

Notnull

SpDate

订购日期

Datetime

Notnull

SpCount

订购数量

Int

Notnull

GPrice

单价

Smallmoney

Notnull

ReceiptID

发票号

BigInt

Notnull

SpPrice

订单金额

Money

Notnull

SendDate

发货时间

Datetime

Notnull

Payment

付款方式

Varchar(20)

Notnull

SendType

运送方式

Varchar(20)

Notnull

SendPrice

邮费

Smallmoney

Notnull

State

订单状态

Int

Notnull

表5:

订单表字段信息

购物车表数据字典:

字段

中文描述

数据类型

是否为空

备注

CarID

购物车ID

BigInt

Notnull

主键

UserID

客户ID

Varchar(10)

Notnull

GoodsID

商品ID

Varchar(20)

Notnull

OrderTime

订购时间

Datetime

Notnull

OrderCount

订购数量

Int

Notnull

GoodsPrice

单价

Smallmoney

Notnull

UserCheck

用户确认

Int

Notnull

OrderPrice

购物总额

Money

Notnull

表6:

购物车表字段信息

会员等级表数据字典:

字段

中文描述

数据类型

是否为空

备注

GradeID

会员等级ID

BigInt

Notnull

主键

GradeType

等级分类

Int

Notnull

表7:

会员等级表字段信息

评论表数据字典:

字段

中文描述

数据类型

是否为空

备注

CommentID

评论ID

BigInt

Notnull

主键

Content1

内容

Varchar(200)

Notnull

Title

标题

Varchar(20)

Notnull

UserID

客户ID

BigInt

Notnull

ProducerID

商家ID

BigInt

Notnull

CommentTime

评论时间

Datetime

Notnull

表8:

评论表字段信息

供应表数据字典:

字段

中文描述

数据类型

是否为空

备注

SupplyID

供应ID

BigInt

Notnull

主键

RealStock

实际存货

Int

Notnull

MinStock

最低存货

Int

Notnull

GoodsID

商品ID

BigInt

Notnull

ProducerID

商家ID

BigInt

Notnull

表9:

供应表字段信息

发票表数据字典:

字段

中文描述

数据类型

是否为空

备注

ReceiptID

发票ID

BigInt

Notnull

主键

SubID

订单号

BigInt

Notnull

表10:

发票表字段信息

地址表数据字典:

字段

中文描述

数据类型

是否为空

备注

AddressID

地址ID

Int

Notnull

主键

Address

地址

Varchar(50)

Notnull

UserID

客户ID

BigInt

Notnull

表11:

发票表字段信息

三、数据库概念结构设计

3.1E-R模型图的设计

(1)寻找实体集

客户VIP会员商品商家商品类别地址

(2)寻找实体间联系

客户与商品之间多对多联系:

订单,评论

1>客户与VIP会员之间多对一联系:

属于

2>会员等级与订单细节一对多:

参照1

3>订单细节与商品多对一:

参照2

4>订单细节预订单多对一:

组成

客户与商品之间一对多联系:

购物车

1>客户与购物车一对一:

拥有

2>购物车与商品一对多:

存放

3>购物车与订单细节一对多:

结算

商家与商品之间多对多联系:

供应

商品与商品类别之间多对一联系:

分类

客户与地址之间一对多联系:

所在

(3)确定实体的属性

客户:

客户ID客户名客户真实姓名客户密码客户邮箱联系电话

身份证号密码问题答案注册时间会员等级ID

VIP会员:

会员等级ID等级分类

商品:

商品号商品名称商品价格商品类别商品描述

商品图片路径商品计数商品销量商品重量上架日期商品规格

商家:

商家号商家名商家地址商家电话

地址:

地址号地址名称

商品类别:

商品类别号类别描述

(3)确定联系的属性

订单:

订单号客户号商品号送货地址订购日期订购数量单价

发票号订单金额发货时间付款方式运送方式邮费订单状态

购物车:

购物车ID客户ID商品ID订购时间订购数量单价

用户确认

供应:

供应ID实际存货最低存货商品ID商家ID

分类:

商品号商品分类

客户类型属于:

客户号客户类型

评论:

评论ID内容标题客户ID商家ID评论时间

客户地址所在:

客户号客户地址

(4)画出E-R图

图2:

客户与商品实体间的详细联系E-R图

图3:

网络购物系统E-R图

 

四、数据库逻辑结构设计

4.1E-R模型图转化为关系表

(1)实体转化为单独的一张表

客户VIP会员商品商家商品类别地址

(2)多对多联系转化为单独的一张关系表

购物车订单评论供应

(3)其他一对多的联系通过在多的一方增加属性来实现

客户表与会员等级:

在客户表中增加会员等级ID

商品与商品类型:

在商品中增加类型号

4.2描述基本表的关系

E-R图转化为关系模型,关系的码用下划线标出。

此为客户实体对应的关系模式:

客户(客户号,密码,会员等级号,…)

此为VIP会员实体对应的关系模式:

VIP会员(会员等级号,等级类型)

此为商品实体对应的关系模式:

商品(商品号,描述,商品分类,商品名,…)

此为商家实体对应的关系模式:

商家(商家号,商家名,商家电话,…)

此为商品类别实体对应的关系模式:

商品类别(商品类别号,商品类别)

此为联系“购物车”所对应的关系模式:

购物车(购物车号,客户号,商品号,…)

 

此为联系“订单”所对应的关系模式:

订单(订单号,客户号,商品号,…)

此为联系“评论”所对应的关系模式:

评论(评论号,内容,客户号,…)

此为联系“供应”所对应的关系模式:

供应(供应号,实际存货,最少存货,…)

4.3所有关系表达到BCNF范式

4.4定义视图

(1)订单表中只关联客户、商品的ID,而最终客户核对的应该是包含客户

真实姓名在内的客户必要信息以及包含商品名称的商品信息,分别建立两个

视图:

1>参照商品的订单细节

createviewView_goods

as

select*fromtb_goods

whereGoodsID='201201'

2>参照客户信息的订单细节

createviewView_user

as

select*fromtb_user

whereUserID='201'

4.5定义索引

在经常查询的列上(主键)建立聚簇索引

如:

在商品信息表上建立索引

createclusterindexIndex_GoodsID

on

tb_goods(GoodsID)

4.6定义触发器

(1)注册客户自动升级VIP

--创建触发器tr_grade,实现注册客户VIP自动升级

CreateTriggertr_gradeONtb_sub

Forupdate

As

IFUpdate(SpPrice)

Begin

Declare@pricemoney

Select@price=SpPriceFrominserted

If@price>=30000

Updatetb_usersetGradeID=4

Else

If@price>=20000

Updatetb_usersetGradeID=3

Else

If@price>=10000

Updatetb_usersetGradeID=2

Else

If@price>=0

Updatetb_usersetGradeID=1

End

(2)更新订单,订单金额是商品价格总和

--创建一个更新触发器,及时更新订单

CreateTriggertr_updateOntb_subForUpdateAs

IfUpdate(SpCount)OrUpdate(GPrice)

Begin

Declare@orderNoBigint,@productNoBigint

Declarecur_orderCursorFor

SelectSubID,GoodsIDFromDeleted

Opencur_order

BeginTransaction

Fetchcur_orderinto@orderNo,@productNo

While(@@fetch_status=0)

Begin

Updatetb_sub

Settb_sub.SpPrice=tb_sub.SpPrice-D.SpCount*D.GPrice+I.SpCount*I.GPrice

FrominsertedI,deletedD

Wheretb_sub.subID=I.subIDAndI.subID=D.subID

Andtb_sub.subID=@orderNoAndI.GoodsID=D.GoodsID

AndI.GoodsID=@productNo

Fetchcur_orderinto@orderNo,@productNo

End

Committran

Closecur_order

Deallocatecur_order

End

(3)更新购物车,选中商品更新商品总额

--更新购物车,选中商品更新商品总额

CreateTriggertr_carOntb_carForUpdateAs

IfUpdate(OrderCount)OrUpdate(GoodsPrice)

Begin

Declare@CarIDBigint,@GoodsIDBigint

Declarecur_carCursorFor

SelectCarID,GoodsIDFromDeleted

Opencur_car

BeginTransaction

Fetchcur_carinto@CarID,@GoodsID

While(@@fetch_status=0)

Begin

Updatetb_car

Settb_car.OrderPrice=tb_car.OrderPrice-D.OrderCount*D.GoodsPrice+I.OrderCount*I.GoodsPrice

FrominsertedI,deletedD

Wheretb_car.CarID=I.CarIDAndI.CarID=D.CarID

Andtb_car.CarID=@CarIDAndI.GoodsID=D.GoodsID

AndI.GoodsID=@GoodsID

Fetchcur_carinto@CarID,@GoodsID

End

Committran

Closecur_car

Deallocatecur_car

End

(4)创建触发器只允许注册会员在网上下订单

--创建一个触发器tr_sub,只允许注册会员在网上提交订单

CreateTriggertr_subontb_sub

Forinsert

As

IfNotExists

(select*Frominserted

WhereUserIDin(selecttb_user.UserIDfromtb_user))

Begin

Raiserror('提交订单前请先注册!

',16,1)

RollbackTransaction

End

4.7定义约束

(1)确定实体完整性约束

主键约束

(2)参照完整性约束

--为tb_user表添加参照性约束

altertabletb_user

withnocheck

addconstraintfk_userforeignkey(GradeID)

referencestb_grade(GradeID)

--为tb_goods表添加参照性约束

altertabletb_goods

withnocheck

addconstraintfk_goodsforeignkey(GTypeID)

referencestb_type(TypeID)

--为tb_address增加外键约束

altertabletb_address

withnocheck

addconstraintfk_addressforeignkey(UserID)

referencestb_user(UserID)

(3)用户自定义完整性约束

1>客户表密码不能少于6位,且不能与客户号相同

Altertabletb_user

AddconstraintCk_pass

Check(6<=len(Userpassword)andUserpassword<>UserID)

2>电子信箱格式为***********格式

Altertabletb_user

AddconstraintCk_email

Check(Emaillike'%@qq.%')

3>订单号共12位,前8位是订货日期,后4位是流水号,格式为“201312

150001”

3>订货时间早于发货时间

altertabletb_sub

withnocheck

addconstraintck_subcheck(SpDate

5>发票号码唯一

altertabletb_receipt

addconstraintun_receiptunique(ReceiptID)

6>订单状态取值为“0”或“1”

altertabletb_sub

withnocheck

addconstraintck_statecheck(Statein(0,1))

7>身份证号必须为16或者18位

Altertabletb_user

AddconstraintCk_id

Check(IDin(16,18))

8>……

五、结束语

一个软件最重要的不是前台页面,而是软件的生存期,即实用性的长远,而后者则主要取决于后台的维护。

维护离不开对数据库的操作,所以数据库设计在软件开发过程中是基础也是非常重要的一个环节。

对于开发者而言,好的数据库设计,可以避免功能需求的重大缺陷,如:

访问数据库,查询的冗杂繁琐。

数据库更新操作的错误异常等。

通过这次设计,更让我深刻感受到,打好基础的重要性,当然也对数据库的了解加深一步。

尽管整个数据库设计做下来,非常的艰辛,但从中学到的知识远比辛苦更加珍贵。

本次的设计也有很多不足之处,数据表之间的关联,关系表的范式,以及一些有待解决的问题也随之而来。

供应关系中,购买数大于世纪存货梁,应通知商家及时补货,这个流程还没有完善,等等。

我会带着这些问题,在以后的设计中注意改善。

六、参考文献

[1]王珊,萨师煊.数据库系统概论[M].北京:

高等教育出版社,2006.5

 

THANKS

 

致力为企业和个人提供合同协议,策划案计划书,学习课件等等

打造全网一站式需求

欢迎您的下载,资料仅供参考

 

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2