在一个电商网站中,商品的种类繁多,每一件商品都有着复杂的属性。为了更准确描述商品及细分差别,抽象出两个概念:SPU和SKU
SPU
SPU: Standard Product Unit (标准产品单位) ,一组具有共同属性的商品集,是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。
比如商品的标题、描述、规格、包装、品牌、分类,这些都是商品的通用属性,属于SPU。SPU是一个抽象的商品集概念,用来方便后台的管理。
SKU
SKU: Stock Keeping Unit(库存量单位),SPU商品集因具体特性不同而细分的每个商品,是物理上不可分割的最小存货单元。正因为它在物理上是不可分割的最小存货单元,所以也就可以通过SKU来确定具体的货物存量。
以图为例来看:
可以看出:SPU是一个抽象的商品集概念,SKU才是具体要销售的商品,每一个SKU的价格、库存可能会不一样,用户购买的是SKU而不是SPU
设计数据库表
在一个商品种类繁多的电商网站中,许多商品的属性是不一样的,比如手机有内存,衣服有尺码,这些不同的商品有着不同属性,同一种类的商品,比如都是衣服,SKU属性基本是一样的,都是颜色、尺码等。而在SPU中会有一些特殊属性,用来区分不同的SKU,我们称为SKU特有属性。
SKU的特有属性与分类相关,是商品规格参数的一部分:
也就是说,在我们设计表结构时没必要单独对SKU的特有属性进行设计,它可以看做是规格参数中的一部分。这样规格参数中的属性可以标记成两部分:
- spu下所有sku共享的规格属性(称为全局属性)
- 每个sku不同的规格属性(称为特有属性)
搜索属性
打开一个搜索页,我们来看看过滤的条件:
你会发现,过滤条件中的屏幕尺寸、运行内存、网路、机身内存、电池容量、CPU核数等,在规格参数中都能找到:
也就是说,规格参数中的数据,将来会有一部分作为搜索条件来使用。我们可以在设计时,将这部分属性标记出来,将来做搜索的时候,作为过滤条件。要注意的是,无论是SPU的全局属性,还是SKU的特有属性,都有可能作为搜索过滤条件的,并不冲突,而是有一个交集: