《网上购物系统的数据库设计(共15页).doc》由会员分享,可在线阅读,更多相关《网上购物系统的数据库设计(共15页).doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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一、需求
2、分析1.1功能需求及数据需求分析1.1.1用户管理 用户:只允许浏览商品信息,可以注册为普通用户 会员:拥有浏览商品和购买商品的权限,其属性包括客户号(唯一)、客户名、E-Mail、密码、姓名、性别、邮政编码、地址(一个客户可有几个地址)、客户所属VIP级别、折扣优惠。 1.1.2商品管理商品的增加。其中的属性包含商品号(唯一)、商品分类、生产厂商、每个厂商的实际存货量、规定的最低存货量和商品其它描述商品的查询,在只要输入商品的任一属性即可1.1.3商品订购管理注册用户即会员注册后可以将相关商品放入购物车,最后购物结束之后形成生成订单,其中每个订单属性包含订单号、客户号、收货地址、订单日期、订
3、单金额、订单明细(每个订单都有几个明细)内容为商品号、单价、订货数量。1.1.4配送单管理默认属性为客户注册时的基本信息,当然配送地址可由客户修改为合适的收货地址,支付方式也可根据提示由客户自定。1.1.5评论管理客户可以给商品发表评论,相关属性为评论号、客户号、商品号、客户邮箱、评论内容、评论时间。1.2业务规则分析1、 所用用户都有权限浏览商品信息,但只有注册用户才能订购商品2、 每位注册用户的编号都是唯一的。3、 当普通客户总的订单金额达到10000元,即可升级为VIP客户。VIP客户一般分为三个等级,对他们的优惠策略是在普通客户的价格上同时享有折扣优惠。其中。三级会员,订单金额在100
4、00,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:商
5、品实体图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)修改和重构。消除不必要的冗余,生成基
6、本E-R图。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,应当予以消除。消除了冗余后的初步E-R图称为基本E-R图。消除冗余主要采用的方法有:1)用分析方法消除冗余;2)用规范化理论消除冗余。对该网上购物系统各子E-R图的集成即该网上购物系统的总体概念结构E-R图如下图所示:三、 逻辑结构设计3.1 E-R图向关系模型的转换由于概念设计的结果是ER图,DBMS一般采用关系模型,因此数据库的逻辑设计过程就是把E-R图转化为关系模式的过程。将该网上购物系统的总体概念结构E-R图转换为关系模型:客户(客户号、密码、姓名、性别、单位、电子信箱、身份证号)VIP会员表(会员等级、会员折
7、扣)商品(商品号、商品名称、类别号、商品描述、单位、规格、单价)生产厂商表(厂商号,生产厂商名、地址、电话 )地址(地址号、地址名称)订单(订单号、客户号、商品号、收货地址、订货日期、订货数量、单价、订单金额、发货日期、订单状态)发票(发票号码、订单号)供应(商品号、厂商号)商品分类(商品类别号、类别名称)客户类型(客户号、客户类型)评论(评论号、客户号、商品号、客户邮箱、评论内容、评论时间)客户地址表(客户号、客户地址)3.1.2视图的设计为会员查看商品建立视图:3.2数据模型的优化数据模数据模型的优化是为了提高数据库应用系统的性能,根据应用需要适当地修改、调整关系模式。将转化的关系模式进行
8、优化,最终达到第二范式。由以上关系可看出,以上表都以消除了非主属性对候选码的部分函数依赖,这个关系模型都已经达到第二范式,所以不需要进行优化。3.3数据库的结构1. 创建客户表字段信息: 客户号customerNo 密码password 姓名customerName类型号typeNo性别sex单位company电子信箱email身份证号IDVIP等级VIPCreate table customer(customerNochar(12)primarykey,passwordvarchar(18)NotNull,customerNamevarchar(12)NotNull,typeNochar(8
9、)NotNull,sexchar(1)Check(sex In(M,F) ),companyvarchar(20),emailvarchar(50)NotNull,IDvarchar(18)NotNull,VIPchar(1)2. 创建VIP会员表字段信息: 会员等级VIP会员折扣discountCreatetableVIP(VIPchar(1)primarykey,Discount floatNot Null)3. 创建商品表字段信息: 商品号productNo商品名称productName类别号typeNo商品描述describe单位uints规格standard单价priceCreate
10、tableproduct(ProductNochar(12)primary key,ProductNamevarchar(18)NotNull,typeNochar(12)NotNull,describevarchar(50) NotNull,unitsvarchar(20)Not Null,standardchar(8),pricenumericNot Null)4. 创建生产厂商表字段信息: 厂商号producerNo厂商名producerName地址address电话telephoneCreatetable producer(producerNochar(12)primary key,p
11、roducerName varchar(18)Not Null,addressvarchar(50)NotNull,telephonevarchar(12)Not Null)5. 创建商品类别表字段信息: 类别号protypeNo类别名称protypeNameCreatetable protype(protypeNochar(12)primany key,protypeNamevarchar(18)Not Null)6. 创建地址表字段信息:地址号addressNo地址名称addressNameCrestetable address(addressNochar(12)primarykey,ad
12、dressvarchar(20)Not Null)7. 创建订单明细表字段信息: 订单号orderNo客户号customerNo商品号productNo收货地址address订货日期orderdate订货数量quantity单价price发票号码billNo订单金额ordersum发货日期Fhdate订单状态orderstateCreatetable ordermaster(orderNochar(12)primary key,customerNochar(12)Not Null,productNochar(12)NotNull,addressvarchar(20)Not Null,order
13、datedatetimeNot Null,quantitychar(4)Not Null,pricenumericNot Null,billNovarchar(12)Not Null,FhdatedatetimeNot 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
14、(billNo)8. 创建发票表字段信息: 发票号码billNo订单号orderNoCreatetablebill(billNochar(12)primany key,orderNochar(12)Not Null,foreign key(orderNo) references product(orderNoNo) )9. 创建供应表字段信息: 商品号productNo厂商号producerNoCreatetablesupport(productNochar(12)primany key,producerNochar(12)NotNull,foreign key(producerNo) ref
15、erences producer(producerNo),foreign key(productNo) references product(productNo) )10. 创建客户类型表:字段信息: 客户号customerNo客户类型typeCreatetabletype(CustomerNochar(12)primary key,Typevarchar(18)Not Null)11. 创建评论表字段信息: 评论号reviewNo客户号customerNo商品号productNo客户邮箱email评论内容reviewContent评论时间reviewdateCreatetablereview
16、(reviewNochar(12)primany key,customerNochar(12)Not Null,produtNochar(12)Not Null,emailvarchar(50)Not Null,reviewContentvarchar(100)Not Null,reviewdatedatetimeNot Null,foreign key(customerNo) references customer(customerNo),foreign key(productNo) references product(productNo)12. 创建客户地址表字段信息:客户号custom
17、erNo客户地址cusaddressCreatetablecusaddress(customerNochar(12)primary key,cusaddressvarchar(100)Not Null)这里我们保证了实体完整性,参照完整性和用户自定义完整性。在各个基本表的定义中,我们使主码值均不为空,而且我们还进行了用户自定义的完整性约束,使表中某些值取值不为空。四、物理结构设计4.1物理设计任务与目标为上一阶段的关系模型选取一个最适合的应用要求的物理结构,即确定存取方法和存储结构。4.2索引存取方法为了提高让会员搜索商品的速度,对商品建立聚簇索引。create nonclustered in
18、dex productNo on product五、数据库的实施4.1数据库的载入4.1.1创建数据库shoponlinecreatedatabase shoponlineon(Name=shoponline, Filename=f:SQLshoponline.mdf, Size=2, Maxsize=20, Filegrowth=1)Log on(name=shoponlinelog, Filename=f;SQLshoponlinelog.ldf, Size=2, Maxsize=5, Filegrowth=1)4.1.2触发器的设计在修改商品价格的时候,新的商品价格不能超过原来价格的2倍
19、,否则修改不成功,依此设计一个触发器。触发器设计如下:/*创建触发器T1,实现注册客户VIP自动升级*/Create Trigger T1 ON customerFor updateAsIF Update(ordersum)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=
20、1End/*创建一个触发器,只允许注册会员在网上提交订单*/Create Trigger T2 on orderFor insertAsIf Not Exists(select * From insertedWhere customerNo in(select customer.customerNo from customer)BeginRaiserror(提交订单前请先注册!,16,1)Rollback TransactionEnd/*创建一个触发器T3,统计订单金额*/*创建一个更新触发器,及时更新订单*/Create Trigger updatesaleitem On order For
21、 Update AsIf Update (quantity) Or Update (price)Begin Declare orderNo int,productNo char(12)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*
22、D.price+I.quantity*I.priceFrom inserted I,deleted DWhere order.orderNo=I.orderNo And I.orderNo=D.orderNoAnd And I.productNo=D.productNoAnd Fetch cur_order into orderNo,productNoEndCommit teanClose cur_orderDeallocate cur_orderEnd 六、总结6.1课程设计所负责部分在这次的课程分组中,我主要负责数据库课程设计的系统流程的分析,数据库的物理设计,触发器的设计,数据库语句的编
23、写与调试,并负责数据库课程设计的最终成稿,并积极的参与了组内各个步骤的讨论。6.2课程设计的学习心得这次的课程设计分组合作的形式,使得我们组员的发挥个人所长和共同努力之下完成,同时也在相互讨论下取长补短,学习了很多东西的同时也明白了自身的不足,在我所负责的部分在实施中也有不同的挫折,数据库语句调试时出现了许多问题,通过组员间的讨论以及对书本的重温,最终完成了,同时也发现,错误往往出现在不经意间,一个符号的错误可以影响整个语句。触发器的设计,是我对书本再一次的学习,借鉴并参考了许多的书本知识。通过这次的数据库课程设计我学习并掌握了很多知识与操作。并且意识到一个好的软件的设计必须有一个好的需求分析。这也是我们组内的讨论重点。历时一个星期的课程设计令我受益匪浅,也对数据库这门学科有了更进一步的认识与熟悉。 完成之后,很有成就感,学到了很多,希望以后还可以有这样的课程设计让我进步。由于本人能力不足,会使系统出现一些不足之处,例如,网上购物系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由于限于时间,本系统只能做出其中的一部分功能。希望老师评点批评。参考书籍:数据库系统概论(第四版)主编:王珊 萨师轩 数据库系统原理与设计实验教程主编:吴京慧 刘爱红等专心-专注-专业