电商系统商品数据表设计分析与总结

本文针对电商系统中的商品管理模块进行分析,总结出如何设计一个合理的商品管理表。分析的角度,重点放在商品的规格设计上,针对单一规格、多规格和组合规格情况进行如何设计表的总结。

前期分析

对于商品功能,我这里总结了至少需要下面这几张表。



表名 表作用 常用字段

category 商品分类表,存储商品分类信息 一般有数据 id,分类名称

goods 商品信息表,存储商品的基础信息 一般有数据 id,商品名称,商品封面 (外键图片表 id),小标题,显示基础价格,销售量,商品状态,商品排序等

goods_category 商品分类关联,存储商品与商品分类的关联关系,存储商品与分类一对多的情况 有商品 id,分类的 id

image 图片表,存储系统的图片信息 一般有数据 id,图片地址,图片名称,图片大小

goods_image 商品图片关联,存储商品与图片的关联关系,存储商品与图片一对多的情况 有商品 id,图片 id

spec 商品规格组表,存储商品的规格组,例如颜色、重量、材质等分组信息 一般有数据 id,组名称

spec_value 商品规格组值表,存储商品的规格组值,一个规格组,有多个规格值,则存储多条数据。如规格组里面有颜色,则颜色对应下面有红色、黄色、蓝色等颜色信息 一般有数据 id,规格组 id,规格组对应值

goods_spec 商品规格值表,存储商品的信息与规格组值得信息,一般都是一对多的关系,则一个关联关系一行数据 有商品 id,规格组值 id,库存,销量,编码,重量等信息

单一个规格设计

什么是单一规格,所谓的单一规格就是默认只有一种规格。当用户选择商品下单时,不需要去选择什么规格,直接默认一种商品属性。例如下面的截图示例:

自动草稿

对应的逻辑关系如下图:

自动草稿

管理端截图:

自动草稿

多种规格设计

什么是多种规格,多种规格就是指不包含一种规格,例如一个商品中有颜色、重量、大小等等规格,这种不同的规格又有不同的值。

多种规格的表该如何设计呢?其实和上面的逻辑关系是一样的,无非就是一种规格多种值时,添加多条记录而已。

表设计总结

商品记录表#

Code:

  1. CREATE TABLE goods (
  2.   goods_id int(11) UNSIGNED NOT NULL COMMENT '商品id',
  3.   goods_name varchar(255) NOT NULL DEFAULT '' COMMENT '商品名称',
  4.   selling_point varchar(500) NOT NULL DEFAULT '' COMMENT '商品卖点',
  5.   category_id int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '商品分类id',
  6.   deduct_stock_type tinyint(3) UNSIGNED NOT NULL DEFAULT '20' COMMENT '库存计算方式(10下单减库存 20付款减库存)',
  7.   content longtext NOT NULL COMMENT '商品详情',
  8.   sales_initial int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '初始销量',
  9.   sales_actual int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '实际销量',
  10.   goods_sort int(11) UNSIGNED NOT NULL DEFAULT '100' COMMENT '商品排序(数字越小越靠前)',
  11.   goods_status tinyint(3) UNSIGNED NOT NULL DEFAULT '10' COMMENT '商品状态(10上架 20下架)',
  12.   is_delete tinyint(3) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否删除',
  13.   create_time int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
  14.   update_time int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间'
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品记录表';

商品分类表#

Code:

  1. CREATE TABLE `category` (
  2.   `category_id` int(11) UNSIGNED NOT NULL COMMENT '商品分类id',
  3.   `name` varchar(50) NOT NULL DEFAULT '' COMMENT '分类名称',
  4.   `parent_id` int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '上级分类id',
  5.   `image_id` int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '分类图片id',
  6.   `sort` int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '排序方式(数字越小越靠前)',
  7.   `create_time` int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
  8.   `update_time` int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间'
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品分类表';

商品分类关联表#

Code:

  1. CREATE TABLE `category` (
  2.   `category_id` int(11) UNSIGNED NOT NULL COMMENT '商品分类id',
  3.   `goods_id` int(11) NOT NULL DEFAULT 0 COMMENT '商品id',
  4.   `create_time` int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
  5.   `update_time` int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间'
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品分类关联表';

图片表#

Code:

  1. CREATE TABLE upload_file (
  2.   file_id int(11) UNSIGNED NOT NULL COMMENT '文件id',
  3.   storage varchar(20) NOT NULL DEFAULT '' COMMENT '存储方式',
  4.   file_url varchar(255) NOT NULL DEFAULT '' COMMENT '存储域名',
  5.   file_name varchar(255) NOT NULL DEFAULT '' COMMENT '文件路径',
  6.   file_size int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '文件大小(字节)',
  7.   file_type varchar(20) NOT NULL DEFAULT '' COMMENT '文件类型',
  8.   extension varchar(20) NOT NULL DEFAULT '' COMMENT '文件扩展名',
  9.   is_user int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否为c端用户上传',
  10.   is_recycle tinyint(3) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已回收',
  11.   is_delete tinyint(3) UNSIGNED NOT NULL DEFAULT '0' COMMENT '软删除',
  12.   create_time int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间'
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='图片记录表';

商品图片表#

Code:

  1. CREATE TABLE goods_image (
  2.   id int(11) UNSIGNED NOT NULL COMMENT '主键id',
  3.   goods_id int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '商品id',
  4.   image_id int(11) NOT NULL COMMENT '图片id(关联图片记录表)',
  5.   create_time int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间'
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品图片记录表';

规格组表#

Code:

  1. CREATE TABLE spec (
  2.   spec_id int(11) UNSIGNED NOT NULL COMMENT '规格组id',
  3.   spec_name varchar(255) NOT NULL DEFAULT '' COMMENT '规格组名称',
  4.   create_time int(11) NOT NULL COMMENT '创建时间'
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品规格组记录表';

规格组值表#

Code:

  1. CREATE TABLE spec_value (
  2.   spec_value_id int(11) UNSIGNED NOT NULL COMMENT '规格值id',
  3.   spec_value varchar(255) NOT NULL COMMENT '规格值',
  4.   spec_id int(11) NOT NULL COMMENT '规格组id',
  5.   create_time int(11) NOT NULL COMMENT '创建时间'
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品规格值记录表';

商品规格值关联表#

Code:

  1. CREATE TABLE goods_sku (
  2.   goods_sku_id int(11) UNSIGNED NOT NULL COMMENT '商品规格id',
  3.   goods_id int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '商品id',
  4.   spec_sku_id varchar(255) NOT NULL DEFAULT '0' COMMENT '商品sku记录索引 (由规格id组成)',
  5.   image_id int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '图片id',
  6.   goods_no varchar(100) NOT NULL DEFAULT '' COMMENT '商品编码',
  7.   goods_price decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00' COMMENT '商品价格',
  8.   line_price decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00' COMMENT '商品划线价',
  9.   stock_num int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '当前库存数量',
  10.   goods_sales int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '商品销量',
  11.   goods_weight double UNSIGNED NOT NULL DEFAULT '0' COMMENT '商品重量(Kg)',
  12.   create_time int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
  13.   update_time int(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间'
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品规格表';
 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

除特别注明外,本站所有文章均基于CC-BY-NC-SA 4.0原创,转载请注明出处。
文章名称:《电商系统商品数据表设计分析与总结》
文章链接:https://www.vvso.cn/xlbk/15910.html
分享到: 更多 (0)

热门文章

评论 抢沙发

切换注册

登录

忘记密码 ?

切换登录

注册