1. 程式人生 > >電商系統中的商品模型的分析與設計

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

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

商品模型的演化

    在以前,那時CMS很流行,最常見的模型是欄目-文章模型。於是做電商的時候,自然就繼承了這種一對多的關係。只是欄目變成了分類,文章變成了商品。商品也具備了獨特的業務屬性。現在很多電商網站上左側的選單,也就是這個分類。

image

後來我們慢慢發現一個問題,只有分類並不能適應所有的需求,比如nike鞋和nikeT恤,使用者可能希望先看nike的所有商品,這個模型就不能滿足。我們想在這個關係中,加入“品牌”概念。於是:

image

    這樣基本使用者可以在首頁上通過分類或者品牌找到自己想要的商品,也可以直接檢視熱門的商品和新上架的商品。但是問題也來了,使用者在進入分類後,展示在使用者面前的是很多很多商品,使用者希望再通過篩選查詢出更接近他目標的商品。於是優秀的產品設計師,設計出了類似這樣的UI:

image

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

image

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

有了這個模型,我們大概就可以看到以下介面(請不要太關注左邊,重點在右邊和下面):

QQ圖片20141029172940

image

    這個頁面展示商品的所有資訊,按照之前的設計好像都可以滿足。但是我們似乎感覺錯過了什麼,在圖上右邊我們發現該商品當前的顏色和尺寸,並且允許使用者可以選擇其他的顏色和尺寸。這給我們帶來了疑惑,這裡的“顏色”和“尺寸”是什麼,一件商品的不同顏色不同尺寸是算一個商品還是多個商品。經過思考後,我們發現我們混淆了兩個概念——“商品”和“貨品”。不同規格的貨品作為獨立的商品。比如一條褲子的有L尺寸、M尺寸、一個U盤有16G還是32G的,都是同樣的貨品,不同規格的商品。可以認為貨品和商品是一對多的關係。弄清了這個概念,處理這個需求就容易多了,這裡的“顏色”、“尺寸”我們就作為“規格”來處理,而紅色、黑色;L號、M號我們視為規格的選項或者說規格值。一件貨品對應若干規格,而具有某一規格值的貨品就是商品。

    好了,現在好像差不多了。基於這個模型可以滿足基本的商品搜尋、展示的需求。搜尋引擎也可以根據這個模型資料生成對應的商品索引,達到準確搜尋的目的。商品模組還會和其他模組一起協作,比如使用者系統、訂單系統、支付系統等。一般情況下我們會把商品業務獨立出來做成“商品中心”的服務,集中處理商品查詢、更新、釋出等業務,支撐其他業務。