使用MySQL创建商品SKU总结
SKU可以简单的理解为每个商品的属性:颜色/尺码等信息(比如红色M码是一个SKU;红色L码又是一个SKU)。一款商品多色,则是有多个SKU,例:一件衣服,有红色、白色、蓝色,则SKU编码也不相同,如相同则会出现混淆,发错货。
简单的商品SKU数据建模:product表 和 product_sku表
产品主表 product 两个重要字段
// 产品规格全部数据(每次sku表改动都要同步修改该字段数据)
sku_data
// 存储的数据(数组转json后保存)
[
["rule_name" => "重量","rule_value" => "1kg,2kg,5kg"],
["rule_name" => "颜色","rule_value" => "红色,绿色,蓝色"],
...
]
// 产品规格编码(编码目的与sku表对应)
sku_desc
// 存储的数据(数组转json后保存)
[
[
// 规则名称
"rule_name": "重量",
// 规则唯一标识
"rule_index": 'A',
// 规则的所有可能
"rule_list": [
// 规则列表
[
// 具体规则名称
"rule_value": "1kg",
// 根据规则唯一标识编号
"rule_id": "A0",
// 该字段主要方便前端使用,判定用户是否选择该规则
"rule_on": 0
],
[
"rule_value": "2kg",
"rule_id": "A1",
"rule_on": 0
],
[
"rule_value": "5kg",
"rule_id": "A2",
"rule_on": 0
]
]
],
[
"rule_name": "颜色",
"rule_index": 'B',
"rule_list": [
[
"rule_value": "红色",
"rule_id": "B0",
"rule_on": 0
],
[
"rule_value": "绿色",
"rule_id": "B1",
"rule_on": 0
],
[
"rule_value": "蓝色",
"rule_id": "B2",
"rule_on": 0
]
]
],
// 更多...
]
产品SKU表 product_sku同样两个重要字段
// 该商品具体规则拼接的字符串
rule_info: "重量:1kg,颜色:绿色"
// 对应商品中规则rule_id的字符串,形成该商品唯一标识
rule_ids: "A0,B1"
产品SKU表的数据都是根据主表生成,上面例子中有2条规则:重量和颜色,重量有3种,颜色有3种,所以共有9条产品SKU需要生成。
[
["rule_info" => "重量:1kg,颜色:红色", "rule_ids" => "A0,B0" ...],
["rule_info" => "重量:1kg,颜色:绿色", "rule_ids" => "A0,B1" ...],
["rule_info" => "重量:1kg,颜色:蓝色", "rule_ids" => "A0,B2" ...],
["rule_info" => "重量:2kg,颜色:红色", "rule_ids" => "A1,B0" ...],
["rule_info" => "重量:2kg,颜色:绿色", "rule_ids" => "A1,B1" ...],
["rule_info" => "重量:2kg,颜色:蓝色", "rule_ids" => "A1,B2" ...],
["rule_info" => "重量:5kg,颜色:红色", "rule_ids" => "A2,B0" ...],
["rule_info" => "重量:5kg,颜色:绿色", "rule_ids" => "A2,B1" ...],
["rule_info" => "重量:5kg,颜色:蓝色", "rule_ids" => "A2,B2" ...],
]
数据表生成还是比较简单的,调用产品数据给前端使用也比较方便。
后台管理商品的增删改查需要通过js编写笛卡尔积算法,提前生成所有规则的空数组,渲染出所有数据输入框。
提交到后台将数据整理成数据表所需要的上述规则即可,有问题的道友请留言。