电子商务系统数据库设计

 数据库设计

几乎所有的WEB项目都是基于数据库的,这使得数据的设计在整个项目中的地位举足轻重。相关研究表明,在数据应用系统的开发中,项目成功50%靠数据库的设计。良好的数据设计往往能够减少开发的负担。

数据库设计是指对于一个给定的应用环境,通过合理的逻辑设计和有效的物理设计来构造较优的数据库模式,建立数据库极其应用系统,满足用户的各种信息需求。

从数据应用系统和开发的全过程来考虑,数据库的设计可分为六个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行与维护,按照这样的设计过程,数据库结构设计的不同阶段可形成数据库的各级模式。数据库设计的核心问题是如何从系统的观点出发建立一个数据库模式。一个良好的数据库应该充分反映物流发展变化的状况,充分满足组织的各级管理要求,同时还应该使后继系统开发工作方便、快捷,系统开发小,易于管理和维护。在物理设计阶段根据DBMS的特点和处理要求,进行物理储存安排。

1、数据库需求分析

eshop是一个典型的电子商务系统,针对它将要实现的业务功能,数据库中应该具有以下的模块:

(1)用户信息:其中应该包括用户编号、用户名、密码、账户金额、姓名、地址等内容。

(2)商品信息:包括商品编号、商品名称、商品价格、描述以及所属类别等。

(3)购物车:用来存储用户购物的信息,如商品编号、数量等。

(4)订单:一笔完整的订单记录应该包括它所相关商品集合以及各个商品的数量等信息。

(5)管理员信息:与用户信息类似,包括管理员编号、登录名、密码、角色类别等。

(6)管理员日志:包括日志编号、发生事件以及时间。

2、数据库概念结构设计

在数据库技术中,我们用模型的概念描述数据库的结构与语义,对现实世界进行抽象。表示实体类型及实体间联系的模型称为“数据模型”,其中之一就是实体联系模型(ER模型)。ER模型是独立于计算机系统的模型,完全不涉及信息在系统中的表示,只是用来描述某个特定组织关心的信息结构,这类模型称为“概念数据模型” 。

在电子购物商城系统中,存在用户、商品、购物车、订单、管理员等几个对象实体,以上述实体为例,一个用户对应多个商品,同时一个商品属于多个用户;一个用户对应多个购物车,同时一个购物车只属于一个用户;一个用户对应多个订单,一个订单只能属于一个用户;一个商品对应多个购物车,一个购物车对应多个商品;一个商品对应多个订单,一个订单对应多个商品;一个订单对应多个购物车,一个购物车只能属于一个订单;一个管理员对应多个用户、商品、购物车、订单,一个用户、商品、购物车、订单只能属于一个管理员。

由此可知用户和购物车之间、用户和订单之间、订单和购物车之间、管理员和用户、商品、购物车、订单之间都是一对多的关系;商品和购物车之间、用户和商品之间是多对多的关系。

根据上述分析可对应的实体.关系图如下:如图4.5所示用户和商品、订单之间的局部ER图,图4.6所示商品、订单和购物车之间的局部ER图,图4.7所示各实体之间总体ER图。

3、数据库逻辑结构设计

通过E-R图分析,下面设计具体的逻辑结构。

所涉及到的主要实体集及其属性如下:

用户(UserID、UserName、UserPwd、UserRealName、Sex、Address 、Email、Zipcode)

商品(ProductID、ProductName、ProductPrice、Intro、CategoryID、ClickCount)

购物车(RecordID、CartID、ProductID、CreatedDate、Quantity)

订单(OrderID、UserID、OrderDate、ProductID、Quantity、UnitCost)

管理员(AdminID、LoginName、LoginPwd、RoleID、RoleName)

4、数据库物理结构设计

本系统共涉及到9个表,分别是:用户信息表UserInfo、商品信息表ProductInfo、商品类别字典表Category、购物车表ShoppingCart、订单表Orders、订单信息表OrderItems、管理员信息表Admin、管理员角色字典表AdminRole和管理员日志表AdminAction。

主要设计思想:

(1)尽管在需求分析中,商品类别仅仅是商品的一个属性,但数据库设计中一般将其分离出去创建单独的表。事实上,这是一种面向对象的思想,这种做法有利于系统的扩展,例如商城的管理者将要拓宽业务、推出某种新类型的商品早,这样的设计将令其变得异常容易。同样的思想也体现在Admin表和AdiminRole表的设计中。

(2)由于订单可能包括多种商品,而且数量不一,所以用两个表来共同体现订单这个实体。在Orders表中存放订单的基本信息:订单号、所属用户的编号以及下订单的时间。而在OrderItems表中则存放订单的具体信息,每条记录体现某个订单所包含的某种商品的购买信息。

在本系统中数据库具体表结构的设计:

(1)用户基本信息表 UserInfo

用户信息表用来记录用户的一些基本信息,其结构如表4.1所示。

4.1  UserInfo的结构

编号

字段名称

数据类型

说明

1

UserID

Int

用户ID(主键)

2

UserName

Nvarchar(50)

用户登录名

3

UserPwd

Nvarchar(50)

用户密码

4

Question

Nvarchar(50)

密码提示问题

5

Answer

Nvarchar(50)

密码提示问题答案

6

Acount

Decimal

账户金额

7

UserRealName

Nvarchar(50)

用户真实姓名

8

Sex

Nvarchar(50)

性别

9

Address

Nvarchar(50)

地址

10

Email

Nvarchar(50)

电子邮件

11

Zipcode

Nvarchar(50)

邮编

(2)商品信息表 ProductInfo

商品信息表表示商品的基本信息,如表4.2所示。

4.2  ProductInfo的结构

编号

字段名称

数据类型

说明

1

ProductID

Int

商品编号(主键)

2

ProductName

Nvarchar(50)

商品名称

3

ProductPrice

Decimal

价格

4

Intro

Nvarchar(50)

商品介绍

5

CategoryID

Int

所属分类编号

6

ClickCount

Int

点击数

(3)商品分类表 Category

商品分类表用来表示商品类别信息。其结构如表4.3所示。

4.3  Category的结构

编号

字段名称

数据类型

说明

1

CategoryID

Int

商品分类ID(主键)

2

CategoryName

Nvarchar(50)

分类名称

(4)购物车表 ShoppingCart

购物车表用来存储用户购物的信息。其结构如表4.4所示。

4.4  ShopingCart的结构

编号

字段名称

数据类型

说明

1

RecordID

Int

记录ID(主键)

2

CartID

Nvarchar(50)

购物车ID

3

ProductID

Int

所购商品编号

4

CreatedDate

DateTime

购物时间

5

Quantity

Int

购买数量

(5)订单表 Orders

订单表保存每笔订单的基本信息。结构如表4.5所示。

4.5  Orders的结构

编号

字段名称

数据类型

说明

1

OrderID

Int

订单号(主键)

2

UserID

Int

所属用户ID

3

OrderDate

DateTime

成交时间

(6)订单详细信息表 OrderItems

订单详细信息表体现订单的细则,结构如表4.6所示。

4.6  OrderItems的结构

编号

字段名称

数据类型

说明

1

OrderId

Int

所属订单号(主键)

2

ProductID

Int

商品ID(主键)

3

Quantity

Int

该商品的购买数量

4

UnitCost

Decimal

该商品的单价

(7)管理员信息表 Admin

与用户信息表类似,管理员信息表用来保存管理员的基本信息,如表4.7所示。

4.7  Admin的结构

编号

字段名称

数据类型

说明

1

AdminID

Int

管理员ID

2

LoginName

Nvarchar(50)

管理员登录名

3

LoginPwd

Nvarchar(50)

管理员密码

4

RoleID

Int

管理员角色ID

(8)管理员角色表 AdminRole

管理员角色表用来表示不同的管理员角色类别,如表4.8所示。

4.8  AdminRole的结构

编号

字段名称

数据类型

说明

1

RoleID

Int

角色ID(主键)

2

RoleName

Nvarcha(50)

角色名称

(9)管理员日志表 AdminAction

管理员日志表表示管理员操作的每一条记录,如表4.9所示。

4.9  AdminAction的结构

编号

字段名称

数据类型

说明

1

ActionID

Int

日志ID(主键)

2

Action

Nvarchar(50)

角色名称

3

ActionDate

DateTime

日志时间

4

AdminID

Int

所属管理员编号

5、数据库设计图

设计的各数据表之间的关系如图4.8所示。

UserInfo

PK

UserId

UserName

UserPwd

Question

Answer

Acount

UserRealName

Sex

Address

Email

Zipcode

AdminRole

PK

RoleId

RoleName

Category

PK

CategoryId

CategoryName

ProductInfo

PK

ProductId

FK1

ProductName

ProductPrice

Intro

CategoryID

ClickCount

Admin

PK

AdminID

FK1

LoginName

LoginPwd

RoleId

Order

PK

OrderId

FK1

UserID

OrderDate

AdminAction

PK

ActionId

FK1

Action

ActionDate

AdminID

ShoppingCart

PK

RecordId

FK1

CartId

ProductID

Quantity

CreateDate

OrderItems

PK,FK1

PK,FK2

OrderId

ProductID

Quantity

UnitCost

图4.8  数据库设计图

数据库设计图说明如下:

PK(Primary Key)为主键,FK(Foreign Key)为外键,箭头代表两个表之间的关系,即某个表的PK与另一个表的FK之间的对应关系。

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值