看了很多商品sku的文章也没看到很好的思路(sku怎么保存最优雅呢)

{
"attrs": {
    "颜色": [
        "红色",
        "绿色"
    ],
    "长度": [
        "18厘米",
        "20厘米"
    ]
},
"sku": [
    {
        "颜色": "红色",
        "长度": "18厘米",
        "price": "0.25"
    },
    {
        "颜色": "红色",
        "长度": "20厘米",
        "price": "0.3"
    },
    {
        "颜色": "绿色",
        "长度": "18厘米",
        "price": "0.3"
    },
    {
        "颜色": "绿色",
        "长度": "20厘米",
        "price": "0.15"
    }
]
}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

我没有实际经验,只是来讨论学习下 SQL

能不能一张 属性表(ID,父ID,名字) 和一张 sku表(ID,属性IDs JSON,值) 呢?

1年前 评论
周小云 (楼主) 1年前
wxf666 (作者) 1年前
wxf666 (作者) 1年前
周小云 (楼主) 1年前
周小云 (楼主) 1年前
周小云 (楼主) 1年前
wxf666 (作者) 1年前
周小云 (楼主) 1年前
周小云 (楼主) 1年前
讨论数量: 35
Mutoulee

这个18厘米的红色是啥样的? 很好奇~ :sweat_smile:

1年前 评论
panda-sir 1年前
Mutoulee (作者) 1年前
zongscan 1年前
Complicated

我都是多对多的表存的,简单点就是json

1年前 评论
周小云 (楼主) 1年前

我没有实际经验,只是来讨论学习下 SQL

能不能一张 属性表(ID,父ID,名字) 和一张 sku表(ID,属性IDs JSON,值) 呢?

1年前 评论
周小云 (楼主) 1年前
wxf666 (作者) 1年前
wxf666 (作者) 1年前
周小云 (楼主) 1年前
周小云 (楼主) 1年前
周小云 (楼主) 1年前
wxf666 (作者) 1年前
周小云 (楼主) 1年前
周小云 (楼主) 1年前

随便找个开源的商城看看 当然也不一定是最好的 但是别人开源在用的也是有点道理的

1年前 评论
周小云 (楼主) 1年前

商品规格我主要分为三张表,一个存规格组合、以及规格属性和值。具体的实现方式你可以参考我的那个盲盒商城开源代码,想要看效果可以搜 小程序 “电商云+”;希望能够帮助到你

REATE TABLE `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='商品规格值记录表';
1年前 评论
周小云 (楼主) 1年前
wxf666 1年前
SammlHui (作者) 1年前
周小云 (楼主) 1年前
SammlHui (作者) 1年前
SammlHui (作者) 1年前
周小云 (楼主) 1年前

sku 不是商品编码么,怎么变成了商品对象信息

1年前 评论

我就想问下,企业内部下单系统,产品也想上sku,最后要做数据分析,比如某个颜色的销量占比,排行,这种利于最后做数据分析的sku最后怎么设计的好。

1年前 评论
wxf666 1年前
PHPisGod (作者) 1年前
周小云 (楼主) 1年前
wxf666 1年前
PHPisGod (作者) 1年前
  • 商品表(product)
  • 商品拥有skuattr表
    • skuattrid
    • product_id
  • attr表
    • id
    • name
  • attrs
    • id
    • attrid
    • attr_value

attr: id:1, name:颜色

attrs: id:1xx, attrid:1, attr_value:红色

skuattr: attrsid: 1xx:2xx:3xx:4xx, product_id:xxx

1年前 评论

spu hasMany sku

sku hasMany attribute

前端的组织留给前端实现,数据库层面就实现上面三者的存储即可。

1年前 评论

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