相關概念
- 貨品:指一種概念物品,是抽象的,並不是一個具體的實物,是一種稱謂。例如iphone6就是一種貨品。
- 商品:當貨品具備具體的屬性、價格等等一些具體的東西,構成實物時,就是商品。商品是庫存中一個具體的實物,用戶購買的就是商品不是貨品。例如:iphone6-金色-32g-移動版就是一個商品。
- SPU:即標准化產品單位,是最接近用戶認知的產品單元。比如iphone6、iphone4、小米4都是SPU。
- SKU:即庫存量單位,例如有iphone6這個SPU,當用戶購買時要確定買什么顏色的、內存多大的、支持 什么網絡等等。就用庫存單元SKU去規范它。庫存里存在的東西是具體某種規格的。
分析與設計
基於上面概念的理解,我們設計相應的數據庫:

SPU和SKU有自己的編碼,方便庫存統計和后台系統管理。價格在SKU里,不同規格的SPU價格肯定不一樣。SPU與分類和品牌相關聯。如iphone6屬於手機分類、蘋果品牌。一個SPU也可能屬於多個分類,可以做成多對多關系。理解了這個,我么參考一下商品詳情頁的設計:

這就是一個SKU詳情頁,不同的顏色、版本、容量肯定有不同的價格和不同的SKU。關於屬性是非常多的,不同的貨品有不同的屬性,我們怎么去管理呢?我們引入【屬性】和【屬性選項】。屬性就如上圖的顏色、版本、容量等等。屬性選項就是對應於屬性的,比如對應顏色的金色、銀色、深空灰、玫瑰金,對應版本的公開版,移動4G等等。 【屬性】和【屬性選項】 是一對多的關系,而屬性選項和SKU是多對多的關系。設計如下:

這兒設計屬性對於一個分類,屬性和分類是一對多的關系,如手機分類的屬性有顏色、版本、容量等,寸衫分類有顏色、尺寸等。這種一對多的關系會有一些數據冗余,如手機和寸衫都會有顏色。對於商品規模小,數據量不太大的電商,可以犧牲冗余來體驗商品發布者的體驗。也可以設計成多對多的關系。接着看一下規格:

規格是代表這個SKU具體的各項參數,詳細的產品規格說明。可以通過規格和其他同類做對比。也可以將部分規格參數用到列表的篩選條件:

我們可以設置哪些規格顯示在詳情頁中,哪些規格顯示在列表頁篩選中。最終商品模型的雛形如下:

當然,成熟的大型電商商品模型要比這個復雜的多。有各種價錢還要進行成本核算,要與營銷活動結合,折扣,打包購買價格等等。
