商品SKU表SQL

CREATE TCABLE `store_goods_sku` (
  `sku_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品规格id',
  `goods_id` int(10) unsigned NOT NULL COMMENT '商品id',
  `spec_sku_id` varchar(255) NOT NULL DEFAULT '0' COMMENT '商品sku记录索引 (由规格id组成)',
  `goods_no` varchar(100) NOT NULL DEFAULT '' COMMENT '商品编码',
  `goods_thumb` varchar(100) NOT NULL DEFAULT '' COMMENT '商品封面',
  `goods_price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '商品价格',
  `line_price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '商品划线价',
  `stock_num` int(10) unsigned NOT NULL COMMENT '当前库存数量',
  `goods_sales` int(10) unsigned NOT NULL COMMENT '商品销量',
  `goods_weight` double unsigned NOT NULL COMMENT '商品重量(Kg)',
  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`sku_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='商品规格表';

CREATE TABLE `store_goods_spec` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `goods_id` int(10) unsigned NOT NULL COMMENT '商品id',
  `spec_id` int(10) unsigned NOT NULL COMMENT '规格组id',
  `spec_value_id` int(10) unsigned NOT NULL COMMENT '规格值id',
  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='商品与规格值关系记录表';

CREATE TABLE `store_spec` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '规格组id',
  `spec_name` varchar(255) NOT NULL DEFAULT '' COMMENT '规格组名称',
  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='商品规格组记录表';

CREATE TABLE `store_spec_value` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '规格值id',
  `spec_value` varchar(255) NOT NULL COMMENT '规格值',
  `spec_id` int(11) NOT NULL COMMENT '规格组id',
  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='商品规格值记录表';
本作品采用《CC 协议》,转载必须注明作者和本文链接
Image
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 15

可以每个表展示两三行主要字段数据吗?

3年前 评论
fatrbaby

表里面的字段其实是有各自的scope的,所以在store_goods_sku表里面,sku_id这样的字段名完全是多余的。

3年前 评论
Image wxf666 3年前
Image frans (楼主) 3年前
CREATE TABLE `goods_sku` (
  `id` int NOT NULL AUTO_INCREMENT,
  `spu_id` int NOT NULL DEFAULT '0' COMMENT '商品Id',
  `specs_value_ids` varchar(255) NOT NULL DEFAULT '' COMMENT '每行规则属性ID 按逗号连接,比如 1,33,55 ',
  `price` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '现价',
  `cost_price` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '原价',
  `stock` int unsigned NOT NULL DEFAULT '0' COMMENT '库存',
  `pic` varchar(1000) NOT NULL DEFAULT '' COMMENT '小图,商品列表显示',
  `pic_bigger` varchar(1000) NOT NULL DEFAULT '' COMMENT '大图,横着的,主要用于商品详情。',
  `pic_biggest` varchar(1000) NOT NULL DEFAULT '' COMMENT '最大图,竖着的,主要用于海报。',
  `is_valid` tinyint NOT NULL DEFAULT '1' COMMENT '1有效,0无效',
  `is_default` tinyint NOT NULL DEFAULT '0' COMMENT '1默认的0不是默认',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `lock_stock` int unsigned NOT NULL DEFAULT '0' COMMENT '锁定的库存',
  PRIMARY KEY (`id`),
  KEY `spu_id` (`spu_id`),
  KEY `specs_value_ids` (`specs_value_ids`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb3 COMMENT='商品sku表'

CREATE TABLE `goods_spu` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '商品spu名称,例如iphone11',
  `category` int NOT NULL DEFAULT '1' COMMENT '大类',
  `is_valid` tinyint NOT NULL DEFAULT '1' COMMENT '1有效,0无效',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `class_id` int NOT NULL DEFAULT '0' COMMENT '外键,',
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COMMENT='商品spu表'

CREATE TABLE `specs` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '规格名,比如,内存大小',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COMMENT='规格表'

CREATE TABLE `specs_value` (
  `id` int NOT NULL AUTO_INCREMENT,
  `specs_id` int NOT NULL DEFAULT '0' COMMENT '规格ID,关联规格表,比如  1:代表内存大小 ',
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '规格属性名,比如 128G内存',
  `spu_id` int NOT NULL DEFAULT '0' COMMENT 'spu_id',
  `is_valid` tinyint NOT NULL DEFAULT '1' COMMENT '1有效,0无效',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `sort` int NOT NULL DEFAULT '0' COMMENT '排序,从大到小',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index1` (`spu_id`,`specs_id`,`name`),
  KEY `specs_id` (`specs_id`),
  KEY `spu_id` (`spu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb3 COMMENT='规格属性表'

这是我司的 :smirk:

3年前 评论
Image laradocs 3年前
Image frans (楼主) 3年前
Image SammlHui 3年前
Image wxf666 3年前
Image mingzaily 3年前
Image wxf666 3年前

只要有人下单且付钱,则,此时,需要修改sku的锁定库存字段,进行扣减。 实际这个字段可以设成允许负数,这样,发货时库存不足,先补库存到正数,然后再发货。 否则,会导致库存计算错误。

3年前 评论

楼主,另外一个帖子有人问

如果要做数据分析,比如某个颜色的销量占比,排行

楼主的 SQL 会怎么写呢?

3年前 评论

能不能照顾一下菜鸟,给几条每个表的测试数据哈哈,光给sql菜鸟很吃力,还有同问,当想统计某个颜色销量占比,排行什么的sql怎么写

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!