基于B2C网上商城前台系统数据库设计与实现

2020-11-20 08:03王柯梦王瑞平
广西质量监督导报 2020年9期
关键词:主键类别订单

王柯梦 王瑞平

(1.商丘工学院 河南 商丘 476000;2.郑州商学院 河南 巩义 451200)

一、引言

近年来,随着“互联网+”、“大数据”等技术的快速普及,网上商城也进入了发展迅猛期。电子商务的出现显然已经对人们的购物方式产生了巨大的影响,从原来的店铺购物转移到在线购物。B2C网上商城系统是指在网络上创建一个虚拟的购物商城,实现用户线上购物需求。目前,各式各样的电子商务网站层出不穷,系统功能的实现已经相对成熟,但这些系统一般偏向于整个项目功能的设计与实现,而忽视了数据库设计。在数据库设计方面,仅仅给出了数据表结构的说明,缺少了数据库的概念设计和逻辑设计。基于此,本文以一个网上购物网站为例,探析电子商城前台系统数据库的设计问题,以期能为系统功能实现提供数据库设计的有力支撑。

二、需求分析

对用户网上购物行为进行调查,可以得出,目前主流的网上商城系统主要分为前台商品销售和后台数据管理两大模块,本文主要对前台商品销售模块,进行数据库的分析与设计。会员进入到商城首页,可以浏览各种商品,或者根据自己感兴趣的商品类别、商品信息等搜索、查询商品。系统规定,游客在注册成为网站会员以后才能够对商品进行购买。

通过上述需求分析,网站主要能够实现的功能如下:开发具有强大搜索和高级查询功能,能够让用户快检索出自己所喜欢的商品;实现网上购物流程:浏览商品—订购商品—提交订单—支付货款;用户查询服务功能,可以查询订单详情。由上述分析可得出,用户具有的功能包括:浏览商品、按类别检索商品、查看商品详细信息;订购商品、生成订单、查看订单;查询、修改个人信息;评价商品等。

三、数据库设计

(一)概念设计

概念设计是指对系统需求分析中得到的信息,进行分类、组织和总结,归纳得出系统中的实体、实体的属性、实体与实体之间的联系等,使用E-R模型,设计得出系统的概念模型。

(1)系统实体

根据需求分析,网上商城前台系统的实体集可抽象为:用户、商品类别、商品,每一个实体应该具有以下属性,下划线标记的为主键,绘制的系统实体图如图1所示。

图1 系统实体图

用户:用户编号、用户昵称、密码、电话、地址等。

商品类别:类别编号、类别名称。

商品:商品编号、商品名、简介、定价、库存数量等。

(2)实体与实体之间的联系

一种商品只属于一个商品类别,而一个商品类别中可以包含多个商品,即商品类别和商品之间是一对多的联系。

用户通过订购商品生成订单联系,一个用户可以订购多个商品,每个商品也可以被多个用户订购,即用户和商品之间的订购联系是多对多的。

用户购买收到商品以后,可以对商品进行评价,一个用户可以评价自己所购买的多种商品,同时一种商品也可以被多个用户所评价,派生评价内容、评价时间两个属性,因此用户和商品之间还存在一个多对多的评价联系。

(3)E-R模型

通过对系统实体、实体属性、实体与实体之间联系进行分析,可以得到系统的E-R图(省略了实体属性),如图2所示。

图2 系统E-R图

(二)逻辑设计

数据库设计中的逻辑设计是指将概念设计中的E-R模型转换为关系模式的过程。

(1)实体转换为关系模式

用户(用户编号,用户昵称,密码,电话,地址)PK:用户编号。

商品类别(类别编号,类别名称)PK:类别编号。

商品(商品编号,商品名,简介,定价,库存数量)PK:商品编号。

(2)联系转换为关系模式

E-R模型中共设计了四个联系:商品和商品类别之间属于联系、用户下订单联系、商品和订单之间的联系以及用户评价商品联系。前三个联系是1:N的联系,在转换为关系模式时,只需要将1端的主键及其派生出的属性放到N端即可。最后一个M:N的联系,必须转换成一个新的关系模式。

商品(商品编号,商品名,简介,定价,库存数量,类别编号)PK:商品编号,FK:类别编号。

订单(订单编号,下单时间,用户编号,商品编号,收货人,电话,地址)PK:订单编号,FK:用户编号、商品编号。

评价(评价编号,用户编号,商品编号,内容,时间)PK:评价编号,FK:用户编号、商品编号。

综上可知,网上商城前台系统可以转换为用户、商品类别、商品、订单、评价5个关系模式。

(三)物理设计

用户表(User)用来储存用户注册时的基本信息,包括用户编号(UID,int(4),主键)、昵称(UName,varchar(20))、登录密码(Upwd,varchar(16))、电话(Utel,char(11))、地址(Uadd,varchar(25))等信息。

商品类别表(Type)用来储存商品类别的基本信息,包括类别编号(TID,int(4),主键)、类别名称(TName,varchar(20))等信息。

商品表(Product)用来储存商品的基本信息,包括商品编号(PID,int(4),主键)、商品名称(PName,varchar(25))、简介(Pjianjie,text)、定价(Price,Decimal(10,2))、库存数量(Pnum,int)、商品类别(TID,int(4),外键)等信息。

订单表(Order)用来储存用户订购商品的基本信息,包括订单编号(OID,int(4),主键)、下单时间(Otime,datetime)、用户编号(UID,int(4),外键)、商品编号(PID,int(4),外键)、收货人姓名(Oname,varchar(20))、地址(Oadd,varchar(40))、电话(Otel,char(11))等信息。

评价表(Appraise)用来储存用户评价商品的基本信息,包括评价编号(AID,int(4),主键)、用户编号(UID,int(4),外键)、商品编号(PID,int(4),外键)、内容(Acon,text)、评价时间(Atime,datetime)等信息。

四、数据库实现

在创建数据库之前,首先要根据系统的实际应用情况来分析和估算数据库所占用的内存大小、存储位置、数据文件和日志文件的增长速度,使用CREATE DATABASE语句实现数据库的创建。经过对数据库的设计可知,网上商城的前台系统主要包括用户、商品类别、商品、订单和评价5张基本表,使用CREATE TABLE实现基本表的创建,并应用PRIMARY KEY、FOREIGN KEY(<字段名>)REFERENCES <主键表(字段名)>、CHECK等关键词实现数据库的完整性。在创建表时,需要特别注意,应该先创建主键表,然后再创建外键表,如创建完商品类别表之后,才能创建商品表,创建完用户表和商品表后,才能够创建订单表和评价表。随着应用的需要和环境的变化,如若需要修改已经创建好的表结构,可以采用ALTER TABLE语句实现。

在系统实现的过程中,连接数据库是其主要的操作之一,本部分以PHP连接SQL SERVER数据库为例来阐述数据库的连接问题。在连接数据库之前,首先要明确集成环境是否支持SQL SERVER。如若不支持,首先需要下载Microsoft SQL Server PHP 驱动程序,然后配置php和apache两个目录下的php.ini文件。重启apache后,使用sqlsrv_connect(“数据库服务器地址”,array(“UID”⟹“数据库用户名”“PWD”⟹“数据库密码”,“Database”⟹“数据库名”))实现数据库的连接。

数据库连接是一种较为关键的、有限的、昂贵的资源类型,对数据库的连接管理直接影响到整个系统的健壮性及程序实施的性能。数据库使用完之后,需要在合适的时间释放数据库资源,避免因没有释放数据库连接而引起的数据库连接漏洞问题。

五、总结

数据库作为程序中数据的主要载体,在整个系统的实现过程中发挥着重要的作用。经过不断的完善和修正,本数据库的概念设计、逻辑设计及物理实施,能够供学生的课程设计、毕业设计及企事业单位系统的基本需求。在对网上商城后台系统进行数据库设计,或者在此基础上添加部分功能时,可以在本设计上进行添加和修改。在对其他系统进行数据库设计时,本设计也可以为其提供借鉴。

猜你喜欢
主键类别订单
春节期间“订单蔬菜”走俏
订单农业打开广阔市场
基于Go 实现的分布式主键系统研究
基于外键的E-R图绘制方法研究
“最确切”的幸福观感——我们的致富订单
壮字喃字同形字的三种类别及简要分析
服务类别
多类别复合资源的空间匹配
怎样做到日订单10万?
中医类别全科医师培养模式的探讨