参考京东商品详情
可以看出来一个商品有多个属性(颜色、尺码),每个属性对应多个规格,所有的属性规格必选其一组合起来为一个 SKU
设计表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| # 基础产品表 CREATE TABLE `product` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '产品名', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT ='产品表';
# 产品的属性表,存放产品有哪些属性,例如:颜色、尺码 CREATE TABLE `product_attr` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '产品ID', `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '属性名', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT ='产品属性表';
# 产品属性下的对应选项表,一个属性有多个选项,例如:颜色有黑白,尺码有40,41 CREATE TABLE `product_attr_param` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '产品ID', `product_attr_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '产品属性ID', `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '选项名', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT ='产品属性选项表';
# 产品的 SKU 表,一个SKU对应着一个价格 CREATE TABLE `product_sku` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '产品ID', `price` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '售价', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT ='产品SKU表';
# 产品的 SKU 对应的信息表,一个 SKU 下有多个属性选项数据,也就是多个选项组合为一个 SKU # 一个产品的属性有几个,这张表对应的 sku_id 下就对应几条数据 # 一个产品下的属性选项组合起来有多少条数据,这张表对应的 product_id 下就对应几条数据 # 例如首图有两个属性,颜色属性选项有 2 个,尺码属性选项有 9 个,那么该表最大数据为 19 条 CREATE TABLE `product_sku_param` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '产品ID', `product_sku_id` int(11) NOT NULL COMMENT '产品SKU ID', `product_attr_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '产品属性ID', `product_attr_param_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '产品属性选项ID', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
|