网上购物系统的数据库设计资料Word文档下载推荐.docx
- 文档编号:7853225
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:20
- 大小:190.67KB
网上购物系统的数据库设计资料Word文档下载推荐.docx
《网上购物系统的数据库设计资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网上购物系统的数据库设计资料Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。
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视图的集成
方式视图的集成通俗的理解就是把各个子E-R图集成合并。
视图集成可以有两种:
1)多个分E-R图一次集成;
2)逐步集成,用累加的方式一次集成两个分E-R图。
第一种方法比较复杂,做起来难度较大;
第二种方法每次只集成两个分E-R图,可以降低复杂度。
无论采用哪种方式,每次集成局部E-R图时都需要分两步走:
1)合并。
解决各分E-R图合并起来生成初步E-R图;
2)修改和重构。
消除不必要的冗余,生成基本E-R图。
冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,应当予以消除。
消除了冗余后的初步E-R图称为基本E-R图。
消除冗余主要采用的方法有:
1)用分析方法消除冗余;
2)用规范化理论消除冗余。
对该网上购物系统各子E-R图的集成——即该网上购物系统的总体概念结构E-R图如下图所示:
三、逻辑结构设计
3.1E-R图向关系模型的转换
由于概念设计的结果是ER图,DBMS一般采用关系模型,因此数据库的逻辑设计过程就是把E-R图转化为关系模式的过程。
将该网上购物系统的总体概念结构E-R图转换为关系模型:
客户(客户号、密码、姓名、性别、单位、电子信箱、身份证号)
VIP会员表(会员等级、会员折扣)
商品(商品号、商品名称、类别号、商品描述、单位、规格、单价)
生产厂商表(厂商号,生产厂商名、地址、电话)
地址(地址号、地址名称)
订单(订单号、客户号、商品号、收货地址、订货日期、订货数量、单价、订单金额、发货日期、订单状态)
发票(发票号码、订单号)
供应(商品号、厂商号)
商品分类(商品类别号、类别名称)
客户类型(客户号、客户类型)
评论(评论号、客户号、商品号、客户邮箱、评论内容、评论时间)
客户地址表(客户号、客户地址)
3.1.2视图的设计
为会员查看商品建立视图:
3.2数据模型的优化
数据模数据模型的优化是为了提高数据库应用系统的性能,根据应用需要适当地修改、调整关系模式。
将转化的关系模式进行优化,最终达到第二范式。
由以上关系可看出,以上表都以消除了非主属性对候选码的部分函数依赖,这个关系模型都已经达到第二范式,所以不需要进行优化。
3.3数据库的结构
1.创建客户表
字段信息:
客户号customerNo
密码password
姓名customerName
类型号typeNo
性别sex
单位company
电子信箱email
身份证号ID
VIP等级VIP
Createtablecustomer(
customerNochar(12)primarykey,
passwordvarchar(18)NotNull,
customerNamevarchar(12)NotNull,
typeNochar(8)NotNull,
sexchar
(1)Check(sexIn(‘M’,‘F’)),
companyvarchar(20),
emailvarchar(50)NotNull,
IDvarchar(18)NotNull,
VIPchar
(1)
)
2.创建VIP会员表
会员等级VIP
会员折扣discount
CreatetableVIP(
VIPchar
(1)primarykey,
DiscountfloatNotNull
3.创建商品表
商品号productNo
商品名称productName
类别号typeNo
商品描述describe
单位uints
规格standard
单价price
Createtableproduct(
ProductNochar(12)primarykey,
ProductNamevarchar(18)NotNull,
typeNochar(12)NotNull,
describevarchar(50)NotNull,
unitsvarchar(20)NotNull,
standardchar(8),
pricenumericNotNull
4.创建生产厂商表
厂商号producerNo
厂商名producerName
地址address
电话telephone
Createtableproducer(
producerNochar(12)primarykey,
producerNamevarchar(18)NotNull,
addressvarchar(50)NotNull,
telephonevarchar(12)NotNull
5.创建商品类别表
类别号protypeNo
类别名称protypeName
Createtableprotype(
protypeNochar(12)primanykey,
protypeNamevarchar(18)NotNull
6.创建地址表
地址号addressNo
地址名称addressName
Crestetableaddress(
addressNochar(12)primarykey,
addressvarchar(20)NotNull
7.创建订单明细表
订单号orderNo
客户号customerNo
商品号productNo
收货地址address
订货日期orderdate
订货数量quantity
发票号码billNo
订单金额ordersum
发货日期Fhdate
订单状态orderstate
Createtableordermaster(
orderNochar(12)primarykey,
customerNochar(12)NotNull,
productNochar(12)NotNull,
addressvarchar(20)NotNull,
orderdatedatetimeNotNull,
quantitychar(4)NotNull,
pricenumericNotNull,
billNovarchar(12)NotNull,
FhdatedatetimeNotNull,
Orderstatechar(8)Check(orderstateIN(‘0’,‘1’)),
foreignkey(customerNo)referencescustomer(customerNo)
foreignkey(productNo)referencesproduct(productNo),
foreignkey(billNo)referencesbill(billNo)
8.创建发票表
发票号码billNo
订单号orderNo
Createtablebill(
billNochar(12)primanykey,
orderNochar(12)NotNull,
foreignkey(orderNo)referencesproduct(orderNoNo)
9.创建供应表
商品号productNo
厂商号producerNo
Createtablesupport(
productNochar(12)primanykey,
producerNochar(12)NotNull,
foreignkey(producerNo)referencesproducer(producerNo),
foreignkey(productNo)referencesproduct(productNo)
10.创建客户类型表:
客户类型type
Createtabletype(
CustomerNochar(12)primarykey,
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.创建客户地址表
客户地址cusaddress
Createtablecusaddress(
customerNochar(12)primarykey,
cusaddressvarchar(100)NotNull
)
这里我们保证了实体完整性,参照完整性和用户自定义完整性。
在各个基本表的定义中,我们使主码值均不为空,而且我们还进行了用户自定义的完整性约束,使表中某些值取值不为空。
4.1物理设计任务与目标
为上一阶段的关系模型选取一个最适合的应用要求的物理结构,即确定存取方法和存储结构。
4.2索引存取方法
为了提高让会员搜索商品的速度,对商品建立聚簇索引。
createnonclusteredindexproductNoonproduct
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’,
Maxsize=5,
4.1.2触发器的设计
在修改商品价格的时候,新的商品价格不能超过原来价格的2倍,否则修改不成功,依此设计一个触发器。
触发器设计如下:
/*创建触发器T1,实现注册客户VIP自动升级*/
CreateTriggerT1ONcustomer
Forupdate
As
IFUpdate(ordersum)
Begin
Declare@priceAsnumeric
Select@price=ordersumFrominserted
If@price>
=30000
UpdatecustomersetVIP=’3’
Else
If@price>
=20000
UpdatecustomersetVIP=’2’
Else
If@price>
=10000
UpdatecustomersetVIP=’1’
End
/*创建一个触发器,只允许注册会员在网上提交订单*/
CreateTriggerT2onorder
Forinsert
IfNotExists
(select*Frominserted
WherecustomerNoin(selectcustomer.customerNofromcustomer))
Begin
Raiserror(‘提交订单前请先注册!
’,16,1)
RollbackTransaction
/*创建一个触发器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
Committean
Closecur_order
Deallocatecur_order
End
6.1课程设计所负责部分
在这次的课程分组中,我主要负责数据库课程设计的系统流程的分析,数据库的物理设计,触发器的设计,数据库语句的编写与调试,并负责数据库课程设计的最终成稿,并积极的参与了组内各个步骤的讨论。
6.2课程设计的学习心得
这次的课程设计分组合作的形式,使得我们组员的发挥个人所长和共同努力之下完成,同时也在相互讨论下取长补短,学习了很多东西的同时也明白了自身的不足,在我所负责的部分在实施中也有不同的挫折,数据库语句调试时出现了许多问题,通过组员间的讨论以及对书本的重温,最终完成了,同时也发现,错误往往出现在不经意间,一个符号的错误可以影响整个语句。
触发器的设计,是我对书本再一次的学习,借鉴并参考了许多的书本知识。
通过这次的数据库课程设计我学习并掌握了很多知识与操作。
并且意识到一个好的软件的设计必须有一个好的需求分析。
这也是我们组内的讨论重点。
历时一个星期的课程设计令我受益匪浅,也对数据库这门学科有了更进一步的认识与熟悉。
完成之后,很有成就感,学到了很多,希望以后还可以有这样的课程设计让我进步。
由于本人能力不足,会使系统出现一些不足之处,例如,网上购物系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由于限于时间,本系统只能做出其中的一部分功能。
希望老师评点批评。
参考书籍:
数据库系统概论(第四版)主编:
数据库系统原理与设计实验教程主编:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 购物 系统 数据库 设计 资料