1、SKU及相关概念定义
在设计商品SKU以前,首先让咱们熟悉一下SKU和相关的一些概念。
# 什么是SKU:
SKU=Stock Keeping Unit(库存量单位)
同一型号的商品,或者说是同一个产品项目(商品条形码是针对企业的产品
项目来进行定义的),由于产品与产品之间有某些属性不一样,用以区别开这些
不一样商品的属性即商品变异属性,又称做SKU属性,由于它决定了SKU
的绝对数量。html
# 参考说明前端
百度上有一篇文章也有阐述,能够作关联阅读,我就不重复贴上了。post
百度SKU参考
# 什么是SKU属性和选项
好比某件衣服有多种颜色、多种尺码,这些属性会直接关联价格和库存的,
系统会根据该商品关联的SKU属性的某个组合生成SKU。
好比某个款式的衬衫,有XL/L/XXL三种大小,有红黄蓝三种颜色。
对应这里例子,尺码和颜色都是是SKU属性。
对应尺码的XL/L/XXL等,都是SKU属性选项。
【注】上述的属性不必定在任什么时候候都是SKU属性,看实际的商品状况和设置。
好比对于尺码,某种商品是均码的。那么就不须要建立尺码这个SKU属性了,
而是设置为普通属性,仅做为显示用。
# 什么是商品SKU
商品SKU实际上就是SKU,为了不误解和SKU属性混淆,我用商品SKU来命名,
表示从属于商品的、实际销售和存储的子实体。
一个商品SKU,表示该商品关联的若干SKU属性的的属性值的某个组合所造成的
子实体。
如对应上面的例子,其中的一种组合 XL + 红色 就会造成一个商品SKU。而后,
咱们能够在该实体上管理价格、库存、专门的图片等信息。
# 什么是商品变异
英文名:Product Variants
商品变异其实就是商品SKU,只不过在某些技术文章中这样定义了。即以“变异”
来表达商品SKU的生成。优化
# 属性集
网站
Attribute Set,用于管理各种扩展属性的集合,其中SKU属性也是在管理范畴以内。spa
商品经过关联属性集而得到该属性集设置好的SKU属性,而后才能够根据这些SKU属性设计
生成商品SKU。3d
属性集也成为产品类型。orm
常见的属性集有:服装、PC、家具、图书等。
# 概念的统一
虽然不一样的研究人员有不一样的命名和定义,但为了在本系列文章中不出现混淆,
我对概念作了如下统必定义:
1)SKU(或称商品SKU)指的是商品子实体。
2)商品和商品SKU是主次关系,一个商品包含若干个商品SKU子实体,商品SKU从属于商品。
3)SKU不是编码,每一个SKU包含一个惟一编码,即SKU Code,用于管理。
4)商品自己也有一个编码,即Product Code,但不做为直接库存管理使用。
有时为了方便管理,会经过商品的Product Code做为前缀生成SKU Code。
2、SKU属性的管理
常见有几种状况:
- 商品独立管理
即SKU属性从属于商品。
优势:基本上没有。
缺点:这种比较不靠谱,由于会致使工做量过大。虽然能够经过“复制”功能来稍稍
简化,但依然不会很理想。因此基本不会采用。 - 商品独立关联
即SKU属性是公共的,每一个商品根据本身的实际状况来关联若干个SKU属性,
而后选择若干选项生成商品SKU。
优势:灵活,设置好了若干SKU属性和相关选项后,由商品自行选择相关的组合。
缺点:太灵活了,容易出错。好比对于颜色这个SKU属性而言,因为是公共的,因此
会定义数十个,甚至更多,可是对于ipad而言,其实只须要2个便可。这种
管理方式,没法从源头控制商品添加时SKU属性和选项的范围。 - 经过属性集管理
即SKU属性依附属性集存在,不存在能够从属于多个属性集的SKU属性。
优势:容易进行严格的管理,不易出错。好比一样是命名为“颜色”的SKU属性会存在多个
(属性ID/编码不一样),可是对于ipad的只须要2个选项(黑、白),对于服装则会不少。
缺点:属性集管理的工做量会稍大,适合属性集很少的系统。 - 经过属性集关联
即SKU属性是公共的,经过属性集关联。
优势:这种方式重用性不错,对于SKU选项较多的,会简化工做量。
缺点:因为SKU属性是公共的,因此会存在上面第2点的缺点。但咱们也能够经过设置多个
同名、但编码不一样的SKU属性,如多个“颜色”SKU属性,可是选项不一样。 - 建立独立的SKU属性集
即设计一个独立的SKU属性集的实体,关联或者直接管理SKU属性。
这种方式也是挺不错的。由于虽然各类商品类型之间产品特性会有较大的不一样,可是SKU属性
却有可能差别不大。好比对于服装、ipad都存在经过颜色来区分SKU,可是ipad只须要2种选项
(之后也许微调为3~4种等),而服装则不少了。
3、个人选择
上面介绍了五种形式,我我的倾向第4和第5种,上一篇文章的ER图也改为了第4种的形式,比较符合
常见的思路。第5种也是不错的。能够在接下来的设计分析一下。
笔者研究过很多电子商务平台软件,关于SKU的设计各有不一样,之因此有这样的区别,是由于面向不一样规模的电子商务网站,
存在产品分类复杂度,产品数量级的差别。一种设计方式对于百货式的网站,如京东、淘宝等,也许比较方便,但也许对于一个
专卖服装的小型时尚类网站就不够方便了。
- 咱们先看一下麦包包的
女包:http://item.mbaobao.com/pshow-1209056501.html
手包:http://item.mbaobao.com/pshow-1209050001.html?s=gl_4f_2
可见SKU很简单,就是颜色,至于尺寸,麦包包并无做为SKU选项来管理,而是做为不一样的产品来处理。
- 再看一下凡客www.vancl.com
SKU相对简单,主要是颜色和尺码。可是看多几个产品会发现,即便是同一个品类下面的颜色和尺码均会出现不相同的状况。至于
颜色图片更是各有不一样。
- 再看一下京东的SKU:
华硕EeePad:http://www.360buy.com/product/492015.html
苹果iPad2:http://www.360buy.com/product/386365.html
其中”版本“SKU属性,两个产品下面的可选项彻底不一样。
京东的SKU更为复杂了,即便是同一个三级品类下面,也有差别。若是预设置好SKU属性(”版本“)和它的可选项(64G/32G/
16G/32G旗舰版/32G标准版/16G旗舰版/16G标准版)等,那估计会比较多可选项。这种类型,分开多个SKU属性管理会比较合适。
针对这三种常见的网站,其中麦包包和凡客其实比较相似,只是麦包包作了些简化,但这两种能够概括为一种设计方式,这样
SKU属性的设计,即可以分为两类了:
- 经过属性集关联SKU属性
适合品类较少的网站,管理容易些。
如麦包包等专卖箱包或者服饰类的网站。通常就是颜色+尺码两种。并且因为品类不多,为了方便管理,能够将SKU属性归入到属性
集中管理,这样产品关联了属性集后,天然就关联了普通属性、查询属性、SKU属性和评论属性了。
对于上图,若是该网站产品种类不多,好比只卖服装,那么能够作进一步的简化,即直接将SKU属性从属关联属性集,去掉
”属性集关联SKU“。
基于本设计的管理方式:
按品类建立属性集,如箱包、鞋子、服装、文胸等。而后建立多个SKU属性,即便针对内涵类似的,可是可选项不一样的也建立
多个,如尺码,用在箱包和用在服装上是彻底不一样的。这些分别建立,并关联不一样的属性集。
产品建立时,关联一个属性集,经过属性集关联了1~N个SKU属性,而后选项这些SKU属性的组合,如2个颜色*3个尺码,
即6个组合,而后能够根据须要删除不支持的组合,这样最终得出了一个组合列表,点击”生成SKU“,就根据组合数量建立了产品
SKU,每一个产品SKU对应一个组合,存储在产品SKU选项值表中。对于某些SKU,能够设置专门的选项配图。
- 产品和SKU属性直接关联
适合品类不少网站,比较灵活,可是维护起来数据量比较大。
为了简化,我增长SKU属性关联产品分类(可为空,表示是全局的),这样在建立产品时,能够只列出全局的+本产品分类的
SKU属性,这样就不会一会儿列出不少SKU属性了。
SKU属性分为前端名称和后台名称两个,方便不一样业务含义的SKU属性,在前端也可以用同一个名称显示,如颜色、容量等。
另外在操做上能够作些优化,好比用下拉列表显示可选的SKU属性时,能够同时显示该属性的属性描述,供产品维护人员参考。
对于上面两个图的数据表设计,笔者就不在细化了,读者能够自行根据实际须要进行细化,要注意的是,基于SKU方式来管理产品时,
产品的价格、库存和图片等信息必然是放在产品SKU表中处理的,和订单、购物车等表的关联,也是经过产品SKU表,而不是产品表。
至于产品表,其实是一个总的业务汇总和外部关联表,但实际销售的并非它。
有些网站作的更细些,会就每一个产品SKU生成独立的URL(伪静态),这里见仁见智了,但从SEO方面考虑,每一个产品SKU拥有独立
的连接对收录和排名会更有优点些,能够考虑。