进销存小程序(二)数据库设计
1. DB设计
先看图,后续会把powerdesign源文件打包上传,可以根据powerdesign源文件直接生成mysql建表语句。
2. 设计说明
2.1. 用户、店铺
-
用户表:微信openid是微信服务端唯一定位自然人的一个标识,每次都是通过小程序临时code换取后,在程序中确认当前的操作人员。
-
店铺表:每个店铺只有一个掌柜,掌柜id是用户表的某个用户id。
-
用户-店铺关联表:一个用户可以加入多个店铺、一个店铺也可以有多个店员和1个掌柜,典型的多对多。
2.2. 商品表
- 商品分类:目前是在小程序端默认,只有“手机”这个分类
- 商品品牌:输入字段。例如:苹果、三星、小米、华为等
- 货品款号:品牌下的款号。例如:P40
- 商品库存:这个是冗余字段,冗余的库存表“商品库存”字段
- 店铺id:这个商品属于哪个店铺,一个商品只能属于一个店铺。当用户创建商品时,当前用户所在的店铺,就是这个商品的归属店铺。
3. 商品-规格属性关联表
-
这是一个1对多的表,1个商品可以有多个属性。例如:华为(品牌)P40(款号)这个商品,可以有颜色、存储、CPU、屏幕尺寸等多个属性。
-
属性单位:例如存储这个属性,“属性描述”值是“存储”,“属性单位”是“G”,属性值,可以是64、128、256、512等,属性值的存储说明见下一点。
-
要注意的是,比如颜色这个属性,是可以应用在多个商品上的;并且,颜色这个属性,可以有多个值,比如星空灰、尊贵白等多个值,这多个值的存储,就是在下面的“商品-规格属性数据表”中。
4. 库存表
每次新建一个商品,都会初始化一条库存记录,库存为0,均价0,总价0。
- 商品id:一个商品就只有唯一1条库存表记录
- 最高价、最低价目前没有填充
- 均价:根据每次入库和出库的数量、总价进行计算
- 库存总价:根据每次入库和出库的数量、总价进行计算
5. 库存变动记录表
- 库存id:关联库存表的主键id,1个商品库存表记录,在这里会有n条数据,1对多关系。
- 变动方向:枚举值,只能是“入库”或“出库”
- 变动id:如果变动方向是入库,那么变动id就是入库表的id;如果是出库,那变动id就是出库表id
- 其他字段不再赘述
6. 入库表、出库表
基本是字面意思。
出库表的“出库类型”是枚举,目前可支持的是:销售开单、移库、其他。