网上购物系统的数据库设计_第1页
网上购物系统的数据库设计_第2页
网上购物系统的数据库设计_第3页
网上购物系统的数据库设计_第4页
网上购物系统的数据库设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库系统概论课程设计网上购物系统的数据库设计学院(系): 专业: 学号:姓名: 指导老师: 2012年6月23日目录一、 需求分析1.1功能需求及数据需求分析-21.2业务规则分析-21.3业务需求及处理流程-2二、 概念结构设计2.1各子系统的局部E-R-32.2视图的集成-6三、 逻辑结构设计3.1 E-R图向关系模型的转换-73.2数据模型的优化-83.3数据库的结构-8四、 物理结构设计4.1物理设计任务与目标-124.2索引存取方法-12五、 数据库的实施4.1数据库的载入-12六、 总结6.1课程设计所负责部分-146.2课程设计的学习心得-14一、需求分析1.1功能需求及数据需

2、求分析用户管理 用户:只允许浏览商品信息,可以注册为普通用户 会员:拥有浏览商品和购买商品的权限,其属性包括客户号(唯一)、客户名、E-Mail、密码、姓名、性别、邮政编码、地址(一个客户可有几个地址)、客户所属VIP级别、折扣优惠。 商品管理商品的增加。其中的属性包含商品号(唯一)、商品分类、生产厂商、每个厂商的实际存货量、规定的最低存货量和商品其它描述商品的查询,在只要输入商品的任一属性即可商品订购管理注册用户即会员注册后可以将相关商品放入购物车,最后购物结束之后形成生成订单,其中每个订单属性包含订单号、客户号、收货地址、订单日期、订单金额、订单明细(每个订单都有几个明细)内容为商品号、单

3、价、订货数量。配送单管理默认属性为客户注册时的基本信息,当然配送地址可由客户修改为合适的收货地址,支付方式也可根据提示由客户自定。评论管理客户可以给商品发表评论,相关属性为评论号、客户号、商品号、客户邮箱、评论内容、评论时间。1.2业务规则分析1、 所用用户都有权限浏览商品信息,但只有注册用户才能订购商品2、 每位注册用户的编号都是唯一的。3、 当普通客户总的订单金额达到10000元,即可升级为VIP客户。VIP客户一般分为三个等级,对他们的优惠策略是在普通客户的价格上同时享有折扣优惠。其中。三级会员,订单金额在10000,15000)元,享受折扣9折;二级会员,订单金额在15000,2500

4、0)元,享受折扣8.5折;一级会员,订单金额在25000及以上,享受折扣7.5折。4、 每次商品的订单号都是唯一的。5、 客户可以在前台页面查看订单状态,订单状态可以是“0”或“1”,“1”表示订单上的商品已发出, “0”表示订单上的商品未发出。订单的生成需用户确定之后才能生效。1.3业务需求及处理流程 网上购物系统主要业务包括:商品信息的发布与查询,商品的订购,处理订单,商品的配送。系统处理流程:系统流程图二、 概念结构设计2.1各子系统的局部E-R如下:图:客户实体图:VIP客户图:商品实体图:生产厂商实体图:商品分类图:地址实体图:订单明细图:发票图:供应关系图:商品分类关系图:客户评论

5、关系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)用

6、规范化理论消除冗余。对该网上购物系统各子E-R图的集成即该网上购物系统的总体概念结构E-R图如下图所示:三、 逻辑结构设计3.1 E-R图向关系模型的转换由于概念设计的结果是ER图,DBMS一般采用关系模型,因此数据库的逻辑设计过程就是把E-R图转化为关系模式的过程。将该网上购物系统的总体概念结构E-R图转换为关系模型:客户(客户号、密码、姓名、性别、单位、电子信箱、身份证号)VIP会员表(会员等级、会员折扣)商品(商品号、商品名称、类别号、商品描述、单位、规格、单价)生产厂商表(厂商号,生产厂商名、地址、电话 )地址(地址号、地址名称)订单(订单号、客户号、商品号、收货地址、订货日期、订货数

7、量、单价、订单金额、发货日期、订单状态)发票(发票号码、订单号)供应(商品号、厂商号)商品分类(商品类别号、类别名称)客户类型(客户号、客户类型)评论(评论号、客户号、商品号、客户邮箱、评论内容、评论时间)客户地址表(客户号、客户地址)视图的设计为会员查看商品建立视图:3.2数据模型的优化数据模数据模型的优化是为了提高数据库应用系统的性能,根据应用需要适当地修改、调整关系模式。将转化的关系模式进行优化,最终达到第二范式。由以上关系可看出,以上表都以消除了非主属性对候选码的部分函数依赖,这个关系模型都已经达到第二范式,所以不需要进行优化。3.3数据库的结构1. 创建客户表字段信息: 客户号cus

8、tomerNo 密码password 姓名customerName类型号typeNo性别sex单位company电子信箱email身份证号IDVIP等级VIPCreate table customer(customerNochar(12)primarykey,passwordvarchar(18)NotNull,customerNamevarchar(12)NotNull,typeNochar(8)NotNull,sexchar(1)Check(sex In(M,F) ),companyvarchar(20),emailvarchar(50)NotNull,IDvarchar(18)NotNu

9、ll,VIPchar(1)2. 创建VIP会员表字段信息: 会员等级VIP会员折扣discountCreatetableVIP(VIPchar(1)primarykey,Discount floatNot Null)3. 创建商品表字段信息: 商品号productNo商品名称productName类别号typeNo商品描述describe单位uints规格standard单价priceCreatetableproduct(ProductNochar(12)primary key,ProductNamevarchar(18)NotNull,typeNochar(12)NotNull,descri

10、bevarchar(50) NotNull,unitsvarchar(20)Not Null,standardchar(8),pricenumericNot Null)4. 创建生产厂商表字段信息: 厂商号producerNo厂商名producerName地址address电话telephoneCreatetable producer(producerNochar(12)primary key,producerName varchar(18)Not Null,addressvarchar(50)NotNull,telephonevarchar(12)Not Null)5. 创建商品类别表字段信

11、息: 类别号protypeNo类别名称protypeNameCreatetable protype(protypeNochar(12)primany key,protypeNamevarchar(18)Not Null)6. 创建地址表字段信息:地址号addressNo地址名称addressNameCrestetable address(addressNochar(12)primarykey,addressvarchar(20)Not Null)7. 创建订单明细表字段信息: 订单号orderNo客户号customerNo商品号productNo收货地址address订货日期orderdate

12、订货数量quantity单价price发票号码billNo订单金额ordersum发货日期Fhdate订单状态orderstateCreatetable ordermaster(orderNochar(12)primary key,customerNochar(12)Not Null,productNochar(12)NotNull,addressvarchar(20)Not Null,orderdatedatetimeNot Null,quantitychar(4)Not Null,pricenumericNot Null,billNovarchar(12)Not Null,Fhdateda

13、tetimeNot Null,Orderstatechar(8)Check(orderstate IN(0,1),foreign key(customerNo) references customer(customerNo)foreign key(productNo) references product(productNo),foreign key(billNo) references bill(billNo)8. 创建发票表字段信息: 发票号码billNo订单号orderNoCreatetablebill(billNochar(12)primany key,orderNochar(12)N

14、ot Null,foreign key(orderNo) references product(orderNoNo) )9. 创建供应表字段信息: 商品号productNo厂商号producerNoCreatetablesupport(productNochar(12)primany key,producerNochar(12)NotNull,foreign key(producerNo) references producer(producerNo),foreign key(productNo) references product(productNo) )10. 创建客户类型表:字段信息:

15、 客户号customerNo客户类型typeCreatetabletype(CustomerNochar(12)primary key,Typevarchar(18)Not Null)11. 创建评论表字段信息: 评论号reviewNo客户号customerNo商品号productNo客户邮箱email评论内容reviewContent评论时间reviewdateCreatetablereview(reviewNochar(12)primany key,customerNochar(12)Not Null,produtNochar(12)Not Null,emailvarchar(50)Not

16、 Null,reviewContentvarchar(100)Not Null,reviewdatedatetimeNot Null,foreign key(customerNo) references customer(customerNo),foreign key(productNo) references product(productNo)12. 创建客户地址表字段信息:客户号customerNo客户地址cusaddressCreatetablecusaddress(customerNochar(12)primary key,cusaddressvarchar(100)Not Null

17、)这里我们保证了实体完整性,参照完整性和用户自定义完整性。在各个基本表的定义中,我们使主码值均不为空,而且我们还进行了用户自定义的完整性约束,使表中某些值取值不为空。四、物理结构设计4.1物理设计任务与目标为上一阶段的关系模型选取一个最适合的应用要求的物理结构,即确定存取方法和存储结构。4.2索引存取方法为了提高让会员搜索商品的速度,对商品建立聚簇索引。create nonclustered index productNo on product五、数据库的实施4.1数据库的载入创建数据库shoponlinecreate database shoponlineon(Name=shopo

18、nline, Filename=f:SQLshoponline.mdf, Size=2, Maxsize=20, Filegrowth=1)Log on(name=shoponlinelog, Filename=f;SQLshoponlinelog.ldf, Size=2, Maxsize=5, Filegrowth=1)触发器的设计在修改商品价格的时候,新的商品价格不能超过原来价格的2倍,否则修改不成功,依此设计一个触发器。触发器设计如下:/*创建触发器T1,实现注册客户VIP自动升级*/Create Trigger T1 ON customerFor updateAsIF Update(o

19、rdersum)BeginDeclare price As numericSelect price=ordersum From insertedIf price>=30000Update customer set VIP=3ElseIf price>=20000Update customer set VIP=2ElseIf price>=10000Update customer set VIP=1End/*创建一个触发器,只允许注册会员在网上提交订单*/Create Trigger T2 on orderFor insertAsIf Not Exists(select * F

20、rom insertedWhere customerNo in(select customer.customerNo from customer)BeginRaiserror(提交订单前请先注册!,16,1)Rollback TransactionEnd/*创建一个触发器T3,统计订单金额*/*创建一个更新触发器,及时更新订单*/Create Trigger updatesaleitem On order For Update AsIf Update (quantity) Or Update (price)Begin Declare orderNo int,productNo char(12)

21、Declare cur_order Cursor ForSelect orderNo,productNo From DeletedOpen cur_orderBegin Transaction Fetch cur_order into orderNo,productNoWhile (fetch_status=0)Begin Update orderSet ordersum=ordersum-D.quantity*D.price+I.quantity*I.priceFrom inserted I,deleted DWhere order.orderNo=I.orderNo And I.orderNo=D.orderNoAnd order.orderNo=orderNo And I.productNo=D.productNoAnd I.pro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论