使用MySQL创建商品SKU总结

作者: 乘风御上者 分类: MySQL 发布时间: 2019-09-18 21:57

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编写笛卡尔积算法,提前生成所有规则的空数组,渲染出所有数据输入框。

提交到后台将数据整理成数据表所需要的上述规则即可,有问题的道友请留言。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表回复