11.4.4 数据库设计

11.4.4 数据库设计

数据库是在线购物网站中最重要的组成部分之一, 该网站所需要的全部数据都来自数据库。当今绝大多数Web 系统的数据都是存储在关系型数据库当中, 针对不同的应用都需要进行专门分析并设计出相应的实体关系模型, 进而依照实体关系模型对数据库进行详尽而细致的逻辑分析和物理设计, 以求建立良好的数据库存储结构, 从而能够在实现数据存储的前提下为以后的功能扩展提供可能性。根据需求分析阶段对用户具体需求进行深入的调查和研究而得到的分析结果, 确定数据库中需要存储的数据信息, 并为由用户需求评估可能在将来的扩展提供可能性, 综合上述所有因素建立数据库存储模型。

1.数据库概念设计

概念设计包括实体和联系两种类型。通过前面对系统的分析, 得到完成在线购物网站功能所需的一系列数据库实体, 包括(系统注册)、(商品) 分类、(用户对商品的) 评价、订单、商品。由此可以得出各个实体-属性图, 进一步可得到系统的E-R 图, 如图11-12所示。

图11-12 系统E-R 图

2.数据表设计

系统E-R 图为数据库的概念结构, 物理结构需要用数据表来体现。数据表中包含字段名称、代码、数据类型、是否允许为空以及是否为主键这些信息, 更为具体地体现系统中的数据信息。数据表的设计是数据库设计的核心内容。这里使用MySQL 数据库, 根据上一节对系统分析得出的概念模型来设计表格, 表示为数据库中的一个表。本系统主要包括记录商品、用户、订单信息的多个表格, 而这也是考虑到一个完整网站中都是由许许多多的数据库表组成的, 如果要全部列出, 则很难实现, 所以选择几个最重要的库表来对本系统的数据库表设计进行初步了解, 如下选取9张数据库表进行介绍。

(1) 用户表(User)

用户表存储用户注册的基本信息, 包括用户编号、用户名、密码等详细信息。当用户登录平台时, 程序会根据该表中有没有含有用户名以及用户名和密码是否匹配去判断它的登录状态。用户表的详细设计如表11-12所示。

表11-12 用户表

(2) 分类表(Category)

分类表用来储存分类的名称和编号, 包括分类编号、分类名等详细信息。分类表的详细设计如表11-13所示。

表11-13 分类表

(3) 属性表(Property)

属性表用来存放某个分类的产品拥有的属性信息, 包括属性编号、分类编号、属性名等详细信息。属性表的详细设计如表11-14所示。

表11-14 属性表

(4) 产品表(Product)

产品表用来存放一款产品的各项信息, 包括产品编号、产品名称、小标题、原始价格、促销价格、销量、库存等详细信息。产品表的详细设计如表11-15所示。

表11-15 产品表

(5) 属性值表(Property Value)

属性值表用来置放某一款独立产品的属性相对应的属性值, 包括属性值编号、产品编号、属性编号、属性值等详细信息。属性值表的详细设计如表11-16所示。

表11-16 属性值表

(6) 产品图片表(Product Image)

产品图片表用来存放产品图片的信息, 包括产品图片编号、产品编号、图片类型等详细信息。产品图片表的详细设计如表11-17所示。

表11-17 产品图片表

(7) 评价表(Review)

评价表存放的是商城用户在购买到商品之后, 对商品进行评价的信息, 包括产品编号、评价内容、用户编号、产品编号、评价创建日期等详细信息。评价表的详细设计如表11-18所示。

表11-18 评价表

续表

(8) 订单表(Order)

订单表存放的是商城的注册用户在系统中下单后填写或产生的订单信息, 包括订单编号、订单号、收货地址、邮编、收货人信息、手机号码、用户备注信息、订单创建日期、支付日期、发货日期、确认收货日期、用户编号、订单状态等详细信息。订单表的详细设计如表11-19所示。

表11-19 订单表

(9) 订单项表(Orderitem)

订单项表存放的是订单的每一项信息, 包括订单项编号、产品编号、订单编号、用户编号、购买数量等详细信息。订单项表的详细设计如表11-20所示。

表11-20 订单项表