继『多维度 SKU 应该有所讨论』之后的再次讨论
在看完《商城进阶》之后,一直没太明白多维 SKU 到底该如何处理(我是菜鸡)。后来看到 多维度 SKU 应该有所讨论 下众多回复,慢慢有所体会,但思来想去总觉得有些不对劲,下面将我的想法说一下,请大家予以批评。此致敬礼。
Google 了很多资料,大都太复杂或者难以理解,反反复复琢磨了 leo 的最佳回复,觉得这个方案还是可行的
加一个表: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"],
]
最终在数据库中的数据表现大概是这样
没错,逻辑上没有问题的。但是这个时候我有一个疑问,如果在编辑的时候需要把 土豪金
改成 土豪黄
,或者删除 256G
,理论上通过 JSON 处理是可以的,但是这就需要去找商品对应的所有 SKU 并修改 attributes
中的内容,我觉得还是太麻烦。
现在我的想法是不要这个 attributes
字段,增加另外一张表 product_attribute_values
用以记录每个属性值,在 product_skus
中增加 attribute_id
和 attribute_value_id
,这样在编辑的时候也只需要修改 product_attribute_values
中的一条记录,删除的时候也只需要在 product_skus
去找 attribute_value_id
对应的记录,简单明了。
不知道我这样想的对不对,请各位众神给点意见......
product_skus
在这里新增attribute_id
和attribute_value_id
是不对的。如多属性的sku
怎么办? 比如手机 内存 128G 手机,颜色红色... 你一对一的关联肯定错误,商品和SKU是不同的。如果不使用 json 存储那么你需要 新建一张表至少
attr_values
字段pid
,aid
,name
,pid
关联商品aid
关联规格,name
属性值product_skus 中的 attributes 字段,我存是1,2,3,4 这个模式的。这个通过笛卡尔积算法得来,然后从小到大的排序,确定唯一,然后另起了字段json存详情。
我记得我当时分4个表,一个颜色,一个规格,一个加价的表还有一个库存的总表,库存的表寸其他四个表的id,规格多存一个型号什么的比如x,l,xxl,最后用笛卡尔积算出来存到库存表 :joy:
@xh @全场我最姜姜姜丶 @draven 可以参考一下 Ruby 的一个电商系统,功能很全面,所以数据表比较多,https://github.com/solidusio/solidus/tree/...