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


摘自:http://www.cnblogs.com/leefreeman/p/4060227.html

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

商品模型的演化

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

image

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

image

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

image

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

image

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

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

QQ圖片20141029172940

image

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

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

本文基於 署名 2.5 中國大陸許可協議發布,歡迎轉載,演繹或用於商業目的,但是必須保留本文的署名 李平(包含鏈接),具體操作方式可參考此處。如您有任何疑問或者授權方面的協商,請 給我留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM