電商商品表設計

1、瞭解下商品中的兩個概念:SPU和SKUhtml

SPU(Standard Product Unit):標準化產品單元。是商品信息聚合的最小單位,是一組可複用、易檢索的標準化信息的集合,該集合描述了一個產品的特性。通俗點講,屬性值、特性相同的商品就能夠稱爲一個SPU。網絡

SKU=Stock Keeping Unit(庫存量單位)。即庫存進出計量的基本單元,能夠是以件,盒,托盤等爲單位。iphone

舉個例子:iPhone6是一個SPU,iPhone6 32G 白色是一個SKU,iPhone6 128G 白色是另外一個SKU。ide

 

咱們剛纔說的 iphone6,書面稱謂叫「SPU」 Standard Product Unit (標準化產品單元),它是最接近用戶認知的產品單元,好比用戶說,我想買個 iphone四、iphone六、小米 4,這些都是 SPU,也就是用戶廣泛認知範圍內的一種產品。然而在電商系統中只有 SPU 並無什麼卵用,用戶購買時確定要肯定,須要什麼顏色、多少 G 的,支持什麼網絡。因此,例如金色 -16G- 移動版 iphone6,就須要一個名稱去規範它,這個名稱叫「SKU」 Stock Keeping Unit(庫存單元),換句話理解就是庫存裏面存的東西,庫存裏存在東西確定是具體的某種規格的 iphone6。基於這個理解,咱們先畫下圖:spa

 

SPU表有了,這裏仍是以iPhone6爲例,iPhone6有內存16G的,有32G的,有黑色,有白色等信息,這些信息咱們稱之爲規格,好比內存是一種規格,顏色是一種規格。這些規格放在那裏呢,放在SPU表裏面天然是不合適的,由於每一個SPU的規格都不同。所以這裏須要一張規格表,用來存放內存,顏色(不是存放32G,黑色,就存放「內存」,「顏色」這個值,表示這個SPU具備內存,顏色規格),而後用一張中間表,把SPU表和規格表關聯起來,如圖:.net

 

接下來須要解決的是,如何存放「32G」,「黑色」這些值呢?這些時具體規格的值,只須要新建一張規格值表便可。規格表和規格值表是一對多的關係,即一個規格有多個值,內存有32G,64G等。設計

發現還少了品牌的概念,SPU與品牌的關係是一對一的關係,一個SPU具備一個品牌(iPhone6的品牌是蘋果),這點好理解,所以只要新建一張品牌表,而後SPU表裏添加一個品牌id。3d

 

至此,咱們彷佛已經能夠經過規格搜索出大部分的商品,屏幕尺寸,網絡,機身內存這三項都是規格,品牌咱們也知道了。code

可是,購物商城中不可能只賣手機,還會賣電腦,衣服等。這裏咱們衍生出另外一個概念:分類。其中手機是一種分類。所以,咱們要新建一張分類表,裏面存放各類分類名稱,而後在SPU表裏面添加一個分類id,如圖:htm

 

如今,咱們已經把SPU相關的表設計好了,如今來設計SKU相關的表。

根據SKU的定義得知,SKU是SPU的一種詳細說明,所以SPU與SKU的關係是一對多的關係,即一個SPU對應多個SKU,首先咱們要有一張SKU表:

 

 

 

其中SKU表中有一個spu_id。而後咱們來看下SKU須要哪些字段,上面說到了SPU有規格,那SKU就落實到了具體的規格值,即具體的內存,顏色等。規格值表已經有了,所以須要建一張SKU與規格值的關聯表:

 

 

 

大部分的內容咱們都有了,但還缺乏幾樣東西,若是是C2C的商城,那應該有個店鋪,還有一個增值保障。一個SKU對應一個店鋪,可直接在SKU表裏加一個店鋪id,而後有一張獨立的店鋪表。

 

 

至於增值保障,確定須要一張表來存放增值保障信息,而後它跟SKU的關係是多對多的關係,須要一張中間表來關聯

 

 

至此,商品表的核心內容已經設計得差很少了。

原文連接:http://www.javashuo.com/article/p-ptghsoyu-ep.html


一張類似的設計圖

 圖片來源:http://www.360doc.com/content/18/0810/15/58569063_777227507.shtml

 

 數據表設計

 1 對於商品模塊,統一使用goods_作前綴。  2 首先是兩個比較簡單的表:分類表和品牌表  3 
 4 分類表:  5 CREATE TABLE `goods_category` (  6  `id` bigint(20) unsigned NOT NULL auto_increment,  7  `category_name` varchar(50) NOT NULL COMMENT '分類名稱',  8  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  9  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  10  PRIMARY KEY (`id`)  11 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分類表';  12 
 13 品牌表:  14 CREATE TABLE `goods_brand` (  15  `id` bigint(20) unsigned NOT NULL auto_increment,  16  `brand_name` varchar(50) NOT NULL COMMENT '品牌名稱',  17  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  18  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  19  PRIMARY KEY (`id`)  20 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='品牌表';  21 
 22 接下來是SPU表:  23 
 24 CREATE TABLE `goods_spu` (  25  `id` bigint(20) unsigned NOT NULL auto_increment,  26  `spu_no` varchar(50) NOT NULL COMMENT '商品編號,惟一',  27  `goods_name` varchar(50) NOT NULL COMMENT '商品名稱',  28  `low_price` decimal(9,2) NOT NULL COMMENT '最低售價',  29  `category_id` bigint(20) NOT NULL COMMENT '分類id',  30  `brand_id` bigint(20) NOT NULL COMMENT '品牌id',  31  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  32  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  33  PRIMARY KEY (`id`),  34  UNIQUE KEY `uk_spu_no` (`spu_no`)  35 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='spu表';  36 
 37 而後是SPU規格相關的表:  38 規格表:  39 CREATE TABLE `goods_spec` (  40  `id` bigint(20) unsigned NOT NULL auto_increment,  41  `spec_no` varchar(50) NOT NULL COMMENT '規格編號',  42  `spec_name` varchar(50) NOT NULL COMMENT '規格名稱',  43  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  44  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  45  PRIMARY KEY (`id`)  46 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='規格表';  47 
 48 規格值表:  49 CREATE TABLE `goods_spec_value` (  50  `id` bigint(20) unsigned NOT NULL auto_increment,  51  `spec_id` bigint(20) NOT NULL COMMENT '規格id',  52  `spec_value` varchar(50) NOT NULL COMMENT '規格值',  53  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  54  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  55  PRIMARY KEY (`id`)  56 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='規格值表';  57 
 58 SPU規格表  59 CREATE TABLE `goods_spu_spec` (  60  `id` bigint(20) unsigned NOT NULL auto_increment,  61  `spu_id` bigint(20) NOT NULL COMMENT 'spu_id',  62  `spec_id` bigint(20) NOT NULL COMMENT 'spec_id',  63  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  64  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  65  PRIMARY KEY (`id`)  66 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='spu規格表';  67 
 68 接下來是SKU相關的表:  69 SKU表:  70 CREATE TABLE `goods_sku` (  71  `id` bigint(20) unsigned NOT NULL auto_increment,  72  `sku_no` varchar(50) NOT NULL COMMENT 'sku編號,惟一',  73  `sku_name` varchar(50) NOT NULL COMMENT 'sku名稱(冗餘spu_name)',  74  `price` decimal(9,2) NOT NULL COMMENT '售價',  75  `stock` int(11) NOT NULL COMMENT '庫存',  76  `shop_id` bigint(20) NOT NULL COMMENT '商鋪id,爲0表示自營',  77  `spu_id` bigint(20) NOT NULL COMMENT 'spu_id',  78  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  79  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  80  PRIMARY KEY (`id`)  81 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sku表';  82 
 83 商鋪表:  84 CREATE TABLE `shop_info` (  85  `id` bigint(20) unsigned NOT NULL auto_increment,  86  `shop_name` varchar(50) NOT NULL COMMENT '店鋪名稱',  87  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  88  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  89  PRIMARY KEY (`id`)  90 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='店鋪表';  91 
 92 增值保障表:  93 CREATE TABLE `goods_safeguard` (  94  `id` bigint(20) unsigned NOT NULL auto_increment,  95  `safeguard_name` varchar(50) NOT NULL COMMENT '保障名稱',  96  `price` decimal(9,2) NOT NULL COMMENT '保障價格',  97  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,  98  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',  99  PRIMARY KEY (`id`) 100 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='增值保障'; 101 
102 SKU增值保障 103 CREATE TABLE `goods_sku_safeguard` ( 104  `id` bigint(20) unsigned NOT NULL auto_increment, 105  `sku_id` bigint(20) NOT NULL COMMENT 'sku_id', 106  `safeguard_id` bigint(20) NOT NULL COMMENT 'safeguard_id', 107  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, 108  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00', 109  PRIMARY KEY (`id`) 110 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sku增值保障'; 111 
112 SKU規格值表 113 CREATE TABLE `goods_sku_spec_value` ( 114  `id` bigint(20) unsigned NOT NULL auto_increment, 115  `spu_id` bigint(20) NOT NULL COMMENT 'sku_id', 116  `spec_value_id` bigint(20) NOT NULL COMMENT '規格值id', 117  `gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, 118  `gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00', 119  PRIMARY KEY (`id`) 120 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sku規格值';
View Code
相關文章
相關標籤/搜索