在此之前,先了解下關於SPU及SKU的知識
SPU是商品信息聚合的最小單位,是一組可復用、易檢索的標准化信息的集合,該集合描述了一個產品的特性。通俗點講,屬性值、特性相同的商品就可以稱為一個SPU。
例如,iphone4就是一個SPU,N97也是一個SPU,這個與商家無關,與顏色、款式、套餐也無關。
SKU: 模塊的另一個核心實體,從屬於商品。每一個商品SKU是商品關聯的規格的一種組合。
比如 [顏色SKU-紅色] + [尺碼SKU-42碼] 形成一種組和。這個組合構成一個商品SKU。
價格、庫存和關聯購物車、訂單等,都通過此實體完成。
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
-------------------------------------------------------------------------------------------------------------------------------------------------------------
好了,開始我們的模型圖介紹
首先,模型圖(workbench,具體的生成方法見:底部)
先介紹一下難以理解的字段
無限分類字段
goodstype:
pid:父級分類id
path:路徑(便於將分類排序)
無限分類,專門有一篇講解:https://www.cnblogs.com/cl94/p/9593273.html
商品字段
goods:
sku_attribute_list: sku屬性字符串,比如 【顏色:白色,黑色】【套餐:套餐一,套餐二】
attribute_list: sku:基本屬性Json字符串 ,比如【最高時速:約16km\/h】【極限承重:85kg】
庫存價格等字符放在SKU里面
sku字段
goodssku:
spech_list: sku數據,比如【顏色:白色】【套餐:套餐二】,是goods表種sku_attribute_list的具體化
屬性名表
attributekey:
此表僅用於,后台管理頁面生成屬性選項
貼幾個后台頁面,應該更好理解吧:
2018年9月9日16點28分更新-------------------------------------------------------------
由於打算在搜索頁面和首頁展示SKU而不是SPU,goods_sku表新建關鍵詞和縮略圖兩個字段增強用戶體驗,其中關鍵詞字段是自動生成(sku數據的value值拼接)
這三個SKU商品屬於一個SPU
sql代碼
------屬性key表和屬性value表用於后台管理頁面生成屬性選項, ------管理員在發布商品時,勾選屬性,方便規格錄入的准確性 屬性key表(attribute_key) create table attributekey( id int unsigned auto_increment primary key, goodstype_id int unsigned not null default 0 comment '外鍵,屬性key所屬的分類id', name varchar(50) not null default '' comment 'key name', is_sku tinyint unsigned not null default 0 comment '屬性是否為sku屬性', create_time int(10) unsigned not null default 0 comment '創建時間', update_time int(10) unsigned not null default 0 comment '更新時間' ) 商品sku表(后台管理員添加商品信息后自動生成的),價格和庫存在這里 create table goodssku( id int unsigned auto_increment primary key, goods_id int unsigned not null default 0 comment '所屬的商品id', specs_list varchar(500) not null default '' comment 'sku的json:{'內存':'2G','顏色':'紅色'}', pricr decimal(10,2) unsigned not null default 0 comment '售價', stock int unsigned not null default 0 comment '庫存', sales int unsigned not null default 0 comment 'sku銷量', create_time int(10) unsigned not null default 0 comment '創建時間', update_time int(10) unsigned not null default 0 comment '更新時間' ) 商品spu表 create table goods( id int unsigned auto_increment primary key, goodstype_id int unsigned not null default 0 comment '商品分類外鍵', brand_id int unsigned not null default 0 comment '品牌外鍵', name varchar(100) not null default '' comment '商品名稱', img varchar(150) not null default '' comment '商品縮略圖', sku_attribute_list varchar(500) not null default '' comment '所有sku屬性的集合,json格式:{'內存':['2G','4G','8G'],'顏色':['紅色','黃色']},用於前端展示,用戶點擊屬性拼接出specs,再加上goods_id,在規格表中查詢具體的sku', attribute varchar(500) not null default '' comment '普通屬性的集合,json:{'重量':'120g','是否4g:'是'}', status tinyint unsigned not null default 0 comment '商品狀態 ,1-在售 0-下架', sales int unsigned not null default 0 comment '銷量', detail varchar(999) not null default '' comment '商品詳情', create_time int(10) unsigned not null default 0 comment '商品創建時間', update_time int(10) unsigned not null default 0 comment '商品更新時間' ) 無限分類 create table goodstype( id int unsigned auto_increment primary key, name varchar(20) not null default '' comment '分類名', pid int unsigned not null default 0 comment '父級分類id(0:頂級分類)', path varchar(20) not null default '' comment '分類路徑(排序)', level int unsigned not null default 0 comment '分類等級(1:頂級分類)', create_time int(10) unsigned not null default 0 comment '創建時間', update_time int(10) unsigned not null default 0 comment '更新時間' ) 品牌表 create table brand( id int unsigned auto_increment primary key, name varchar(20) not null default '' comment '品牌名', logo_img varchar(150) not null default '' comment '品牌logo圖', info varchar(255) not null default '' comment '品牌簡介', create_time int(10) unsigned not null default 0 comment '品牌創建時間', update_time int(10) unsigned not null default 0 comment '品牌更新時間' )
workbench制作模型圖
如何讓workbench根據數據庫表的結構,自動生成ER圖呢?這需要用到逆向工程!!!!顧名思義就好,我只是個會簡單用的渣而已,暫時不懂得怎么專業地解釋.
打開workbench, 菜單欄”database”,然后選擇”Reverse Engineer…”,一路next,最后excute和close,就可以看到在ERR Diagram區域多了一張圖,點擊它,就看到了自己想要的ER圖了,至於ER圖中的連線所表示的具體關系,畫完后File-Export-Export as png如果看不懂的話,嘻嘻,問度娘啦~
如何讓workbench根據數據庫表的結構,自動生成ER圖呢?這需要用到逆向工程!!!!顧名思義就好,我只是個會簡單用的渣而已,暫時不懂得怎么專業地解釋.
打開workbench, 菜單欄”database”,然后選擇”Reverse Engineer…”,一路next,最后excute和close,就可以看到在ERR Diagram區域多了一張圖,點擊它,就看到了自己想要的ER圖了,至於ER圖中的連線所表示的具體關系,如果看不懂的話,嘻嘻,問度娘啦~