第 4 章 数据库设计
4.1 数据库设计原则
4.2.数据库概念结构设计
4.3 数据库表设计
4.4.本章小结
前面内容请移步
基于 SpringCloud 的在线交易平台乐优商城的设计与实现(三)
相关免费源码资源
乐优商城
第 4 章 数据库设计
4.1 数据库设计原则
在系统中,数据库用来保存数据。数据库设计是整个系统的根基和起点, 也是系统开发的重要环节, 它的设计好坏直接关系到系统是否具有较高的可 靠性和稳定性, 重要性不言而喻。良好的数据库设计能够提高查询效率、保 证数据准确、 减少数据冗余。本文设计的电商平台采用开源的关系型数据库 MySQL 作为数据库。通过分析,系统确定了如下数据库设计规则 :
(1) 数据库表都有主键字段 ,且非空唯一,但主键的生成方式可以不同
(2) 数据库表若有外键 ,外键字段不能为空
(3) 若两张表之间关系复杂, 采用第三张映射表来关联维护两张表之间的关 系
(4) 数据库表名和字段都采取英文字母加下划线的方式命名, 英文字母全部 小写
(5) 添加一些必要的冗余字段,例如:创建时间、修改时间、备注等,方便 后期维护拓展
4.2.数据库概念结构设计
数据库概念结构设计是把需求分析得出的需求抽象成概念模型的过程。 通过系统的需求分析需要确定数据库中需要哪些实体、这些实体的属性和实 体之间的联系。实体之间的联系包括一对一、一对多和多对多。E-R 图能够 反映实体与实体之间的联系, 通过 3.3 小节的系统功能性需求分析我们知道 系统必然存在最重要的 2 个实体,分别是商家和用户。该电商平台的 E-R图如图所示:
图 4-2 系统实体 ER 图
4.3 数据库表设计
数据库物理结构设计主要工作为设计数据库表结构, 本文设计的电商平台数
据库实体表设计总表如表 4-1 所示:
表 4-1 表总体结构设计
表名 | 主键 | 外键 | 表说明 |
tb_category | id | 商品分类表 | |
tb_brand | id | 商品品牌表 | |
tb_category_brand | brand_id category_id | brand_id category_id | 品牌分类中间表 |
tb_spu | id | brand_id cid1 cid2 cid3 | 商品表 |
tb_sku | id | spu_id | 商品 sku 表 |
tb_spec_group | id | category_id | 商品规格组表 |
tb_spec_param | id | category_id group_id | 商品规格参数表 |
tb_user | id | 用户 id | |
tb_address | id | user id _ | 用户地址表 |
tb_order | order_id | user id | 订单表 |
tb_order_detail | id | order_id sku_id | 订单详情 |
tb_order_logistics | id | order_id | 订单物流 |
由于篇幅原因且表结构众多, 在此不再列出全部数据库表结构 ,以分类表、
商品表、用户表的表结构为例进行介绍:
商品分类共分三级, 一级与二级, 二级与三级分类之间都是 1 对多关系。商
品与分类表中的第三级分类关联:
表 4-2 商品分类结构设计
字段名称 | 字段类型 | 允许为空 | 说明 |
id | bigint(20) | 自增编号 | 编号 |
name | varchar(50) | 否 | 分类名 |
parent_id | bigint(20) | 否 | 父类目 id |
is_parent | tinyint(1) | 否 | 是否是父类目 |
sort | tinyint(1) | 否 | 顺序 |
create_time | timestamp | 否 | 创建时间 |
update_time | timestamp | 否 | 更新时间 |
商品表用来存储商品,结构如下:
表 4-3 商品表结构
字段名称 | 字段类型 | 允许为空 | 说明 |
id | int(4) | 自增编号 | 编号 |
name | varchar(50) | 否 | 商品名称 |
title | varchar(50) | 否 | 商品标题 |
cid1 | bigint(20) | 否 | 商品分类 1 级分类 |
cid2 | bigint(20) | 否 | 商品分类 2 级分类 |
cid3 | bigint(20) | 否 | 商品分类 3 级分类 |
brand_id | bigint(20) | 否 | 品牌 id |
saleable | tinyint(1) | 否 | 是否上架 |
create_time | timestamp | 否 | 添加时间 |
update_time | timestamp | 否 | 更新时间 |
用户表结构如下:
表 4-4 用户表结构
字段名称 | 字段类型 | 允许为空 | 说明 |
id | int(4) | 自增编号 | 编号 |
username | varchar(50) | 否 | 用户名 |
password | varchar(50) | 否 | 密码 |
phone | varchar(11) | 否 | 电话 |
create_time | timestamp | 否 | 添加时间 |
update_time | timestamp | 否 | 更新时间 |
4.4.本章小结
本章主要介绍了系统概要设计包 括系统架构设计和系统数据库设计。 其中, 系统架构设计对该电商平台整体架构进行设计, 系统数据库设计对数据库 设计原则、数据库概念结构设计 、数据库物理结构设计进行了阐述 。