sku是什么?(SKU算法解析)

2020-01-07 15:47
SKU=Stock Keeping Unit(库存量单位)同一型号的商品,或者说是同一个产品项目(商品条形码是针对企业的产品项目来进行定义的),因为产品与产品之间有某些属性不同,用以区别开这些不同商品的属性即商品变异属性,又称作SKU属性,因为它决定了SKU的绝对数量。

  sku是什么?(SKU算法解析)

(图片来源于网络)


  什么是SKU


  SKU=Stock Keeping Unit(库存量单位)同一型号的商品,或者说是同一个产品项目(商品条形码是针对企业的产品项目来进行定义的),因为产品与产品之间有某些属性不同,用以区别开这些不同商品的属性即商品变异属性,又称作SKU属性,因为它决定了SKU的绝对数量。

  从货品角度看,SKU是指单独一种商品,其货品属性已经被确定。

  只要货品属性有所不同,那么就是不同的SKU。属性包括很多,一般的理解货品属性包括:品牌、型号、配置、等级、花色、成分、用途等。

  从业务管理的角度看,SKU还含有货品包装单位的信息。

  例如:SKU#123是指330ml瓶装黑啤(以瓶为单位);SKU#456是指330ml瓶装黑啤(以提为单位,6瓶为1提);SKU#789是指330ml瓶装黑啤(以箱为单位,24瓶为1箱)。由于计量单位(包装单位)不同,为业务管理需要,应划归于不同的SKU,当然可以有单位转换的算法协助转换SKU。

  从信息系统和货物编码角度看,SKU只是一个编码。

  不同的一种商品(商品名称)就有不同的编码(SKU#)。而这个编码与被定义的商品做了一一对应的关联,这样我们才可以依照不同SKU的数据来记录和分析库存和销售情况。当你使用WMS或者ERP系统的时候,你会发现每一个SKU编码是有精确的商品信息含义。


  SKU算法


  我们以手机为例,手机的产品数据如下:

  尺寸:5.0寸、4.5寸

  型号:土豪金、红、黑

  内存:128G、64G

  但是后台可选的规格只有三种:

  4.5寸,红,64G

  4.5寸,土豪金,128G

  5.0寸,黑,128G

  现在这几种类型一共有2 * 3 * 2 = 12种排列组合,然而只有3种组合是正确的(其中还要排除库存为0的情况)一开始先保存好每一个按钮和每一列的位置进入一个List> 的数组中,TagEnable记录着每一个按钮的状态(0代表者正常,1代表选中,2代表不可选(库存为0||无规格));然后当用户点击的时候,用Map 记录选中的按钮和文字;并把每一个按钮先设置为不可点击,之后根据文字去对按钮进行设置状态。

  这种算法是比较直接的一种实现,但是很繁琐,循环嵌套循环,可以简单分析下算法复杂度,如果sku属性组合元素的总和数用m来表示,可选的数据的长度是n的话,那么算法的步骤大概是m*n,这看起来好像不怎么复杂;不过每次判断一个sku组合是否和result中的 组合匹配,却不是一个简单的过程,实际上这可以看做是一个字符串匹配的一个算法了, 最简单的还是使用正则匹配,m * n次正则匹配,这样就不怎么快了吧。正则表达式很不稳定,万一sku组合中有一些特殊字符,就可能导致一个正则匹配没能匹配到我们想要的表达式。

  当用户全部选中的时候,根据这种算法,只会出现一种情况,就是未选中的全部都变成不可选(即变成灰色),这大大影响了用户的体验。

  sku算法是利用数学的集合思想来写的。即先把可能的排列组合列出来,即取出集合中的所有子集,数学上叫做幂集。

  就是如果第一条数据[5.0寸, 黑, 128G]可选,

  那么以下的组合肯定存在:

  5.0寸

  黑

  128G

  5.0寸、黑

  5.0寸、128G

  黑、128G

  5.0寸、黑、128G

  我们可以利用sku算法取出所有的组合,再根据这些组合的集合,记为U,去判断用户点击按钮时,去设置其他按钮的状态。

  例如:当用户进行如下的选择:5.0寸、128G

  那么如何判断 4.5寸这个按钮的状态呢?只需判断4.5寸、128G是否可选(集合U是否存在(4.5寸-128G)这个组合并且库存不为0),以此类推。


  以上就是关于sku及其算法的内容。

声明:本站所发布部分文章与图片信息来源于互联网,仅供参考学习使用,版权归属于原作者。所转载文章言论不代表本站观点,如有侵犯原作者的权利请发邮件联系站长(contact@homebi.com),我们收到后立即删除。
标签:
1 +1