电商项目数据库设计 | 第三篇:库存相关表结构

时间:2024-03-19 20:27:11

电商项目数据库设计-库存


回顾

在上一篇围绕商品设计表的时候,我们并没有去设计库存字段的,所以接下来我们就来谈谈库存到底该怎么去设计。

首先,我们看看之前设计的商品表,他是与SPU表进行多对多的关联,并建立了中间表,我们在设计这个数据库之前,是参照了京东、苏宁易购的,因为像这种大型的电商项目,他们都是有自己的仓库,还有自己的门店,特别是苏宁易购,现在线下很多大型商场都会看到他们的身影。

所以在这里,我们就仿照他们来设计我们的库存。


省份表与城市表

在我们设计库存之前我们先来设计这两张表

  • 省份表
    省份是唯一的,所以对省份进行唯一性约束
    电商项目数据库设计 | 第三篇:库存相关表结构
  • 城市表
    电商项目数据库设计 | 第三篇:库存相关表结构
  • 关系
    省份和城市是一对多的关系,一个省份可以多多个城市,所以我们在城市表中关联省份的主键

仓库与门店

仓库与门店其实是一种多对多的关系,一个仓库可以为多个门店供货,同时一个门店也可以卖多个仓库的货

在这里我们思考一个问题,我们一般在设计多对多关系表的时候,会建立一个中间表,在我们这种业务情况下,仓库和门店是否需要设计中间表?

  • 仓库表
    设计仓库表的时候,因为一个城市会有多个仓库,所以仓库表关联城市id,
    电商项目数据库设计 | 第三篇:库存相关表结构

  • 门店表
    设计门店表的时候,因为一个城市会有多个门店,所以门店表关联城市id,
    电商项目数据库设计 | 第三篇:库存相关表结构

接下来我们来设计关联表,如果按照这个思路就不符合我们的业务要求了,我们想象,如果我们把仓库与门店设计了中间表,是不是就代表我们把门店与仓库绑定一起了,如果现在门店需要商品,而关联的仓库没有货了,也就不能实现异地调货了

同时,为了方便管理我们建立了省份表以及城市表,所有的跟地区有关的参数都要标注出属于哪个城市编号,目的是为了实现发货时的就近调货以及计算运费

所以我们就需要把仓库表、门店表分别于商品表进行关联

  • 仓库表与商品表关联
    电商项目数据库设计 | 第三篇:库存相关表结构

  • 门店表与商品表关联
    电商项目数据库设计 | 第三篇:库存相关表结构


总结

  1. 门店表与仓库表多对多的关系,但是不设计中间表,因为设计中间表无法实现异地调货
  2. 所有与地区有关的参数都要标注出属于哪一个城市标号,目的是为了实现发货时的就近调货以及运费计算
  3. 仓库表、门店表分别于商品表进行多对多关联,设计中间表来维护库存字段
  • 表之间关系
    电商项目数据库设计 | 第三篇:库存相关表结构