電商系統中的商品模型的分析與設計

前言html

    在電商系統中,商品模型相當重要,是整個電商的核心,下面經過一個簡單的分析,設計一個基礎的商品模型。java



商品模型的演化程序員

    在之前,那時CMS很流行,最多見的模型是欄目-文章模型。因而作電商的時候,天然就繼承了這種一對多的關係。只是欄目變成了分類,文章變成了商品。商品也具有了獨特的業務屬性。如今不少電商網站上左側的菜單,也就是這個分類。網絡

image

後來咱們慢慢發現一個問題,只有分類並不能適應全部的需求,好比nike鞋和nikeT恤,用戶可能但願先看nike的全部商品,這個模型就不能知足。咱們想在這個關係中,加入「品牌」概念。因而:iphone

image

    這樣基本用戶能夠在首頁上經過分類或者品牌找到本身想要的商品,也能夠直接查看熱門的商品和新上架的商品。可是問題也來了,用戶在進入分類後,展現在用戶面前的是不少不少商品,用戶但願再經過篩選查詢出更接近他目標的商品。因而優秀的產品設計師,設計出了相似這樣的UI:post

image

    用戶能夠經過這些篩選條件進一步縮小本身的目標範圍,那麼問題又來了,這樣的產品需求排在程序員面前,怎麼去實現它?通過分析,咱們找出了一個方法,咱們知道商品之間的屬性可能存在着較大的差異,好比牛仔褲它有版型、腰型、褲長等屬性;而電腦它有CPU、顯卡等屬性,各種商品的屬性是不一樣的。再進一步想,休閒褲也版型、腰型、褲長等屬性;臺式電腦或者筆記本電腦都有CPU、顯卡等屬性。因此咱們得出:一個分類對應若干屬性,而一個屬性,對應若干屬性選項,而一個具體商品又對應若干屬性選項(例如具體一條牛仔褲,他的褲長:7分,褲型:直筒)。有點繞,仔細品味一下。性能

image

    從圖上能夠看出,分類和屬性的關係(例如:「牛仔褲」分類下有褲型、褲長、版型等屬性)、屬性和屬性選項的關係(例如:褲長屬性有長款、九分褲、七分褲的選項)、商品和屬性選項的關係(例如某條牛仔褲的褲長是7分褲)。至此,咱們知道一個商品的分類、品牌以及它有什麼屬性和對應的屬性值。那麼經過篩選條件,天然就能夠查詢出指定的商品。這裏特別說一句,價格也是屬性,不要設想用商品表中的價格字段去作計算。這不利於查詢也增長了複雜度,讓商家編輯人員用屬性來設置並保證他的正確性。網站

有了這個模型,咱們大概就能夠看到如下界面(請不要太關注左邊,重點在右邊和下面):搜索引擎

QQ圖片20141029172940

image

    這個頁面展現商品的全部信息,按照以前的設計好像均可以知足。可是咱們彷佛感受錯過了什麼,在圖上右邊咱們發現該商品當前的顏色和尺寸,而且容許用戶能夠選擇其餘的顏色和尺寸。這給咱們帶來了疑惑,這裏的「顏色」和「尺寸」是什麼,一件商品的不一樣顏色不一樣尺寸是算一個商品仍是多個商品。通過思考後,咱們發現咱們混淆了兩個概念——「商品」和「貨品」。不一樣規格的貨品做爲獨立的商品。好比一條褲子的有L尺寸、M尺寸、一個U盤有16G仍是32G的,都是一樣的貨品,不一樣規格的商品。能夠認爲貨品商品是一對多的關係。弄清了這個概念,處理這個需求就容易多了,這裏的「顏色」、「尺寸」咱們就做爲「規格」來處理,而紅色、黑色;L號、M號咱們視爲規格的選項或者說規格值。一件貨品對應若干規格,而具備某一規格值的貨品就是商品。編碼

    好了,如今好像差很少了。基於這個模型能夠知足基本的商品搜索、展現的需求。搜索引擎也能夠根據這個模型數據生成對應的商品索引,達到準確搜索的目的。商品模塊還會和其餘模塊一塊兒協做,好比用戶系統、訂單系統、支付系統等。通常狀況下咱們會把商品業務獨立出來作成「商品中心」的服務,集中處理商品查詢、更新、發佈等業務,支撐其餘業務。



電商系統中的商品模型的分析與設計—續

2015-06-09 23:25 by 飄揚的紅領巾, 4726 閱讀, 35 評論, 收藏編輯

前言

    在《電商系統中的商品模型的分析與設計》中,對電商系統商品模型有一個粗淺的描述,後來有博友對貨品和商品的區別以及屬性有一些疑問。我也對此作一些研究,再次簡單的對商品模型作一個介紹。

從SPU、SKU開始

    首先咱們須要澄清上篇中的這兩個概念,在上篇文章中「貨品」是指一種概念物品,這種物品並非一個具體的實物,當它具有具體的屬性、價格時,纔是一種實物,也就是商品。「商品」就是庫存中一個具體的實物。例如:iphone6,就是一種貨品,但用戶購買的並非貨品而是商品,也就是用戶最終購買的多是:金色-16G-移動版 iphone6。換句話來講,貨品是一種產品的稱謂(如iphone6),商品是用戶購買的具體實物,具有特定的屬性(如:金色-16G-移動版)。若是以爲這樣理解仍是比較混,那麼忘記這兩個概念,下面講標準化的名稱。

    咱們剛纔說的iphone6,書面稱謂叫「SPU」 Standard Product Unit (標準化產品單元),它是最接近用戶認知的產品單元,好比用戶說,我想買個iphone四、iphone六、小米4,這些都是SPU,也就是用戶廣泛認知範圍內的一種產品。然而在電商系統中只有SPU並無什麼卵用,用戶購買時確定要肯定,須要什麼顏色、多少G的,支持什麼網絡。因此,例如金色-16G-移動版 iphone6,就須要一個名稱去規範它,這個名稱叫「SKU」 Stock Keeping Unit(庫存單元),換句話理解就是庫存裏面存的東西,庫存裏存在東西確定是具體的某種規格的iphone6。基於這個理解,咱們先畫下圖:

image

    SPU,SKU兩個表,有各自的編碼,這方便庫存統計以及後臺系統的管理,另外價格字段是在SKU中,這應該好理解,不一樣規格的iphone6確定價格不同,另外SPU與分類和品牌關聯,如iphone6屬於「手機」分類,「蘋果」品牌。固然一個SPU也可能屬於多個分類,能夠作成多對多的關係。有了這個基礎,咱們再來看電商商品詳情頁是怎麼設計的:

image

    咱們看到這個頁面實際上是一個SKU的詳情頁,由於它指定了價格、顏色、版本、容量等信息,不一樣的顏色、版本、容量實際上是不一樣的價格,不一樣的SKU。咱們若是要實現這個設計,咱們須要加兩個概念,就是「屬性」和「屬性選項」。「屬性」正如這裏的顏色、版本、容量。而「屬性選項」則是金色、銀色、移動4G版、16gb、64gb等。能夠看出「屬性」和「屬性選項」是一對多的關係,而「屬性選項」和SKU則是多對多關係,一個金色-16G-移動版 iphone6,具有「金色」、「16G」,「移動版」多個選項,而一個「金色」選項除了對應iphone6還能夠對於iphone4。咱們繼續畫圖:

image

    須要注意的是,屬性是對於一個分類的,這樣設計的目的主要是爲了屬性能歸類管理,也方便在添加產品時,經過分類對屬性進行篩選。例如,「手機」分類有顏色、版本、容量等屬性,而「襯衫」分類有「顏色」、「尺寸」。這裏有博友可能有疑問,若是屬性和分類是一對多的關係,那麼屬性表將會出現一些冗餘,好比「手機」、「襯衫」都有顏色屬性,可是在屬性表中就會兩條顏色的記錄甚至更多。這裏其實能夠設計爲多對多的關係。一對多的關係,能夠在商品規模小、數據量不太大的電商上適應,這樣的好處是,可讓產品發佈者更好的管理屬性選項和發佈產品,由於即使是兩個顏色的屬性,但他們的屬性選項確能夠不一樣,對於「手機」來講,可能只有黑、白、金、銀等顏色,但對於「襯衫」分類來講選項就能夠有「紅橙黃綠青藍紫」甚至有「花格」。因此能夠考慮犧牲冗餘來提升商家發佈者的體驗。接下來咱們來看另一個特性——「規格」:

image

「規格」表明這一個SKU具體的各項參數,是一個詳細的產品規格說明,用戶能夠經過這些參數與其餘同類手機作對比。這些參數中,部分參數將參與列表頁的篩選條件中

image

    咱們能夠注意到兩幅圖,有些規格並不能對應上。這是由於咱們在規格表中能夠設置哪些規格顯示在詳細頁中,哪些規格顯示在列表篩選條件中。最終的商品模型就是這樣:

image

    好了,這個電商商品模型的雛形就有了,但一個成熟的大型電商系統模型要比這個複雜的多,光是一個價格都會有一個單獨的模塊進行管理,好比市場價、進貨價、成本價等,要進行成本覈算,要與營銷活動結合,雙11折扣,或者與其餘商品打包購買價格更便宜等。總之,須要根據業務的須要進行一步一步的擴展和設計。之後有機會介紹下電商中訂單模型。

相關文章
相關標籤/搜索