商品表(spu)、规格表(sku)设计
1. 先做一下專業術語解釋:spu和sku
這里拿iphone6s舉例,它身上有很多的屬性和值, 比如:
毛重: 420.00 g
產地: 中國大陸
容量: 16G, 64G, 128G
顏色: 銀, 白, 玫瑰金
spu指的是商品(iphone6s),spu屬性就是不會影響到庫存和價格的屬性, 又叫關鍵屬性,與商品是一對一的關系,比如:
毛重: 420.00 g
產地: 中國大陸
sku指的是具體規格單品(玫瑰金 16G),sku屬性就是會影響到庫存和價格的屬性, 又叫銷售屬性,與商品是多對一的關系,比如:
容量: 16G, 64G, 128G
顏色: 銀, 白, 玫瑰金
所以iphone6s則會生成 3 * 3 = 9 個 sku
上面這張圖是我項目中用到的商品相關的幾張數據表, 請只關注有數據值的字段,其它為業務需要,一共包含如下5張表
1. 商品分類表 mmall_category
此表采用無限層級樹狀數據結構,程序使用遞歸算法來遍歷分類下的所有子分類,parent_id是父級分類,parent_id=0時說明是根節點, 屬于一級類別; 如使用遞歸查詢出100034包含100037子類別,依次類推,這樣就構成一個可以無限擴展的數字結構;
商品分類表--mmall_category
商品表--------mmall_product
商品規格表--mmall_product_specs
屬性key表---mmall_attribute_key
屬性value表-mmall_attribute_value
2. 商品表 mmall_product(也稱spu表)
spu表中關鍵字段是category_id和attribute_list兩個字段:
category_id記錄這個商品屬于哪個分類, 用于通過分類進行商品搜索;
attribute_list記錄的是所有屬性集合,這個字段采用json格式存儲,便于前端解析;前端解析后可以在頁面顯示出商品的所有屬性, 用戶點擊選擇出屬性組合后,前端可以拼接成{"內存":"2G","顏色":"紅色","尺寸":"20cm"}這樣的json格式加上商品id在(商品規格表 mmall_product_specs)查詢到具體的單品,隨即獲取到具體單品的庫存和價格等信息;
3. 商品規格表 mmall_product_specs(也稱sku表)
sku表保存的是具體的單品信息,比如具體規格的庫存和價格等,核心字段是product_id和product_specs,product_id記錄的是spu表中的商品id,product_specs記錄的是該單品具體的屬性值(規格值);
4. (屬性key表 mmall_attribute_key)和(屬性value表-mmall_attribute_value)
屬性key表和屬性value表僅用于管理后臺頁面生成屬性選項,管理員在發布新商品時勾選屬性,方便規格的錄入和保證正確性;
這里我使用了兩張橫表spu表和sku表實現不同商品的存儲,spu表使用attribute_list字段保存屬性集合,查詢時使用product_id和product_specs去sku表中獲取的具體的單品信息, spu表中可以增加一些商品的公共信息字段,例如名稱、發布的商家、發布日期、上架狀態, sku表中增加一些每個單品不同的字段,比如不同的單品有不同圖片和名稱或者詳情說明等等,反正根據業務進行擴展
總結, 上述數據表設計方案適用于商品類別差異不是很大的情形,通過表的字段可以發現不同的商品之間變化的信息只有attribute_list字段, 而這個字段通過json來存儲各種不同的屬性集合, 同樣sku表中變化的字段只有product_specs也是通過json來存儲各種不同屬性組合。
總結
以上是生活随笔為你收集整理的商品表(spu)、规格表(sku)设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法导论精华总结 ~ 图算法
- 下一篇: 如何增加亚马逊listing多个类目节点