电商项目数据库设计-库存
回顾
在上一篇围绕商品设计表的时候,我们并没有去设计库存字段的,所以接下来我们就来谈谈库存到底该怎么去设计。
首先,我们看看之前设计的商品表,他是与SPU表进行多对多的关联,并建立了中间表,我们在设计这个数据库之前,是参照了京东、苏宁易购的,因为像这种大型的电商项目,他们都是有自己的仓库,还有自己的门店,特别是苏宁易购,现在线下很多大型商场都会看到他们的身影。
所以在这里,我们就仿照他们来设计我们的库存。
省份表与城市表
在我们设计库存之前我们先来设计这两张表
- 省份表
省份是唯一的,所以对省份进行唯一性约束
- 城市表
- 关系
省份和城市是一对多的关系,一个省份可以多多个城市,所以我们在城市表中关联省份的主键
仓库与门店
仓库与门店其实是一种多对多的关系,一个仓库可以为多个门店供货,同时一个门店也可以卖多个仓库的货
在这里我们思考一个问题,我们一般在设计多对多关系表的时候,会建立一个中间表,在我们这种业务情况下,仓库和门店是否需要设计中间表?
-
仓库表
设计仓库表的时候,因为一个城市会有多个仓库,所以仓库表关联城市id, -
门店表
设计门店表的时候,因为一个城市会有多个门店,所以门店表关联城市id,
接下来我们来设计关联表,如果按照这个思路就不符合我们的业务要求了,我们想象,如果我们把仓库与门店设计了中间表,是不是就代表我们把门店与仓库绑定一起了,如果现在门店需要商品,而关联的仓库没有货了,也就不能实现异地调货了
同时,为了方便管理我们建立了省份表以及城市表,所有的跟地区有关的参数都要标注出属于哪个城市编号,目的是为了实现发货时的就近调货以及计算运费
所以我们就需要把仓库表、门店表分别于商品表进行关联
-
仓库表与商品表关联
-
门店表与商品表关联
总结
- 门店表与仓库表多对多的关系,但是不设计中间表,因为设计中间表无法实现异地调货
- 所有与地区有关的参数都要标注出属于哪一个城市标号,目的是为了实现发货时的就近调货以及运费计算
- 仓库表、门店表分别于商品表进行多对多关联,设计中间表来维护库存字段
- 表之间关系