前陣子對電商商品及其相關的內容很感興趣,總有一種不弄明白不罷休的沖勁。因此整整花了幾周的時間來了解電商商品的各種概念,參考看不同的人數據庫設計,以及參考不同的思路。網上確實有很多文章對這方面進行介紹,而且基礎、通用的概念都差不多,不過數據庫設計方向倒是有所差異。本篇隨筆針對一些介紹比較好的文章或者資料進行對比,並着手進行一定的數據庫設計和基於ABP框架+Vue+Element的后台管理進行設計,后續可能會基於商品、會員、訂單、售后的基礎上進行一個多端的系統整合,如ABP后端API、Vue+Element的后台管理、UniApp小程序或H5公眾號進行開發。
1、參考部分優秀的做法
關於電商商品的數據庫設計,介紹比較詳細的文章有:https://blog.csdn.net/qq_37457564/article/details/101289358,或者https://www.cnblogs.com/cnblogs-programs/articles/5651557.html 、https://blog.csdn.net/thc1987/article/details/80426063、http://www.360doc.com/content/18/0124/11/40769523_724661250.shtml、https://www.cnblogs.com/eggTwo/p/6404805.html。
這些設計理念都一致,另外關於概念的介紹,這篇隨筆:http://www.woshipm.com/pd/2122609.html 和https://www.sohu.com/a/341684657_114819也介紹的很詳細。
關於電商商品的分類,我看基本上是分為三類,包括京東、淘寶商品類別,也都基本按照這樣分級處理。關於商品的類別分類,我們可以參考一篇文檔的介紹《電商商城產品三級分類》,這個文檔挺好,不過沒有辦法獲得Word格式的文檔用來參考。另外我們可以參考《國美的電商商品分類》,國美的商品分類很好,可以用作我們前期商品的類別數據。
后來,無意間看到了《商派ONex在線零售產品操作手冊》,這個文檔的概念各方面感覺更精確,而且這個公司好像一直從事電子商務方面的咨詢、軟件開發等事宜,其中它對商品類型和商品分類的分開,我覺得更加貼切,畢竟商品的分類可以更加彈性化一些或自定義組合一些特殊的類別。
因此綜合這些考慮,把整體的概念梳理一遍,着手做一下電商商品的數據庫設計和功能界面的管理開發了。
在開始之前,我們先來參考一下電商領域的一些概念。
商品分類
商品分類,俗稱商品類別、商品目錄,指的是為了方便顧客分門別類查找商品,同時方便商家進行商品管理的分類方式。
虛擬分類
在原商品分類基礎上,依據商品的品牌、屬性、價格等條件篩選而形成的新分類方式,例如200—300元的商品,女性滑蓋手機等分類。
商品類型
商品類型不同於商品分類,指的是依據某一類商品的相同屬性歸納成的屬性集合,例如手機類型都有屏幕尺寸、鈴聲、網絡制式等共同的屬性;書籍類型都有出版社、作者、ISBN號等共同的屬性。
通用商品類型
系統內置的僅含有商品名、重量、銷售價格、簡介、庫存、品牌等基本屬性的一種商品類型。
商品規格
是依據顧客的購買習慣而獨立出來的一種商品的特殊屬性,例如顧客先選好了某一款襯衫,然后必須再選擇顏色和尺碼才可以訂購,這里的顏色和尺碼被稱為規格。
商品關鍵詞
商品關鍵詞是商品名稱的有效補充,可以實現更多的搜索結果匹配機會,如:索尼愛立信W910i手機中設 置商品關鍵詞“索愛W910i”,則用戶搜索“索愛W910i”也可以找到這款手機。
版塊
商店前台面頁的不同區域,例如特價商品、銷售排行榜、最新發貨清單等,商家可以在后台的模版編輯中進行版塊設置來修改前台表現樣式。
市場價
顧客購買商品時的參考價格,不作為購買支付價格。
銷售價
是普通顧客在商店中購買商品的結算價格。
會員價
顧客注冊成為商店的會員之后,購買商品所享受的價格。商家針對同一商品可以根據會員等級不同,設置不同的價格。
商品配件
是與此商品出現在同一個頁面並且可同時購買的其他商品,如:購買諾基亞N95,可同時購買手機電池、內存卡、藍牙耳機等配件。
相關商品
商家為了促進其它商品的銷售而將其顯示在當前商品的頁面上,這些商品就叫做相關商品。
商品
在系統中,商品是一個銷售單位,在前台表現為一個商品詳細頁。
貨品
在系統中,貨品與商品不相同,貨品是一個庫存單位,例如“索愛W910i”是一個商品,但紅色的“索愛W910i”是一個貨品,黑色的是另一個貨品。
貨號
是貨品的唯一編號,可用於倉庫管理。
商品編號
商品的唯一編號,可用於商店前台的商品檢索,一般使用數字編號,方便電話訂購。
標簽
是一種分組標識,可用於商品、訂單,店主可以利用標簽篩選分組,如:為某幾個商品增加“熱賣商品”的標簽,可以通過板塊設置,讓這幾個商品顯示在前台首頁的熱賣商品區。
SPU:即標准化產品單位,是最接近用戶認知的產品單元。比如iphone6、iphone4、小米4都是SPU。
SKU:即庫存量單位,例如有iphone6這個SPU,當用戶購買時要確定買什么顏色的、內存多大的、支持什么網絡等等。就用庫存單元SKU去規范它。庫存里存在的東西是具體某種規格的,不同的顏色、版本、容量肯定有不同的價格和不同的SKU。
2、數據庫設計
電商商品有品牌、商品分類、商品類型、規格分組、規格參數、規格參數選項值、商品SPU、貨品SKU等等概念對象,我依照上面的一些設計思路,整合了這些概念,大概有如下的設計關系圖。
其中的關系看起來很多,不過總體就那么些概念。這里我吸納了一位仁兄說把規格和參數作為一個表設計,用標志字段分開的思路。
商品參數(有些人叫商品規格參數)信息如下所示,一般可以分為分組、屬性及屬性值。這些信息不影響SKU,只是作為商品的一些參數展示。
另外一些參數影響SKU的信息,可以認為是特殊的規格參數,如下所示。
我們選擇不同的顏色、版本等規格,可能影響我們SKU的記錄,也就是對應的銷售價格和庫存量。
其中商品品牌、商品列表比較獨立,但是商品規格及規格值等信息設計和商品類型關聯,從而影響商品信息。
商品其實設計的概念不少,不過都是為了使得數據更加有規律,實現更好的彈性設計。從商品管理擴展出去,還會設計到會員和積分管理相關信息,也是一個不小的設計領域,另外還有設計到訂單管理,也是一個大的體系,但是商品是其中的關鍵,也是很多管理的開始。
3、軟件界面的設計
針對商品的管理,主要就是后台數據的管理,前端界面的展示,一般就是電商領域的商品銷售了,如可以結合小程序、公眾號、官網等方式展示商品進行銷售。
我們這里先對商品管理的界面進行設計,其中包括了商品品牌、商品分類、商品規格分組、規格定義、規格選項及它們之間的關系等功能的處理。
按照我們的功能規划,我們定義好以下的菜單
1)品牌管理
其中品牌管理界面如下所示。
品牌編輯或者新增界面如下
品牌信息相對獨立,沒有和其他模塊表之間有直接關系,那么只需要維護他的基礎數據和相關的圖片信息即可。
2)分類管理
分類設計是一個無窮級的樹列表,一般電商商品類別分為三類,我們可以通過左側樹列表快速定位,分類列表界面如下所示。
電商的類別比較多,一個個錄入肯定有點麻煩,我就弄了一個快速的批量新增處理。
分類直接從國美商品分類中復制過來即可,非常方便。
其中,我們可以根據商品類別的分級層次,來自動構建分級編碼,方便以后根據編碼直接定位商品分類的一級、二級、三級信息。
3)商品類型
前面介紹過了,商品類型不同於商品分類,指的是依據某一類商品的相同屬性歸納成的屬性集合,例如手機類型都有屏幕尺寸、鈴聲、網絡制式等共同的屬性;書籍類型都有出版社、作者、ISBN號等共同的屬性。
其實這里商品類型和品牌有多對多的關系。
也和規格分組和規格參數和規格選項有相關的關系。
功能界面設計的時候,就需要考慮和這些表之間的關系維護,如基本信息里面和品牌關系進行綁定。
以及商品規格里面的規格及規格列表的維護。
規格選項可以輸入圖片,也可以上傳圖片,到時候終端根據選擇顯示方式進行展示即可。
另外除了影響SKU的特殊規格參數外,還有一個常規的規格參數,這里稱為商品參數。商品參數按分組的方式進行管理,如下界面所示。
而其中的參數,除了設置一些選項外(如是否可查詢、數值、單位等),和上面的規格類似,也是可以填寫列表選項的,如下所示。
4) 商品信息
商品信息,除了維護SPU信息外,還需要管理SKU和庫存信息,因此需要綜合上面很多信息進行分類,商品列表界面主要是提供快速商品的檢索和創建SKU記錄信息的入口,商品列表如下所示。
其中商品分類,我們可以根據數據庫記錄進行展示並選擇過濾數據。
商品創建及SKU記錄信息處理,我們可以引入 hooray / vue-sku-form 組件進行信息的創建,如下界面所示。
通過不同的商品規格,如顏色、內存等生成多個不同規格的SKU記錄,並設置對應的價格和庫存信息。
以上就是關於電商商品的一些數據庫設計和功能界面的截圖,主要就是用來理清各個電商商品的概念,以及模塊之間的關系,為后面的會員管理、訂單管理等大領域進行基礎的處理。
為了方便讀者理解,我列出一下前面幾篇隨筆的連接,供參考:
循序漸進VUE+Element 前端應用開發(1)--- 開發環境的准備工作
循序漸進VUE+Element 前端應用開發(2)--- Vuex中的API、Store和View的使用
循序漸進VUE+Element 前端應用開發(3)--- 動態菜單和路由的關聯處理
循序漸進VUE+Element 前端應用開發(4)--- 獲取后端數據及產品信息頁面的處理
循序漸進VUE+Element 前端應用開發(5)--- 表格列表頁面的查詢,列表展示和字段轉義處理
循序漸進VUE+Element 前端應用開發(6)--- 常規Element 界面組件的使用
循序漸進VUE+Element 前端應用開發(7)--- 介紹一些常規的JS處理函數
循序漸進VUE+Element 前端應用開發(8)--- 樹列表組件的使用
循序漸進VUE+Element 前端應用開發(9)--- 界面語言國際化的處理
循序漸進VUE+Element 前端應用開發(10)--- 基於vue-echarts處理各種圖表展示
循序漸進VUE+Element 前端應用開發(11)--- 圖標的維護和使用
循序漸進VUE+Element 前端應用開發(12)--- 整合ABP框架的前端登錄處理
循序漸進VUE+Element 前端應用開發(13)--- 前端API接口的封裝處理
循序漸進VUE+Element 前端應用開發(14)--- 根據ABP后端接口實現前端界面展示
循序漸進VUE+Element 前端應用開發(15)--- 用戶管理模塊的處理
循序漸進VUE+Element 前端應用開發(16)--- 組織機構和角色管理模塊的處理
循序漸進VUE+Element 前端應用開發(17)--- 菜單管理
循序漸進VUE+Element 前端應用開發(18)--- 功能點管理及權限控制
循序漸進VUE+Element 前端應用開發(19)--- 后端查詢接口和Vue前端的整合
循序漸進VUE+Element 前端應用開發(20)--- 使用組件封裝簡化界面代碼
循序漸進VUE+Element 前端應用開發(21)--- 省市區縣聯動處理的組件使用
循序漸進VUE+Element 前端應用開發(22)--- 簡化main.js處理代碼,抽取過濾器、全局界面函數、組件注冊等處理邏輯到不同的文件中
循序漸進VUE+Element 前端應用開發(23)--- 基於ABP實現前后端的附件上傳,圖片或者附件展示管理
循序漸進VUE+Element 前端應用開發(24)--- 修改密碼的前端界面和ABP后端設置處理
循序漸進VUE+Element 前端應用開發(25)--- 各種界面組件的使用(1)
循序漸進VUE+Element 前端應用開發(26)--- 各種界面組件的使用(2)
ABP框架中一對多,多對多關系的處理以及功能界面的處理(1)
ABP框架中一對多,多對多關系的處理以及功能界面的處理(2)
循序漸進VUE+Element 前端應用開發(27)--- 數據表的動態表單設計和數據存儲
循序漸進VUE+Element 前端應用開發(28)--- 附件內容的管理
循序漸進VUE+Element 前端應用開發(29)--- 高級查詢條件的界面設計
部署基於.netcore5.0的ABP框架后台Api服務端,以及使用Nginx部署Vue+Element前端應用
循序漸進VUE+Element 前端應用開發(30)--- ABP后端和Vue+Element前端結合的分頁排序處理
循序漸進VUE+Element 前端應用開發(31)--- 系統的日志管理,包括登錄日志、接口訪問日志、實體變化歷史日志
循序漸進VUE+Element 前端應用開發(32)--- 手機短信動態碼登陸處理
循序漸進VUE+Element 前端應用開發(33)--- 郵件參數配置和模板郵件發送處理