php电商项目商品SKU与库存设计

面试题经常问道,如何设计库存,哪些库存呢?分类属性的库存:不同颜色 不同尺码的属性的库存,这时候需要针对具体的SKU商品创建表。

总体思路

1.商品关联商品类别,商品类别关联多个商品属性,其中指定某几个商品属性为SKU关键字段。例如,服装类别的颜色、尺码属性。

2.多个SKU商品属性值组合生成唯一的商品SKUID。例如,红色、L=1001,黑色、L=1002。

3.有了商品唯一SKUID就可以方便记录库存了,库存主键:仓库ID,商品ID,SKUID,库存精确到了组合的商品属性。

优缺点

 

1.灵活,能够应对各种行业商品的需求。

2.商品类别定义时很复杂,一般用户使用起来有难度,可以预置常用的商品类别属性模板解决。

商品模块详细设计

商品模块是支撑整个架构的核心,如果这块没设计好,那么所有后期的复杂的统计需求基本都满足不了。

 

 

 

为什么这样子设计属性看这里和这里,把品牌从类目中剥离出来是为了降低程序针对商品属性这块的复杂度。这里通过淘宝的添加宝贝的操作来说明上面的数据结构如何满足下面的需求

 

 

 

 

 

 

 

 

 

PS:本来要截玉兰油沐浴露的图,结果发现淘宝取消了以前选择毫升*买的多送得多组合SKU的添加商品方式,改成了一个SKU就是一个宝贝的编辑手段,呵呵,没办法,只有上面截个衣服的图,下面的数据却是快消品的。淘宝这样做这也是没办法的,这种快消品不同SKU,图片还不能用一样的,而且大部分用户搜索的时候呢,会喜欢直接搜索具体的毫升数,这也给我们提了个醒,不同的类目可能会是不一样的处理方式,就算是服装这种SKU相对标准的类目,也会有说在展示和搜索结果中,会放置一个产品的多个SKU,比如凡客的网站,一件衣服的几个颜色都会出现在类目搜索结果中,增加曝光度,吸引用户点击购买。

 

页面属性的编程实现可以参考这里。SKU存放在产品SKU表中,按我们的实际需求增加修改字段,比如我的表中多了ProductCode和BarCode字段,SKU的属性会拆分后存入产品基本属性值表,便于搜索或统计等需求。商品的基本属性全部打横存入商品的基本属性表中,那么SKU表的存储如下:

 

 

 

 

那么这个item是4013的产品在基本属性值表中的数据存储如下:

 

 

 

这里我是把所有的属性都打成一条一条存储在这个表中,那么能满足我们在日常业务的属性搜索,统计等需求。按属性搜索,这里必须要注意以下几点:

  • 1.不可能所有的属性都开放给用户或者我们的客户进行搜索,所以我们会在属性名表中有个字段(是否搜索字段)来人工控制哪些属性是搜索属性
  • 2.基本属性是同一个宝贝下面所有SKU都共有的,SKU属性是单个SKU独有的,所以搜索的时候还必须分清楚销售属性(销售属性组成SKU)和基本属性。
  • 3.属性图片的存储我并没有设计,因为我们是做快消品,没有这个需求。但是,如果我做的话我还会是在基本属性值表中加上”是否图片属性,是否使用默认图片,图片URL“3个字段来记录颜色属性。做属性搜索的时候比较方便。
  • 4.产品通过关键字搜索和属性搜索是分开的,两种搜索并不是一种解决方式,比如淘宝,在首页的搜索框是通过分词匹配宝贝标题的关键字,通过关键字的匹配程度,店铺的dsr评分权重来决定搜索结果,而属性搜索的时候则是匹配满足属性条件的宝贝。那属性又分第1点和第2点,所以还是挺麻烦的。