电商系统设计之商品(上)
電商大伙每天都在用,類似某貓,某狗等。 電商系統(tǒng)設(shè)計看似復(fù)雜又很簡單,看似簡單又很復(fù)雜。本章適合初級工程師及中級工程師細(xì)看,大佬請隨意
1. 前言
商品的設(shè)計在電商系統(tǒng)中占據(jù)重要地位,如何設(shè)計出高擴展,高性能的商品系統(tǒng)并非一件簡單的事情,我的設(shè)計是觀摩互聯(lián)網(wǎng)各大佬的設(shè)計后自行研究的,并非完全正確,但也不完全錯誤,現(xiàn)在我設(shè)計的這套電商系統(tǒng)已經(jīng)在使用,如果在邏輯上遇到什么問題,會及時修改我關(guān)于電商系統(tǒng)相關(guān)文章的設(shè)計思想部分。
?
2. 元素
見上圖,本次我們先講解下系統(tǒng)規(guī)格與自定義規(guī)格、系統(tǒng)屬性與自定義屬性的關(guān)于及其他們存在的意義。
2.1 SPU
SPU(Standard Product Unit)標(biāo)準(zhǔn)化產(chǎn)品單元
什么叫標(biāo)準(zhǔn)化產(chǎn)品單元?
拋棄標(biāo)準(zhǔn)化一詞來看,產(chǎn)品單元?就是以一個產(chǎn)品為一個單位。例如你是手機銷售商,你在廠家進貨的時候說我要iphoneX 100部,型號隨意規(guī)格隨意,進貨的時候沒考慮到內(nèi)存或者屏幕尺寸,這個時候你就把iphoneX這個商品當(dāng)作一個單位。這就是產(chǎn)品單位。再談標(biāo)準(zhǔn)化,只是一些人或一個人制定的這么一個標(biāo)準(zhǔn),所以稱為標(biāo)準(zhǔn)化產(chǎn)品單元,不要拿百度百科上的解釋反駁我,我只是用更通俗易懂的方式解釋一下SPU。
例如iphoneX的價格也有不同的地方,分別為iphoneX 64g 是8888,iphoneX 256g是18888。這個時候我們不能建立2個SPU去管理這2個商品。這個時候就需要用到SKU的概念了。
2.2 SKU
SKU(Stock Keeping Unit)庫存量單元
什么叫庫存量單位?
字面意思來看,庫存則是指的某個商品的某個規(guī)格還有多少件,這個時候就不能只針對商品了。上面的例子iphoneX有2個不同規(guī)格的商品,這個時候無法計算其每個規(guī)格的庫存(創(chuàng)建2個商品可是不切實際,未來管理會很復(fù)雜,就例如安踏的跑鞋有十幾個尺碼,難道要創(chuàng)建十幾個商品嗎?),此時只能針對當(dāng)前商品再創(chuàng)建子商品,我們叫它規(guī)格,例如iphoneX?有 存儲和顏色2個規(guī)格
有木有發(fā)現(xiàn)還是有點問題?那具體的存儲大小與具體顏色該如何表達呢?這個時候需要創(chuàng)建規(guī)格的子商品,我們稱他為屬性
這時每個屬性的結(jié)合就是一個新的商品,我們稱它為SKU,一個SPU對應(yīng)著N個SKU
這樣就生成了N個商品
-
iphonex 64G白色
-
iphonex 32G黑色
-
iphonex 256G白色 等等…
2.3 系統(tǒng)規(guī)格/屬性
為什么要設(shè)立系統(tǒng)規(guī)格屬性呢?
盜用一張?zhí)詫毜膱D,以上都是根據(jù)分類品牌設(shè)定好的規(guī)格及屬性
主要是為了方便商家添加商品及其對商品的規(guī)格屬性進行統(tǒng)一的管理,當(dāng)然一個電商系統(tǒng)在前期運營的情況下盡量減少系統(tǒng)屬性規(guī)格的使用(方便商家入住嘛)。
自定義屬性就不用說了。不讓商家添加自己的規(guī)格和尺碼什么的怎么能行?
?
3. 數(shù)據(jù)
具體數(shù)據(jù)表的設(shè)計如下
3.1 product
商品表 (spu表)
CREATE?TABLE?`product`?(`id`?int(10)?unsigned?NOT?NULL?AUTO_INCREMENT,`name`?varchar(255)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'商品標(biāo)題',`category_id`?int(11)?NOT?NULL?COMMENT?'商品分類編號',`mer_id`?int(11)?NOT?NULL?COMMENT?'商家編號',`freight_id`?int(11)?DEFAULT?NULL,`type_id`?tinyint(4)?NOT?NULL?COMMENT?'類型編號',`sketch`?varchar(255)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL?COMMENT?'簡述',`intro`?text?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'商品描述',`keywords`?varchar(255)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL?COMMENT?'商品關(guān)鍵字',`tags`?varchar(255)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL?COMMENT?'標(biāo)簽',`marque`?varchar(255)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'商品型號',`barcode`?varchar(255)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'倉庫條碼',`brand_id`?int(11)?NOT?NULL?COMMENT?'品牌編號',`virtual`?int(11)?NOT?NULL?DEFAULT?'0'?COMMENT?'虛擬購買量',`price`?decimal(8,2)?NOT?NULL?COMMENT?'商品價格',`market_price`?decimal(8,2)?NOT?NULL?COMMENT?'市場價格',`integral`?int(11)?NOT?NULL?DEFAULT?'0'?COMMENT?'可使用積分抵消',`stock`?int(11)?NOT?NULL?COMMENT?'庫存量',`warning_stock`?int(11)?NOT?NULL?COMMENT?'庫存警告',`picture_url`?varchar(125)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'封面圖',`posters`?varchar(125)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL,`status`?tinyint(4)?NOT?NULL?COMMENT?'狀態(tài)?-1=>下架,1=>上架,2=>預(yù)售,0=>未上架',`state`?tinyint(4)?NOT?NULL?DEFAULT?'0'?COMMENT?'審核狀態(tài)?-1?審核失敗?0?未審核?1?審核成功',`is_package`?enum('0','1')?COLLATE?utf8mb4_unicode_ci?NOT?NULL?DEFAULT?'0'?COMMENT?'是否是套餐',`is_integral`?enum('0','1')?COLLATE?utf8mb4_unicode_ci?NOT?NULL?DEFAULT?'0'?COMMENT?'是否是積分產(chǎn)品',`sort`?int(11)?NOT?NULL?DEFAULT?'99'?COMMENT?'排序',`deleted_at`?timestamp?NULL?DEFAULT?NULL,`created_at`?timestamp?NULL?DEFAULT?NULL,`updated_at`?timestamp?NULL?DEFAULT?NULL,PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?AUTO_INCREMENT=24?DEFAULT?CHARSET=utf8mb4?COLLATE=utf8mb4_unicode_ci;3.2 system_attribute
系統(tǒng)規(guī)格表
CREATE?TABLE?`system_attribute`?(`id`?int(10)?unsigned?NOT?NULL?AUTO_INCREMENT,`category_id`?int(11)?NOT?NULL?COMMENT?'商品類別編號',`name`?varchar(25)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'屬性名稱',`sort`?int(11)?NOT?NULL?DEFAULT?'999'?COMMENT?'排列次序',PRIMARY?KEY?(`id`),KEY?`product_attribute_category_id_name_index`?(`category_id`,`name`) )?ENGINE=InnoDB?AUTO_INCREMENT=8?DEFAULT?CHARSET=utf8mb4?COLLATE=utf8mb4_unicode_ci;3.3 system_attribute_option
系統(tǒng)屬性表
CREATE?TABLE?`product_attribute_option`?(`id`?int(10)?unsigned?NOT?NULL?AUTO_INCREMENT,`name`?varchar(125)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'選項名稱',`attr_id`?int(11)?NOT?NULL?COMMENT?'屬性編碼',`sort`?int(11)?NOT?NULL?DEFAULT?'999'?COMMENT?'排序',PRIMARY?KEY?(`id`),KEY?`product_attribute_option_name_attr_id_index`?(`name`,`attr_id`) )?ENGINE=InnoDB?AUTO_INCREMENT=5?DEFAULT?CHARSET=utf8mb4?COLLATE=utf8mb4_unicode_ci;3.4 product_attribute_and_option
規(guī)格屬性綁定表
CREATE?TABLE?`product_attribute_and_option`?(`id`?int(10)?unsigned?NOT?NULL?AUTO_INCREMENT,`sku_id`?int(11)?NOT?NULL?COMMENT?'sku編碼',`option_id`?int(11)?NOT?NULL?DEFAULT?'0'?COMMENT?'屬性選項編碼',`attribute_id`?int(11)?NOT?NULL?COMMENT?'屬性編碼',`sort`?int(11)?NOT?NULL?DEFAULT?'999'?COMMENT?'排序',`supplier_option_id`?int(11)?DEFAULT?NULL,PRIMARY?KEY?(`id`),KEY?`product_attribute_and_option_sku_id_option_id_attribute_id_index`?(`sku_id`,`option_id`,`attribute_id`) )?ENGINE=InnoDB?AUTO_INCREMENT=6335?DEFAULT?CHARSET=utf8mb4?COLLATE=utf8mb4_unicode_ci;3.5 product_sku
sku表
CREATE?TABLE?`product_sku`?(`id`?int(10)?unsigned?NOT?NULL?AUTO_INCREMENT,`product_id`?int(11)?NOT?NULL?COMMENT?'商品編碼',`name`?varchar(125)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'sku名稱',`img`?varchar(255)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL?COMMENT?'主圖',`price`?decimal(8,2)?NOT?NULL?COMMENT?'價格',`stock`?int(11)?NOT?NULL?DEFAULT?'0'?COMMENT?'庫存',`code`?varchar(255)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL?COMMENT?'商品編碼',`barcode`?varchar(255)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL?COMMENT?'商品條形碼',`data`?varchar(255)?COLLATE?utf8mb4_unicode_ci?DEFAULT?NULL?COMMENT?'sku串',PRIMARY?KEY?(`id`),KEY?`product_sku_name_product_id_index`?(`name`,`product_id`) )?ENGINE=InnoDB?AUTO_INCREMENT=530?DEFAULT?CHARSET=utf8mb4?COLLATE=utf8mb4_unicode_ci;3.6 product_attribute
自定義規(guī)格表
CREATE?TABLE?`product_attribute`?(`id`?int(10)?unsigned?NOT?NULL?AUTO_INCREMENT,`product_id`?int(11)?NOT?NULL?COMMENT?'商品編碼',`name`?varchar(125)?COLLATE?utf8mb4_unicode_ci?NOT?NULL?COMMENT?'規(guī)格名稱',`sort`?int(11)?NOT?NULL?DEFAULT?'999'?COMMENT?'排序',PRIMARY?KEY?(`id`),KEY?`product_supplier_attribute_name_product_id_index`?(`name`,`product_id`) )?ENGINE=InnoDB?AUTO_INCREMENT=40?DEFAULT?CHARSET=utf8mb4?COLLATE=utf8mb4_unicode_ci;?
4. 致謝
其實在商品的設(shè)計層面看懂后還是很簡單的,后續(xù)文章主要講解的更多的是這些數(shù)據(jù)該如何存儲更合理。如果設(shè)計不合理例如商品添加很簡單,但是修改商品就很復(fù)雜。在前期設(shè)計上我們要盡量避免這些“坑”
謝謝你看到這里,希望我的文章能夠幫助到你。有什么問題可以在評論區(qū)留言,我看到會第一時間回復(fù)。謝謝
總結(jié)
以上是生活随笔為你收集整理的电商系统设计之商品(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云VS本地,一言难尽的ERP
- 下一篇: 电商系统设计之商品(下)