首先数据库的设计我在百度上找了一大堆,可以说得上是众说纷纭啊!我看到一个中间表是这样设计的,商品ID sku属性,单价库存,看到中间属性存的是json然后就懵了,请各位大神告知什么操作能把这些属性还有值扔到一起,并且全部塞到指定的商品下边?
关于SKU的概念应该先谷歌了解下sku是属性and规格组成的,而属性规格又需要相互独立,为了避免未来业务扩展,实际一个属性属性链接另一个规格属性则就是一个sku,例如: 规格:颜色 属性:红色 规格:尺码 属性:xl 规格:尺码 属性:xxl 那么它的sku就又二个,(红色+xl)(红色+xxl) 下面是我的数据表设计 商品表 CREATE TABLE `product` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品标题', `category_id` int(11) NOT NULL COMMENT '商品分类编号', `mer_id` int(11) NOT NULL COMMENT '商家编号', `type_id` tinyint(4) NOT NULL COMMENT '类型编号', `sketch` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '简述', `intro` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品描述', `keywords` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品关键字', `marque` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品型号', `barcode` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '仓库条码', `brand_id` int(11) NOT NULL COMMENT '品牌编号', `virtual` int(11) NOT NULL DEFAULT '0' COMMENT '虚拟购买量', `price` decimal(8,2) NOT NULL COMMENT '商品价格', `market_price` decimal(8,2) NOT NULL COMMENT '市场价格', `integral` int(11) NOT NULL DEFAULT '0' COMMENT '可使用积分抵消', `stock` int(11) NOT NULL COMMENT '库存量', `warning_stock` int(11) NOT NULL COMMENT '库存警告', `picture_url` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '封面图', `status` tinyint(4) NOT NULL COMMENT '状态 -1=>下架,1=>上架,2=>预售,0=>未上架', `is_package` enum('0','1') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否是套餐', `is_integral` enum('0','1') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否是积分产品', `deleted_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=136 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; sku表 CREATE TABLE `product_sku` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(11) NOT NULL COMMENT '商品编码', `name` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'sku名称', `img` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '主图', `price` decimal(8,2) NOT NULL COMMENT '价格', `stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存', `code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品编码', `barcode` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品条形码', PRIMARY KEY (`id`), KEY `product_sku_name_product_id_index` (`name`,`product_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1125 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 规格表 CREATE TABLE `product_attribute` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `category_id` int(11) NOT NULL COMMENT '商品类别编号', `name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '属性名称', `sort` int(11) NOT NULL DEFAULT '999' COMMENT '排列次序', PRIMARY KEY (`id`), KEY `product_attribute_category_id_name_index` (`category_id`,`name`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 属性表 CREATE TABLE `product_attribute_option` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '选项名称', `attr_id` int(11) NOT NULL COMMENT '属性编码', `sort` int(11) NOT NULL DEFAULT '999' COMMENT '排序', PRIMARY KEY (`id`), KEY `product_attribute_option_name_attr_id_index` (`name`,`attr_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 规格属性绑定SKU的表 CREATE TABLE `product_attribute_and_option` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `sku_id` int(11) NOT NULL COMMENT 'sku编码', `option_id` int(11) NOT NULL DEFAULT '0' COMMENT '属性选项编码', `attribute_id` int(11) NOT NULL COMMENT '属性编码', `sort` int(11) NOT NULL DEFAULT '999' COMMENT '排序', `supplier_option_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `product_attribute_and_option_sku_id_option_id_attribute_id_index` (`sku_id`,`option_id`,`attribute_id`) ) ENGINE=InnoDB AUTO_INCREMENT=4819 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
关于SKU的概念应该先谷歌了解下
sku是属性and规格组成的,而属性规格又需要相互独立,为了避免未来业务扩展,实际一个属性属性链接另一个规格属性则就是一个sku,例如:
那么它的sku就又二个,(红色+xl)(红色+xxl)
下面是我的数据表设计
商品表
sku表
规格表
属性表
规格属性绑定SKU的表