多维度 SKU 应该有所讨论?

问答 Yu ⋅ 于 1个月前 ⋅ 最后回复由 leo 1周前 ⋅ 354 阅读

我所理解的多维度 SKU 复杂度上升很多。需要维护描述 SKU 的规格和规格值
文章中

为了方便讲解,本课程不会实现像天猫这种多维度的 SKU 系统,我们只实现一个维度的 SKU。多维度的 SKU 只不过运营层面工作量会大一些,简而言之就是编辑需要录入更多的商品类型而已,这里的数据结构和技术方案,也是适用于多维度 SKU 的。

这段描述我认为是不恰当的。我理解教程为了简化而做的取舍。但是不认同这句话。

本文章首发在 Laravel China 社区
本帖由 Summer 于 3周前 取消沉帖
最佳答案
  • leo

    @Yu @Toiu @aen233 @phpstack

    其实不复杂,加一个表:

    product_sku_attributes

    • product_id
    • name

    然后给 SKU 加一个 attributes 字段

    假如有个 id = 1 的商品 iPhone X,有 3 个 product_sku_attributes

    [
      ["id" => 1, "product_id" => 1, "name" => "套餐类型"],
      ["id" => 2, "product_id" => 1, "name" => "颜色"],
      ["id" => 3, "product_id" => 1, "name" => "内存"],
    ]

    新建 SKU 的时候,attributes 值为:

    [
      ["id" => 1, "value" => "套餐一"],
      ["id" => 2, "value" => "土豪金"],
      ["id" => 3, "value" => "256G"],
    ]

    在逻辑上并不复杂,只是 Laravel-Admin 不太好支持罢了。

    有时候不需要一味地追求数据库设计范式,特别是 Mysql 加入 JSON 支持之后,只要不涉及到搜索查询的都可以往 JSON 字段里丢。

    3周前 2
回复数量: 20
  • 没理解多维度有什么不同 能不能给个多维度的数据表模型

    4周前
  • Yu

    @Aqrun 这个不难理解吧。
    比如 iPhoneX 作为一个 SPU
    它有
    颜色:黑色,白色
    大小:64G 256G
    这就是四个SKU了。

    3周前
  • Toiu 开发 @ 重庆优软信息技术有限公司

    @Yu 那这样后台对sku的结构管理上是不是还有较大差异 因为涉及到用户购买界面要同时选多个属性来得到一个sku

    3周前
  • Toiu 开发 @ 重庆优软信息技术有限公司

    +1

    3周前
  • Toiu 开发 @ 重庆优软信息技术有限公司

    @leo @summer

    3周前
  • @Yu 谢谢。好吧 增加多个属性就是多维度

    3周前
  • Yu

    @Aqrun 这里的属性有个父子结构。

    @Toiu 需要多规格 多属性。 就需要增加至少 3张表来维护 sku。 然后至于店铺管理后台中商品的管理自然需要做sku的处理。

    spus
    skus
    goods_properties
    goods_property_items
    spu_property_property_item_skus

    大概就是这样五张表去描述商品sku

    其实找一个现有的电商平台一看就知道需要做什么样子了。

    我也是半年前有做电商需求,然后从无sku改有sku中,折腾的不轻,所以看到这本书这部分想要点过来看是否有更好的解决方案。

    另外好奇一点,为什么这个帖子会被下沉,我看了下沉说明。并不觉得违反了其中的哪一条?如果实在要说,是因为这个帖子太水的缘故? @Summer

    3周前
  • Summer 站长 @ laravel-china.org

    文章格式已帮你修改,早上被 @ 好几下,再加上文章格式有点奇怪,有点烦哈就沉贴,已改正

    3周前
  • aen233 php @ abc

    同希望至少2个维度吧。。。。。

    3周前
  • 小小萌新,希望大神们详解一下

    3周前
  • leo

    @Yu @Toiu @aen233 @phpstack

    其实不复杂,加一个表:

    product_sku_attributes

    • product_id
    • name

    然后给 SKU 加一个 attributes 字段

    假如有个 id = 1 的商品 iPhone X,有 3 个 product_sku_attributes

    [
      ["id" => 1, "product_id" => 1, "name" => "套餐类型"],
      ["id" => 2, "product_id" => 1, "name" => "颜色"],
      ["id" => 3, "product_id" => 1, "name" => "内存"],
    ]

    新建 SKU 的时候,attributes 值为:

    [
      ["id" => 1, "value" => "套餐一"],
      ["id" => 2, "value" => "土豪金"],
      ["id" => 3, "value" => "256G"],
    ]

    在逻辑上并不复杂,只是 Laravel-Admin 不太好支持罢了。

    有时候不需要一味地追求数据库设计范式,特别是 Mysql 加入 JSON 支持之后,只要不涉及到搜索查询的都可以往 JSON 字段里丢。

    3周前 2
  • @leo 如果要加这种商品属性的话,只有product_sku_attributes表是不是不太够,因为这个表仅仅保存的是商品的拥有的属性,并没有记录属性具体的种类,比如只保存了颜色这个属性,但是不知道颜色有哪几种。是否需要另一个attributes_name表用来存储每种属性对应的类别,起名为attributes_name表,以attributes_id关联product_sku_attributes表的主键,存入数据如下


    ["id"=>1,"attributes_id"=>1, "name"=>"套餐一"]

    ["id"=>2,"attributes_id"=>1, "name"=>"套餐二"]

    ["id"=>3,"attributes_id"=>1, "name"=>"套餐三"]

    ……

    ["id"=>9,"attributes_id"=>2, "name"=>"深空灰"]

    ["id"=>10,"attributes_id"=>2, "name"=>"土豪金"]

    ["id"=>11,"attributes_id"=>3, "name"=>"256G"]

    加完这个表之后接下来就可以在SKU表新增的attributes字段存入attributes_name表的ID字符串,以此构成SKU,比如进货500台套餐一的、深空灰的、256G的、手机,这里有三个具体的属性,套餐一、深空灰、256G,在attributes_name表中找到对应具体属性的ID,拼成字符串后存入,那attributes字段存入的就是"1,9,11" 不知在这样设计是否合理,还请提一些意见

    2周前
  • leo

    @simplewater 没有必要,有什么颜色运营手动填进去就行了,难道要把世界上所有的颜色都放到数据库里吗

    2周前
  • @leo 嗯,可是直接存json数据的话,前台页面在用户选择完商品属性之后能够查询出对应商品的库存量嘛

    2周前
  • leo

    @simplewater 一个商品的 SKU 总共就那么几个,用前端筛选就能搞定

    2周前
  • @leo 实在抱歉,我没能明白您的意思,能再详细说明一下怎么筛选吗

    2周前
  • leo

    @simplewater 用户选中了 土豪金,那就把 SKU 的 attributes 属性里包含 ["id" => 2, "value" => "土豪金"] 的展示出来就可以了

    2周前
  • @leo 明白了,谢谢大佬 :grin:

    2周前
  • @leo ,没怎么看明白,每个 SKU 都有唯一的 ID 吗?个人理解:对于商城来说,统计分析是非常重要的。颜色,套餐,内存(256G)都有可能被用来统计分析。用 json 保存用户输入的商品基本参数(例:颜色,内存等重要参数),对于以后会很不方便。

    1周前
  • leo

    @FreeMason 像你说的这种级别统计分析是不可能直接从 Mysql 里面去读取的,另外 Mysql 5.7 的 json 格式了解一下。

    1周前
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 250 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Composer 中文文档

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档