新零售平台的数据库设计(二)

上一篇我们设计完成了商品表,以及库存表的设计。

新零售平台的数据库设计(一)

这一篇我们考虑如何设计好用户表以及订单表。

三.围绕用户表的设计

除了常见的用户信息之外,考虑有哪些特殊的需求?

  • 用户的收货地址如何设计
  • 实现会员制以及针对会员制的折扣
  • 实现跟用户直接相关的折扣券机制

设计地址表,避免用户表过于冗杂。

设计会员表,管理会员等级及优惠信息,方便表的维护。

设计折扣券表,包括有效期,优惠数额,优惠条件等等。

用户表跟以上三种表的关系如下所示:
新零售平台的数据库设计(二)_第1张图片
因为折扣券表跟用户表是多对多的关系,需要维护一个关联表。

用户表的ER图如下所示:
新零售平台的数据库设计(二)_第2张图片
用户表中的密码属性并不是用户设置的密码,而是经过AES加密的密码。
AES相比MD5的优势在于可解密。
MYSQL集成了AES加密函数,密钥设置为动态密钥,比如用户名前三位。

但是为了防止出现乱码,进行一次16进制的转换。
因此插入数据库的密码实际是AES加密之后的16进制的数据。

四.订单表的设计

订单表是核心表之一,关联了之前设计的所有核心表。

订单表的设计核心问题是处理多个商品跟订单之间的关系

有两种思路

  1. 使用JSON格式,在订单表维护多个商品
  2. 单独创建订单详情表。

方案1的局限性在于

JSON类型的数据归根结底还是字符,便于存储但不便于检索。

则订单表与订单详情表的关系图如下:
在这里插入图片描述

订单表的ER图如下所示:
新零售平台的数据库设计(二)_第3张图片
这里为什么需要在主键之外又设置一个订单编号呢?

主键是没有实际意义的数字,而订单编号可以根据算法代表一定实际含义。

在订单详情页就只需要标记出订单编号,商品编号,商品数量以及商品价格。

需要注意一点,在订单详情页需要设置订单编号与商品编号为联合主键,保证一个订单里不出现重复的商品,多件商品体现在数量上。

你可能感兴趣的:(新零售数据库设计与部署,mysql,数据库)