数据库设计网上购物系统初稿.docx

上传人:b****7 文档编号:9263695 上传时间:2023-02-03 格式:DOCX 页数:25 大小:328.80KB
下载 相关 举报
数据库设计网上购物系统初稿.docx_第1页
第1页 / 共25页
数据库设计网上购物系统初稿.docx_第2页
第2页 / 共25页
数据库设计网上购物系统初稿.docx_第3页
第3页 / 共25页
数据库设计网上购物系统初稿.docx_第4页
第4页 / 共25页
数据库设计网上购物系统初稿.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数据库设计网上购物系统初稿.docx

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

数据库设计网上购物系统初稿.docx

数据库设计网上购物系统初稿

 

数据库系统概论课程设计

——网上购物系统的数据库设计

 

2012/6/14

一、需求分析

1.1功能需求及数据需求分析

1.1.1用户管理

①用户:

只允许浏览商品信息,可以注册为普通用户

②会员:

拥有浏览商品和购买商品的权限,其属性包括客户号(唯一)、客户名、E-Mail、密码、姓名、性别、邮政编码、地址(一个客户可有几个地址)、客户所属VIP级别、折扣优惠。

1.1.2商品管理

①商品的增加。

其中的属性包含商品号(唯一)、商品分类、生产厂商、每个厂商的实际存货量、规定的最低存货量和商品其它描述

②商品的查询,在只要输入商品的任一属性即可

1.1.3商品订购管理

注册用户即会员注册后可以将相关商品放入购物车,最后购物结束之后形成生成订单,其中每个订单属性包含订单号、客户号、收货地址、订单日期、订单金额、订单明细(每个订单都有几个明细)内容为商品号、单价、订货数量。

1.1.4配送单管理

默认属性为客户注册时的基本信息,当然配送地址可由客户修改为合适的收货地址,支付方式也可根据提示由客户自定。

1.1.5评论管理

客户可以给商品发表评论,相关属性为评论号、客户号、商品号、客户邮箱、评论内容、评论时间。

1.2业务规则分析

1、所用用户都有权限浏览商品信息,但只有注册用户才能订购商品

2、每位注册用户的编号都是唯一的。

3、当普通客户总的订单金额达到10000元,即可升级为VIP客户。

VIP客户一般分为三个等级,对他们的优惠策略是在普通客户的价格上同时享有折扣优惠。

其中。

三级会员,订单金额在[10000,15000)元,享受折扣9折;二级会员,订单金额在[15000,25000)元,享受折扣8.5折;一级会员,订单金额在25000及以上,享受折扣7.5折。

4、每次商品的订单号都是唯一的。

5、客户可以在前台页面查看订单状态,订单状态可以是“0”或“1”,“1”表示订单上的商品已发出,“0”表示订单上的商品未发出。

订单的生成需用户确定之后才能生效。

1.3业务需求及处理流程

网上购物系统主要业务包括:

商品信息的发布与查询,商品的订购,处理订单,商品的配送。

系统处理流程:

系统流程图

二、概念结构设计

2.1各子系统的局部E-R如下:

图2.1.1:

客户实体

图2.1.2:

VIP客户

图2.1.3:

商品实体

图2.1.4:

生产厂商实体

图2.1.5:

商品分类

图2.1.6:

地址实体

图2.1.7:

订单明细

图2.1.8:

发票

图2.1.9:

供应关系

图2.1.10:

商品分类关系

图2.1.11:

客户评论关系

2.2视图的集成

三、逻辑结构设计

3.1E-R图向关系模型的转换

由于概念设计的结果是ER图,DBMS一般采用关系模型,因此数据库的逻辑设计过程就是把E-R图转化为关系模式的过程。

将该网上购物系统的总体概念结构E-R图转换为关系模型:

客户(客户号、密码、姓名、性别、单位、电子信箱、身份证号)

VIP会员表(会员等级、会员折扣)

商品(商品号、商品名称、类别号、商品描述、单位、规格、单价)

生产厂商表(厂商号,生产厂商名、地址、电话)

地址(地址号、地址名称)

订单(订单号、客户号、商品号、收货地址、订货日期、订货数量、单价、订单金额、发货日期、订单状态)

发票(发票号码、订单号)

供应(商品号、厂商号)

商品分类(商品类别号、类别名称)

客户类型(客户号、客户类型)

评论(评论号、客户号、商品号、客户邮箱、评论内容、评论时间)

客户地址表(客户号、客户地址)

3.2数据模型的优化

数据模数据模型的优化是为了提高数据库应用系统的性能,根据应用需要适当地修改、调整关系模式。

将转化的关系模式进行优化,最终达到第三范式。

由以上关系可看出,这个关系模型都已经达到第三范式,所以不需要进行优化。

型的优化

数据库的结构

1.创建客户表

字段信息:

客户号customerNo

密码password

姓名customerName

类型号typeNo

性别sex

单位company

电子信箱email

身份证号ID

VIP等级VIP

Createtablecustomer(

customerNochar(12)primanykey,

passwordvarchar(18)NotNull,

customerNamevarchar(12)NotNull,

typeNochar(8)NotNull,

sexchar

(1)Check(sexIn(‘M’,‘F’)

companyvarchar(20)NotNull,

emailvarchar(50)NotNull,

IDvarchar(18)NotNull,

VIPchar

(1)

2.创建VIP会员表

字段信息:

会员等级VIP

会员折扣discount

CreatetableVIP(

VIPchar

(1)primanykey,

DiscountfloatNotNull,

3.创建商品表

字段信息:

商品号productNo

商品名称productName

类别号typeNo

商品描述describe

单位uints

规格standard

单价price

Createtableproduct(

ProductNochar(12)primanykey,

ProductNamevarchar(18)NotNull,

typeNochar(12)NotNull,

describevarchar(50)NotNull,

unitsvarchar(20)NotNull,

standardchar(8)NotNull,

pricenumericNotNull,

4.创建生产厂商表

字段信息:

厂商号producerNo

厂商名producerName

地址address

电话telephone

Createtableproducer(

producerNochar(12)primanykey,

producerNamevarchar(18)NotNull,

addressvarchar(50)NotNull,

telephonevarchar(12)NotNull

5.创建商品类别表

字段信息:

类别号protypeNo

类别名称protypeName

Createtableprotype(

protypeNochar(12)primanykey,

protypeNamevarchar(18)NotNull

6.创建地址表

字段信息:

地址号addressNo

地址名称addressName

Createtableaddress(

addressNochar(12)primarykey,

addressvarchar(20)NotNull,

7.创建订单明细表

字段信息:

订单号orderNo

客户号customerNo

商品号productNo

收货地址address

订货日期orderdate

订货数量quantity

单价price

发票号码billNo

订单金额ordersum

发货日期Fhdate

订单状态orderstate

Createtableorder(

orderNochar(12)primanykey,

customerNochar(12)NotNull,

productNochar(12)NotNull,

addressvarchar(20)NotNull,

orderdatedatetimeNotNull,

quantitychar(4)NotNull,

pricenumericNotNull,

billNovarchar(12)primanykey,

FhdatedatetimeNotNull,

Orderstatechar(8)Check(orderstateIN(‘0’,‘1’)),

foreignkey(customerNo)referencescustomer(customerNo)

foreignkey(productNo)referencesproduct(productNo)

8.创建发票表

字段信息:

发票号码billNo

订单号orderNo

Createtablebill(

billNochar(12)primanykey,

orderNochar(12)NOTNULL)

foreignkey(orderNo)referencesproduct(orderNoNo)

9.创建供应表

字段信息:

商品号productNo

厂商号producerNo

Createtablesupport(

productNochar(12)primanykey,

producerNochar(12)primanykey,

foreignkey(producerNo)referencesproducer(producerNo),

foreignkey(productNo)referencesproduct(productNo)

10.创建客户类型表:

字段信息:

客户号customerNo

客户类型type

Createtabletype(

CustomerNochar(12)primanykey,

Typevarchar(18)NotNull

11.创建评论表

字段信息:

评论号reviewNo

客户号customerNo

商品号productNo

客户邮箱email

评论内容reviewContent

评论时间reviewdate

Createtablereview(

reviewNochar(12)primanykey,

customerNochar(12)NotNull,

produtNochar(12)NotNull,

emailvarchar(50)NotNull,

reviewContentvarchar(100)NotNull,

reviewdatedatetimeNotNull,

foreignkey(customerNo)referencescustomer(customerNo),

foreignkey(productNo)referencesproduct(productNo)

12.创建客户地址表

字段信息:

客户号customerNo

客户地址cusaddress

Createtablecusaddress(

customerNochar(12)primanykey,

cusaddressvarchar(100)NotNull

12创建客户消费情况表

字段信息客户号customerNo

消费金额money

createtablecost(

customerNovarchar2(20primarykey),

moneynumbernotnull)

这里我们保证了实体完整性,参照完整性和用户自定义完整性。

在各个基本表的定义中,我们使主码值均不为空,表orderitem中ORDER_ID取值为表myorder中的主码值,而且我们还进行了用户自定义的完整性约束,使表中某些值取值不为空。

四、数据库的实施

4.1数据库的载入

4.1.1创建数据库shoponline

create databaseshoponline

on

(Name=’shoponline’,

Filename=’f:

\SQL\shoponline.mdf’,

Size=2,

Maxsize=20,

Filegrowth=1)

Logon

(name=’shoponlinelog’,

Filename=’f;\SQL\shoponlinelog.ldf’,

Size=2,

Maxsize=5,

Filegrowth=1)

4.1.2表的建立与数据的载入

需要明确数据库需要建立几张表,以及每个表中所要包括的属性。

在建立表的过程中。

要对每个表进行字段属性的设置。

(创建表过程见三、数据库的逻辑设计)

4.1.3触发器的设计

在修改商品价格的时候,新的商品价格不能超过原来价格的2倍,否则修改不成功,依此设计一个触发器。

触发器设计如下:

/*创建触发器T1,实现注册客户VIP自动升级*/

CreateTriggerT1ONcustomer

Forupdate

As

IFUpdate(ordersum)

Begin

Declare@priceAsnumeric

Select@price=ordersumFrominserted

If@price>=30000

UpdatecustomersetVIP=’4’

Else

If@price>=20000

UpdatecustomersetVIP=’3’

Else

If@price>=10000

UpdatecustomersetVIP=’2’

Else

If@price>=0

UpdatecustomersetVIP=’1’

End

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

CreateTriggerT2onorder

Forinsert

As

IfNotExists

(select*Frominserted

WherecustomerNoin(selectcustomer.customerNofromcustomer))

Begin

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

’,16,1)

RollbackTransaction

End

/*创建一个触发器T3,统计订单金额*/

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

CreateTriggerupdatesaleitemOnorderForUpdateAs

IfUpdate(quantity)OrUpdate(price)

Begin

Declare@orderNoint,@productNochar(12)

Declarecur_orderCursorFor

SelectorderNo,productNoFromDeleted

Opencur_order

BeginTransaction

Fetchcur_orderinto@orderNo,@productNo

While(@@fetch_status=0)

Begin

Updateorder

Setordersum=ordersum-D.quantity*D.price+I.quantity*I.price

FrominsertedI,deletedD

Whereorder.orderNo=I.orderNoAndI.orderNo=D.orderNo

Andorder.orderNo=@orderNoAndI.productNo=D.productNo

AndI.productNo=@productNo

Fetchcur_orderinto@orderNo,@productNo

End

Committean

Closecur_order

Deallocatecur_order

End

4.2数据库的运行

 

附录:

源程序

IFNotexists(select*fromsysloginswherename=’u1’)

Execsp_addloginu1,u1

Go

IFNotexists(select*fromsysdatabaseswherename=’shoponline’)

Dropdatabaseshoponline

Go

create databaseshoponline

on

(Name=’shoponline’,

Filename=’f:

\SQL\shoponline.mdf’,

Size=2,

Maxsize=20,

Filegrowth=1)

Logon

(name=’shoponlinelog’,

Filename=’f;\SQL\shoponlinelog.ldf’,

Size=2,

Maxsize=5,

Filegrowth=1)

Useshoponline

Go

Execsp_addloginu1,u1

Go

Createtablecustomer(

customerNochar(12)primanykey,

passwordvarchar(18)NotNull,

customerNamevarchar(12)NotNull,

typeNochar(8)NotNull,

sexchar

(1)Check(sexIn(‘M’,‘F’)

companyvarchar(20)NotNull,

emailvarchar(50)NotNull,

IDvarchar(18)NotNull,

VIPchar

(1)

CreatetableVIP(

VIPchar

(1)primanykey,

DiscountfloatNotNull,

Createtableproduct(

ProductNochar(12)primanykey,

ProductNamevarchar(18)NotNull,

typeNochar(12)NotNull,

describevarchar(50)NotNull,

unitsvarchar(20)NotNull,

standardchar(8)NotNull,

pricenumericNotNull,

Createtableproducer(

producerNochar(12)primanykey,

producerNamevarchar(18)NotNull,

addressvarchar(50)NotNull,

telephonevarchar(12)NotNull

Createtableprotype(

protypeNochar(12)primanykey,

protypeNamevarchar(18)NotNull

Crestetableaddress(

addressNochar(12)primanykey,

addressvarchar(20)NotNull,

Createtableorder(

orderNochar(12)primanykey,

customerNochar(12)NotNull,

productNochar(12)NotNull,

addressvarchar(20)NotNull,

orderdatedatetimeNotNull,

quantitychar(4)NotNull,

pricenumericNotNull,

billNovarchar(12)primanykey,

FhdatedatetimeNotNull,

Orderstatechar(8)Check(orderstateIN(‘0’,‘1’)),

foreignkey(customerNo)referencescustomer(customerNo)

foreignkey(productNo)referencesproduct(productNo)

Createtablebill(

billNochar(12)primanykey,

orderNochar(12)primanykey,

foreignkey(orderNo)referencesproduct(orderNoNo)

Createtablesupport(

productNochar(12)primanykey,

producerNochar(12)primanykey,

foreignkey(producerNo)referencesproducer(producerNo),

foreignkey(productNo)referencesproduct(productNo)

Createtabletype(

CustomerNochar(12)primanykey,

Typevarchar(18)NotNull

Createtablereview(

reviewNochar(12)primanykey,

customerNochar(12)NotNull,

produtNochar(12)NotNull,

emai

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

当前位置:首页 > 自然科学 > 生物学

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

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