电商商品表设计

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
相关文章
相关标签/搜索