MySQL-THINKPHP 商城系統一 商品模塊的設計


在此之前,先了解下關於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圖中的連線所表示的具體關系,如果看不懂的話,嘻嘻,問度娘啦~

 


免責聲明!

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



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