《电子商务网站数据库设计说明书.pdf》由会员分享,可在线阅读,更多相关《电子商务网站数据库设计说明书.pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-1-摘要现如今,互联网行业的快速发展,使的互联网已日益成为收集提供信息的最佳渠道。计算机不断的趋于大众化,电子商务也越来越成熟。随着计算机科学的发展,数据库技术在Internet 中的应用逐步广泛。而建立在Internet 上的网上购物系统是电子商务的一种重要形式。通过网上购物,给人们的生活带来了许多方便。本系统主要采用关系数据库的理论设计一个B2C 电子商务网站的数据库,并利用 T-SQL语言设计的存储过程、触发器等数据库对象实现一部分网站的业务逻辑。关键词:电子
2、商务订单存储过程Abstract Today,the Internet industrys rapid development,so that the Internet has increasingly become the best channel for collecting information.Computer continually become popular,more and more sophisticated e-commerce.With the development of computer science,database technology application
3、 in the Internet gradually widely.Established on the Internet online shopping system is an important form of e-commerce.Through online shopping,to many peoples lives easy.The system mainly uses the theory of relational database design database of a B2C e-commerce site,and use T-SQL language design s
4、tored procedures,triggers and other database objects to achieve part of the sites business logic Keywords:E-commerce Order form Shopping Cart Stored Procedures 数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-1-目录第 1 章引言.1 1.1 电子商务的概述.1 1.2 电子商务系统的组成元素.1 1.3 电子商务的作用.2 第 2 章需求分析.3 2.1
5、 鲜花网站的背景介绍.3 2.2 设计目标.3 2.3 网站的功能.3 2.4 业务规则.3 第 3 章数据库设计.5 3.1 概念模型设计.5 3.2 逻辑模型设计.6 3.3 物理模型设计.6 3.4 创建数据库.8 第 4 章业务逻辑设计.11 4.1 客户注册.11 4.2 普通客户转会员.11 4.3 根据产品名称查询.12 4.4 查看产品的所有评价.13 4.5 客户下订单.13 4.6 职员处理的订单.15 第 5 章结论.17 谢辞.18 参考文献.19 数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技
6、术学院-1-第1章引言1.1 电子商务的概述电子商务,英文是 ElectronicCommerce,简称 EC,顾名思义,其内容包含两个方面,一是电子方式,二是商贸活动。电子商务通常是指是在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式。利用简单、快捷、低成本的电子通讯方式,买卖双方不谋面地进行各种商贸活动。电子商务可以通过多种电子通讯方式来完成。简单的,比如你通过打电话或发传真的方式来与客户进行商贸活动,似乎也可以称作为电子商务;是为实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商
7、业运营模式。“中国网络营销网”Tinlu相关文章指出,电子商务涵盖的范围很广,一般可分为企业对企业(Business-to-Business),或企业对消费者(Business-to-Customer)两种。另外还有消费者对消费者(Customer-to-Customer)这种大步增长的模式。随着国内Internet 使用人数的增加,利用 Internet 进行网络购物并以银行卡付款的消费方式已渐流行,市场份额也在迅速增长,电子商务网站也层出不穷。电子商务最常见之安全机制有SSL 及 SET 两种。要实现完整的电子商务还会涉及到很多方面,除了买家、卖家外,还要有银行或金融机构、政府机构、认证机
8、构、配送中心等机构的加入才行。由于参与电子商务中的各方在物理上是互不谋面的,因此整个电子商务过程并不是物理世界商务活动的翻版,网上银行、在线电子支付等条件和数据加密、电子签名等技术在电子商务中发挥着重要的不可或缺的作用。1.2 电子商务系统的组成元素电子商务基础平台为企业的电子商务应用提供了运行环境和管理工具及内部袭用的连接。它是保证电子商务系统具有高扩展性、集中控制、高可靠性的基础。电子商务基础平台的目标是提高系统整体性能,是面向系统效率的。下面我们就来看看它由哪几部分元素组成。电子商务系统的基础平台一般包括以下组成元素:(1)负荷均衡负荷均衡是指如何使电子商务系统服务器的处理能力和承受能力
9、的压力保持均衡。负荷均衡还可以对服务器集群结构中的各个服务器性能进行动态调整和负荷分配。它使电子商务系统中硬件性能得到有效的均衡,避免特定的设备或系统软件由于压力过大而出现崩溃和拒绝服务的现象。这样在一定程度上能够提高系统的可靠性。(2)连接/传输管理这一部分的主要作用是满足系统可扩充性的需要,用以实现电子商务系统和其他系统之间的互联以及应用之间的互操作。一般来讲,这一部分包括三个方面的内容:异构系统的连接及通讯,例如UNIX 系统上的WEB 服务器与 IBMES9000 之间的连接。应用间的通信接口,保证应用程序通过不可靠信道连接进行时,可以完成差错恢复及续传,并为应数 据 库 设 计 说
10、明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-2-用之间的互操作提供API 接口,简化应用通信的开发工作。应用和数据库的连接之间的接口。(3)事务管理电子商务系统支持的商务活动涉及到大量的联机事务处理OLTP 和 OLAP,这就要求系统具备很强的事务处理性能。事务管理的作用包括量方面,一是保证分布式环境下事务的完整性、一致性和原子性;二时缩短系统的响应时间,提高交易过程的实时性。(4)网站管理网站是电子商务系统的客户服务接口,用于表达系统商务逻辑的处理结果。所以,在电子商务系统中,网站具有重要的地位。网站管理的基本作用是为站点维护、管
11、理和性能分析提供技术支持手段,它主要实现系统状态的监控、系统性能调整、用户访问授权、客户访问历史记录等功能。通过网站管理功能,可以记录客户的访问数据,了解用户的需求。利用这些数据,企业能够了解客户的潜在需求。(5)数据管理该部分为电子商务应用相关数据的存储、加工、备份和表达提供支持,同时为应用程序提供应用开发接口。通常该部分利用支持WEB 的数据库管理系统实现。但是与传统的DBMS 相比,该部分与WEB 的接口方式更加丰富,例如支持API、JDBC、ODBC 等接口方式,而且对多媒体数据的支持能力更强。除利用传统的DBMS 实现数据管理外,目前也又一种做法是将WEB 和 DBMS 更紧密的结合
12、起来,构造所谓的WebDB。例如,在CA 公司的产品Justme-I 中,就将应用平台和数据库集成为一体。(6)安全管理该部分为电子商务系统提供安全可靠的运行环境、防止或减少系统被攻击的可能、提高系统抗拒非法入侵或攻击的能力、保障联机交易过程的安全。1.3 电子商务的作用电子商务的作用可以分为直接作用和间接作用两个部分。电子商务的直接作用有:第一,极度节约商务成本,尤其节约商务沟通和非实物交易的成本;第二,极大提高商务效率,尤其提高地域广阔但交易规则相同的商务效率;第三;有利于进行商务(经济)宏观调控、中观调节和微观调整,可以将政府、市场和企业乃至个人连接起来,将“看得见的手”和“看不见的手”
13、连接起来,既可克服“政府失灵”又可克服“市场失灵”,既为政府服务又为企业和个人服务。电子商务间接作用有:第一,促进整个国民经济和世界经济高效化、节约化和协调化;第二,带动一大批新兴产(事)业的发展,如:信息产业,知识产业和教育事业等;第三;物尽其用、保护环境,有利于人类社会可持续发展。作为一种商务活动过程,电子商务将带来一场史无前例的革命。其对社会经济的影响会远远超过商务的本身,除了上述这些影响外,它还将对就业、法律制度以及文化教育等带来巨大的影响。电子商务会将人类真正带入信息社会。数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现
14、绍兴职业技术学院-3-第2章需求分析在第一章里已经对电子商务的基本概述、特点、应用类型和组成元素作了介绍。并讨论了电子商务的一些优点与应用。本章着重对设计此网站的数据库所应用的技术和如何实现并开发此方案作详细的解说。对总体方案的可行性进行分析和论证。2.1 鲜花网站的背景介绍随着互联网的普及,网购已经成了网民很重要的消费手段。由此购物网站逐渐发展起来,所谓购物网站就是提供网络购物的站点。足不出户即可购买到你所喜欢的商品。目前国内比较知名的专业购物网站有卓越、当当、d1 便利、no5 时尚广场、美家搜购等。提供个人对个人的买卖平台有淘宝、易趣、拍拍、百家店、康佳丽等。还有很多提供各种各样商品出售
15、的站点。2.2 设计目标任何一个项目或者系统开发之前都需要定制一个开发约定和规则,这样有利于项目的整体风格统一、代码维护和扩展。由于Web 项目开发的分散性、独立性、整合的交互性等,所以在建设网站之前对网站需求进行分析显得尤为重要。在此定制了一系列约定和规则:包括文件夹命名规则、文件名命名规则、程序代码编程风格、数据库设计约定。一个优良可行的规范可以使得在网站建设过程中得心应手事半功倍。当然有些时候,也可以根据具体情况来采用相应的策略。在 Web 项目开发中有前后台开发之分,前台开发主要是指非程序编程部分,主要职责是网站AI 设计、界面设计、动画设计等。而后台开发主要是编程和网站运行平台搭建,
16、其主要职责是设计网站数据库和网站功能模板的实现。因此在计算机双语论坛的建设中,把它分成了前台与后台开发。2.3 网站的功能在线鲜花订购系统主要是建立网上的鲜花订购及管理平台,其主要的功能如下:1、发布鲜花产品,以供客户查看。2、可实现各种鲜花产品的查询功能。3、客户能比较方便地订购鲜花产品。4、客户能比较及时了解自己的订单的情况(如何时到货,到货后可以对收到的产品进行评价)。5、管理员能比较方便管理所有的订单。2.4 业务规则鲜花订购系统的主要业务如下:数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-4-1、客户
17、可以在网站上注册,注册的客户要提供客户的姓名、电话、地址、密码,客户号由系统生成。其中密码和用户名方便用户登录,姓名、地址、电话以方便联系和寄货;2、当客户在网站订购货物到一定量(累计购买500 元或一次性购买200 元)可以将普通客户转为会员,并制作会员卡给客户(更新客户信息中的是否会员和会员号);3、网站管理员可以登记各种商品,供客户查询,订购。登记商品时要提供商品的名称、价格、会员价、商品说明等信息;4、客户可以根据类型或产品的名称或价格查询产品;5、客户可以在网上下订单,一张订单可以订购多种商品,可以在订购时对订购的商品提出要求6、网站管理员可以查看订单,并及时将订单的处理情况更新(比
18、如货物已寄出的信息)7、客户可以就他订购的商品进行评价8、管理员可以查看所有的客户信息、所有的商品的评价信息并进行回复数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-5-第3章数据库设计3.1 概念模型设计根据上述需求,找出的实体及实体之间的联系如下:图 3.1 类型实体图 3.2 产品实体图 3.3 客户实体图 3.4 订单实体数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-6-图 3.5 职员实体图 3.6E-R 图3.2 逻辑
19、模型设计根据上述E-R 模型,将之转换为关系模式集:类型(类型号,类型名,说明)产品(产品号,产品名,类型号,价格,会员价,说明)客户(客户号,姓名,地址,联系电话,密码,是否会员,会员号)职员(职员号,姓名,性别,密码)订单(订单号,日期,状态,职员号,客户号)订购(订单号,产品号,数量,价格,要求,评价,回复)3.3 数据库表结构设计根据上述关系模式集和实际情况,设计数据库物理结构如下所述数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-7-表 3.1 类型表(c_type)字段名类型长度说明T_id Char
20、 2 类型号,主键,索引T_name varchar 20 类型名,非空,索引Memo varchar 200 说明类型表是用来存放商品类型的,网页上以类型的不同把商品显示在不同的位置,类型名称也是用户搜索的关键字,所以要在上面加索引,主键索引也是必须的表 3.2 产品表(product)字段名类型长度说明P_id Char 4 产品号,主键,索引P_name varchar 100 产品名称,非空,索引T_id Char 2 类型号,外键,非空,索引Price Money 价格,非空,大于等于0 M_price Money 会员价,大于等于0 Memo varchar 200 说明产品表用来
21、存储鲜花商品的基本信息。这张表是系统数据库中一个至关重要的数据表,页面上所显示的商品都是从这里读取的。表中P_name 存储商品名称,在进行查询语句时经常根据这个字段查询相应的鲜花商品的,所以要加索引。主键外键索引也是必须的表 3.3 客户表(client)字段名类型长度说明C_id char 8 客户号,主键,索引C_name varchar 40 姓名,非空C_add varchar 50 地址,非空C_phone varchar 40 联系电话,非空C_pass varchar 20 密码,非空If_member char 1 是否会员,Y 表示会员;N 表示非会员,非空Member_i
22、d char 8 会员号,索引,必须 If_member 为 Y 才有会员号,否则是null 客户表是用来存放客户信息的,姓名、地址、联系电话、密码由客户在注册时输入,客户号由程序生成;注册时是否会员为N,会员号为空;当该用户一次性购买满200 元或累计消费满500 后升为会员,会员号同客户号。表 3.4 职员表(admin)字段名类型长度说明U_id char 4 职员号,主键,索引Name Varchar 10 姓名,非空gender Varchar 2 性别,非空pass varchar 50 密码,非空职员表是用来存放网站的管理员信息的,通过职员号和密码登录,进行产品更新和订单处理等工
23、作。数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-8-表 3.5 订单表(porder)字段名类型长度说明O_id char 10 订单号,主键,索引O_date datetime 日期,非空Status varchar 20 状态,分为未付款、已付款、货物已寄出、已完成等,非空U_id char 4 职员号,外键,索引C_id char 8 客户号,外键,索引,非空订单表是用来存放订单的总体信息的,客户下订单时,要更新订单表和下面的订购表。根据下单的时间、客户号、是否付款以及程序自动生成的订单号在订单表中添加
24、一条记录,职员可以根据状态查找订单,当某职员处理某“已付款”订单时,写入该职员的职员号,并将状态改为“货物已寄出”。客户在收到货物后可以将订单设为“已完成”状态表 3.6 订购表(orderlist)字段名类型长度说明O_id char 10 订单号,主键,外键,索引P_id Char 4 产品号,主键,外键,索引quantity Int 数量,非空,大于0 Price Money 价格,非空,大于等于0 request varchar 200 要求evaluate varchar 200 评价reply varchar 200 回复订购表是用来存放订单的详细信息的,客户下订单时,根据购买的产
25、品和订单表中的订单号,购买的每种产品的数量,价格,对产品的要求等信息在订购表中生成若干条订购记录。客户在收到货物后可以在每种产品上加评价,即更新订购表的评价字段。该表中的主键是O_id+P_id,并在上面加主键索引;外键有 2 个 O_id 和 P_id,在上面分别加外键索引。3.4 创建数据库创建数据库代码如下:create database flowerstore go/*打开 flowerstore 数据库:*/use flowerstore go/*创建类型表:*/create table c_type(T_id Char(2)primary key,/*主键及主键索引*/T_name
26、 varchar(20)not null,/*非空*/Memo varchar(200)Go 数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-9-/*在类型表的类型名上创建索引:*/create index tname on c_type(T_name)go/*创建产品表:*/create table product(P_id Char(4)primary key,/*主键及主键索引*/P_name varchar(100)not null,/*非空*/T_id char(2)not null reference
27、s c_type(T_id),/*非空,外键及外键索引*/Price Money not null check(Price=0),/*非空,价格大于等于0*/M_price Money check(M_price=0),/*会员价大于等于0*/Memo varchar(200)Go/*在产品表的产品名上建索引:*/create index pname on product(P_name)go/*创建客户表*/create table client(C_id char(8)primary key,/*主键及主键索引*/C_name varchar(40)not null,/*非空*/C_add
28、varchar(50)not null,/*非空*/C_phone varchar(40)not null,/*非空*/C_pass varchar(20)not null,/*非空*/If_member char(1)not null default N check(If_member=Y or If_member=N),/*非空,默认为非会员,取值为 Y或 N*/Member_id char(8)Go/*在客户表的会员号上建索引:*/create index pname on client(Member_id)go/*创建职员表:*/create table admin(U_id char
29、(4)primary key,/*主键及主键索引*/Name Varchar(10)not null,/*非空*/gender Varchar(2)not null,/*非空*/pass varchar(50)not null/*非空*/)go/*创建订单表:*/create table porder(数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-10-O_id char(10)primary key,/*主键及主键索引*/O_date datetime not null,/*非空*/Status varcha
30、r(20)not null check(Status in(未付款,已付款,货物已寄出,已完成),/*非空,取值为未付款,已付款,货物已寄出,已完成 之一*/U_id char(4)references admin(U_id),/*外键及外键索引*/C_id char(8)not null references client(C_id)/*非空,外键及外键索引*/)go/*创建订购表:*/create table orderlist(O_id char(10)references porder(O_id),/*外键及外键索引*/P_id Char(4)references product(P_
31、id),/*外键及外键索引*/quantity int not null check(quantity0),/*非空,数量大于0*/Price money not null check(Price=0),/*非空,价格大于等于0*/request varchar(200),evaluate varchar(200),reply varchar(200),primary key(O_id,P_id)/*主键及主键索引*/)go 数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-11-第4章业务逻辑设计根据上一章的数据
32、库设计,本章以客户注册、普通客户转会员、客户根据产品名称查询产品信息,查看产品的评价、客户下订单、显示未处理的订单等说明本系统业务逻辑的实现过程。4.1 客户注册客户可以在网站上注册,注册的客户要提供客户的姓名、电话、地址、密码,客户号有系统生成。其中密码和客户号方便用户登录,姓名、地址、电话以方便联系和寄货。根据这个业务规则,设计存储过程如下:create proc new_client/*创建存储过程new_client*/cname varchar(40),/*4 个参数,分别表示姓名、电话、地址、密码4 个必填项*/cadd varchar(50),cphone varchar(40)
33、,cpass varchar(20)as declare cid char(8)/*声明一个局部变量cid 用来存放客户号*/select cid=(select max(c_id)from client)/*cid 赋值为客户表中的最大客户号*/*如果 cid 为空则当前客户为第一个客户,编号为00000001,否则为原最大客户号+1*/if cid is null set cid=00000001 else begin set cid=right(0000000+ltrim(cid+1),8)end insert into client values(cid,cname,cadd,cpho
34、ne,cpass,N,NULL)/*数据插入客户表*/go 4.2 普通客户转会员当客户在网站订购货物到一定量(累计购买500 元或一次性购买200 元)可以将普通客户转为会员,并制作会员卡给客户(更新客户信息中的是否会员和会员号);根据该业务逻辑,设计为每次普通客户下单购买产品后检查该订单的客户是否达到会员要求,若达到,则更新该客户的“是否会员”和“会员号”的值。实现该业务逻辑的代码如下:create proc turn_member/*创建存储过程turn_member*/oid char(10),/*参数为订单号、客户号*/cid char(8)as/*声明变量用来存放是否会员、金额的数
35、据*/数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-12-declare ismember char(1)declare summoney money select ismember=(select If_member from client where c_id=cid)/*根据客户号查是否会员*/*如果是会员,则结束存储过程*/if ismember=Y return/*根据订单号查该订单的总金额,如果达到200 以上则该客户成为会员*/select summoney=(select sum(Price*q
36、uantity)from orderlist where o_id=oid)if summoney=200 begin update client set If_member=Y,Member_id=cid where c_id=cid return end/*根据会员号查该会员订购的总金额,如果达到500 以上则该客户成为会员*/select summoney=(select sum(Price*quantity)from porder,orderlist where porder.o_id=orderlist.o_id and C_id=cid)if summoney=500 update
37、 client set If_member=Y,Member_id=cid where c_id=cid go 4.3 根据产品名称查询客户可以通过输入产品的名称查找产品信息,要实现模糊查询。并且如果是会员直接显示会员价,否则显示价格。设计一个函数,根据是否会员返回不同的价格,代码如下:create function f_price(pid Char(4),ismember char(1)/*创建函数f_price,参数为产品编号和是否会员*/returns money/*返回值为价格*/begin declare price money/*声明局部变量price*/*如果参数 ismembe
38、r 为 N,则局部变量price 为该产品的价格,否则为该产品的会员价*/if ismember=N select price=(select Price from product where P_id=pid)else select price=(select M_price from product where P_id=pid)return price/*返回 price 的值*/end go 设计一个存储过程根据产品名称模糊查询产品信息,调用函数f_price create proc name_search/*创建存储过程name_search*/pname varchar(100),
39、/*参数为产品名和是否会员*/ismember char(1)As/*根据产品名模糊查询查询产品信息,价格通过调用f_price 函数显示*/select P_id,P_name,dbo.f_price(P_id,ismember)as p_price,memo from product where P_name like 数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-13-%+pname+%go 4.4 查看产品的所有评价客户可以查看他所关心的某个产品的详细信息,包括产品的基本信息,购买该产品的人数,所有购买
40、了该产品的客户对产品的评价等。设计存储过程如下:create proc product_info/*创建存储过程product_info*/pid Char(4)/*参数为产品号*/As/*根据产品号查询该产品的产品名,价格,会员价,产品说明,类型名,购买人次*/select P_name,product.Price,M_price,product.Memo,T_name,count(o_id)from c_type,product,orderlist where c_type.t_id=product.t_id and product.p_id=orderlist.p_id and prod
41、uct.p_id=pid group by P_name,product.Price,M_price,product.Memo,T_name/*根据产品号查询所有购买了该产品的客户留的评价以及管理员的回复*/select O_id,evaluate,reply from orderlist where P_id=pid order by O_id desc go 4.5 客户下订单客户可以在网站上下订单,一张订单可以订购多种产品,客户购买的每种产品都可以提供购买的数量和要求。在网上选产品时可以随时增减选购的产品种类和数量。订单号在客户开始选购产品时生成。根据这些规则,设计逻辑如下:数据库中需要
42、一张表,用来临时存放客户下单时选购的产品,当客户正式下单后该表的相应数据被删除。该表结构如下:表 4.1 临时订购表(temp_orderlist)字段名类型长度说明Oid char 10 订单号,主键,索引Pid Char 4 产品号,主键,索引quantity Int 数量,非空,大于0 Price Money 价格,非空,大于等于0 request varchar 200 要求Create table temp_orderlist(Oid char(10),Pid char(4),Quantity int not null check(quantity0),Price money not
43、 null check(price=0),Request varchar(200),Primary key(oid,pid)Go 数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-14-当客户选择第一个产品时就生成订单号,并将选择的产品信息存入上面的临时订购表中。生成订单号的函数如下:create function f_getoid()/*创建函数f_getoid 生成新的订单号*/returns char(10)/*该函数返回值为字符串*/begin declare oid char(10)/*声明变量用来存放订
44、单号、最大订单号*/declare maxoid char(10)select oid=(select max(o_id)from porder)/*从订单表中查询最大订单号放入oid 变量*/select maxoid=(select max(oid)from temp_orderlist)/*从临时订购表中查询最大订单号放入maxoid 变量*/if oid is null/*如果查到的2 各最大订单号有一个是空值,则将该最大订单号设为00000000*/set oid=0000000000 if maxoid is null set maxoid=0000000000 if maxoid
45、oid/*2 个最大订单号取大的那个放入oid 中*/set oid=maxoid set oid=right(0000000000+ltrim(oid+1),10)/*将oid 中的订单号+1 并保持 0000000?的队形*/return oid/*返回+1 以后的订单号*/end 客户选购了一个商品:create proc temp_orderlist_add/*创建存储过程temp_orderlist_add 用于实现客户选购商品*/oid char(10),/*参数为订单号、产品号、数量、价格、要求*/pid char(4),quantity int,price money,requ
46、est varchar(200)as insert into temp_orderlist values(oid,pid,quantity,price,request)/*将客户选购的商品信息写入临时订购表*/go 客户从订单中去掉了一个产品:create proc temp_orderlist_del/*创建存储过程temp_orderlist_del 用于实现客户删除选购的商品*/oid char(10),/*参数为订单号、产品号*/pid char(4)as delete from temp_orderlist where oid=oid and pid=pid/*根据订单号和产品号从临
47、时订购表中删除数据*/go 修改订购的产品的数量和要求:create proc temp_orderlist_modify/*创建存储过程temp_orderlist_modify用于实现客户修改选购商品的数量、要求等信息*/oid char(10),/*参数为订单号、产品号、数量、要求*/pid char(4),quantity int,request varchar(200)数 据 库 设 计 说 明 书 JonMMJonMM思 妍 鲜 花 网 店 数 据 库 的 设 计 与 实 现 绍兴职业技术学院-15-as update temp_orderlist set Quantity=qua
48、ntity,Request=request where oid=oid and pid=pid/*根据订单号、产品号更新该产品的订购数量和要求*/go 用户选完商品后,提交订单,根据提交的订单号以及客户号和是否付款在数据库的订单表和订购表中添加数据:create proc order_new/*创建存储过程order_new 用于客户提交订单,将临时订购表中的数据转移到正式的订购表中,并删除临时订购表的相关信息*/oid char(10),/*参数为订单号、客户号、订单状态*/cid char(8),status varchar(20)as declare pid char(4)/*声明变量用
49、来存放产品编号、数量、价格、要求、订购日期*/declare quantity int declare price money declare request varchar(200)declare odate datetime set odate=getdate()/*订购日期为系统当前日期*/insert into porder values(oid,odate,status,null,cid)/*将新的订单写入订单表*/declare temporderlist cursor for select pid,quantity,price,request from temp_orderlis
50、t where oid=oid/*声明游标,该游标能根据订单号查询临时订购表中的订购信息*/open temporderlist/*打开游标*/fetch next from temporderlist into pid,quantity,price,request/*读取第一条订购的商品信息*/while FETCH_STA TUS=0/*循环,只要游标中的数据没有读完*/begin insert into orderlist values(oid,pid,quantity,price,request,null,null)/*将一条订购信息写入订购表*/fetch next from tem