电商玩转SKU


SKU作为商城的一个比较复杂的模块,很容易把人给绕晕了,这里小可老师说一下自己的理解吧,不足之处还望指正。

一、SKU的概念

关于SKU的概念,网上有很多定义,有的偏商业有的偏程序,其实简单理解就是一种商品的“子类”有多少,比如新出的苹果11手机,有不同的颜色(黑白红黄),不同的容量(64、128、256),颜色和容量之间可以组合成不同“子类”,而这个子类就是消费者最终购买到的产品。说白了就是决定价格和库存的一个分类。

二、SKU的作用

上面提到了SKU的一个作用来定价格和库存,比如绿色比较火,那么128的绿色可能就5999,黄色比较丑,那么128的黄色可能定价5799。绿色的售罄了,库存为0,用户就不能购买了。如果不分类,那就只能随机发货了。

SKU还有个作用就是帮助更好的展示商品,苹果11基本就是容量和颜色来决定,但有的商品就比较复杂了,比如电脑,同一款电脑就有i5、i7,版本,内存有8g、16g,屏幕大小有13、14、15寸的,硬盘有256+1T,515ssd,显卡那就更多了(假设有3种),如果按照排列组合,可能能组合出2*2*3*2*3=72种,这还是比较保守的情况预计的,如果顾客进来发现这么多种类可以选择,他不会惊喜,可以选一会自己就烦了。所以SKU不是越多越好,当然也不是约少越好,根据商品的特质来制定SKU也是电商很重要的一个环节。

对于电商而言,SKU制定的合理与否也利于自己对商品的管理,进一步影响自己的进货、仓库分配等,这里就不展开了。

三、玩转SKU

我们这里先规范几个概念:

1、商品(goods):这里说的商品就是商品型号,比如苹果11、小米10,联想小新pro2020款等,当然商品的定义也不是绝对的,也是由电商来决定的,比如罗技的无线鼠标M275、M280几乎没啥区别,电商就当成一种商品来卖,这种情况文章暂时不做考虑,但大家要记住的是SKU的一切由电商决定,而不是程序员。

2、商品规格(spec):就是一个商品可以按照哪个标准分类,比如手机的容量就是一个规格,我们可以按照手机容量把苹果11分为64g版本、128版本。颜色也是一个规格、苹果11红色版本、绿色版本等。通常商品规格都是属于某个商品分类(商品分类的概念不用我讲了吧,当然实际上规格也可能属于某个商品,这里暂定为属于分类,方便理解)的,他们之间是一对多关系、一个商品分类有多个规格。这里面需要注意的是不同分类的规格名称可能相同,比如手机和电脑都有内存大小这个商品规格,但这两个内存是不一样的(主键不同)。但同一分类的规格不能相同,手机有了容量这个规格以后,就不能再给手机添加容量这个规格了。注意规格的划分不是固定的要根据商品实际情况来,例如上面提到的电脑的情况,通常i5版本的都是带8g内存,i7都是16版本,那这两个规格就可以合并成一个规格,分别是i5+8g、i7+16g。

3、规格属性或者规格值(specValue):有了规格(容量、颜色)只是有了这么一个分类的标准,具体还要看规格有哪些值,就上面提到的64、128、256、红色绿色等。规格和规格属性之间也是一对多的关系,和上面一样,一个规格可以有多个规格属性、一个规格属性只能属于一个规格,即使出现衣服颜色有绿色、手机颜色也有绿色的情况,那这两个绿色也不是一样的绿色(主键不同)。同理,一个规格的规格属性不能相同,手机的颜色有了绿色就不能再添加绿色了。

4、SKU。有了上面两个的概念,那么SKU的概念也就呼之欲出了,就是规格属性的组合,苹果11的绿色128g是一个SKU、黄色64g也是一个SKU。注意SKU不管怎么划分,必须具体到(电商认为)不能再分类的商品上,苹果11的绿色就不是一个合格的SKU,因为根据这个SKU无法决定价格和库存。当然具体精确到什么程度是由电商决定的,比如有些商品是一样的只是包装的不同,尽管新包装和老包装是不一样的,但电商认为这个差别可以忽略的话,那可以不必细分,将SKU合并,并取消包装这个规格。

所以解决SKU可以归结为解决四张表的问题,即

goods表,里面由id、名称、价格、库存

spec表,里面由主键、所属分类,规格名称

specValue表,里面有主键、所属规格、属性名称

sku表,里面有主键、所属商品、规格属性值价格库存等。

注意这里面价格和库存这两个字段,首先说价格,goods表中的价格字段可以用来显示商品的最低价格或者显示商品的价格范围,也可以不存在。然后是库存,可以是这个商品所有SKU的库存总和,也可以不存在。至于SKU表里的价格和库存,那就是这个SKU具体的价格和库存。

再说一下sku表里的所属规格属性,假设绿色id为1、红色id为2;64g id为3、128g id为4。那么绿色64g的手机SKU就是就有两个规格属性即1和3,红色128g的手机SKU也有两个属性即2和4,我们可以把这这些属性分别存储,这需要再增加一张表进行管理,或者是把SKU表中的规格属性放在一个字段当中,用,-等分隔符连接,那么绿色64g的手机的sku表的规格属性就是1-3了。前者的好处是符合数据库的范式,且能很好的解决后者1-3 3-1是不同取值但代表的是一个sku的问题,后者的好处是减少了一张表,再查找时特别方便,因为数据库操作最多的还是查询的操作,具体怎么取舍,根据实际情况来即可。

以上只是SKU的基本原理,实际实施起来的时候要原比这个复杂的多,因为不同的电商对不同商品的SKU的制定规则都是不尽相同的大家可以多看看各大平台的处理规则,灵活运用。

四、单规格VS多规格

上面提到的商品都是存在多规格的商品,有些商品没有什么规格,比如书籍、唱片等,我们在前台展示商品时是展示SKU还是商品,这需要进行逻辑上的判断,假设单规格商品我们认为其没有SKU,那么商品的价格库存等信息需要存储在goods表中,那这种情况下goods表中的价格、库存字段就必须存在。在展示商品时,需要对商品类型进行判断,如果是单规格的则直接展示goods表中信息即可,如果是多规格商品,则进一步获取商品sku进行展示。

上述方式会增加业务逻辑的复杂性,我们可以为单规格商品添加一个SKU,这样我们在处理这两种商品时可以采用同样的方式进行处理,当然这样做也会增加表的数据。对于单规格商品在商品详情页显示规格又会显得很奇怪,所以还是需要进行判断,总之这两种方式各有优劣,具体需要结合业务逻辑来选择,更重要的是要服务电商,不要把烧脑的环节交给电商。

五、ER图或许更直观

sku问题的实现其实不难,难点在于如何设计表,相信看完上面我说的内容,很多小伙伴已经是一脸懵逼的状态,不要紧,翠花,上图:

 

 

 这种情况针对的是商品SKU表中直接存放该sku的全部规格属性,那么sku表中就需要添加这么一个字段,用来存储该sku拥有的全部规格属性,可以用,-等符合分隔,例如1-2-4,2,3,6。同时我们注意到,1-2-4 1-4-2 2-1-4 2-4-1 4-1-2 4-2-1这六种情况其实代表的内容是一致的,但是在插入数据库进行唯一性判断时是无法判断出来的,这时候我们可以在前端进行控制,让规格按照一定的顺序排序,那么以上6种情况都会转换成一种情况处理。再一种处理方式就是入库时对数据进行排列组合,把1-2-4拆成1 2 4再把所有的情况组合起来,以此来检查唯一性。不管采取什么方式,都尽量不要对数据表进行遍历操作。

转载:
小可ThinkPHP学堂: https://www.xiaokethinkphp.com/thread-76-1-1.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM