商品 分类 属性 表设计 库存

摘要: 根据不同的商品分类选择,特殊商品出现不同 扩展属性/规格,如:衣服出现尺码,颜色 1.商品分类表 Java代码   CREATE TABLE `category` (     `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类ID',    ...

根据不同的商品分类选择,特殊商品出现不同 扩展属性/规格,如:衣服出现尺码,颜色

1.商品分类表 

 1 CREATE TABLE `category` (  
 2   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类ID',  
 3   `pid` int(11) DEFAULT '0' COMMENT '分类父ID',  
 4   `level` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '层数',  
 5   `name` varchar(100) DEFAULT NULL COMMENT '分类名称',  
 6   `seo_title` varchar(20) DEFAULT NULL COMMENT 'SEO标题',  
 7   `seo_keyword` varchar(20) DEFAULT NULL COMMENT 'SEO关键字',  
 8   `seo_desc` varchar(50) DEFAULT NULL COMMENT 'SEO描述',  
 9   `cate_tree` varchar(100) DEFAULT NULL COMMENT '分类树形结构',  
10   `listorder` int(11) DEFAULT '0' COMMENT '排序',  
11   PRIMARY KEY (`id`),  
12   KEY `pid` (`pid`)  
13 ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;  
14   
15 INSERT INTO `category` (`id`, `pid`, `level`, `name`, `seo_title`, `seo_keyword`, `seo_desc`, `cate_tree`, `listorder`)  
16 VALUES  
17 (1, 0, 1, '日常所需', '', '', '', '1', 0),  
18 (2, 1, 2, '注册公司', '', '', '', '1-2', 0),  
19 (3, 2, 3, '国内游', '', '', '', '1-2-3', 0),  
20 (4, 3, 4, '上海游', '', '', '', '1-2-3-4', 0),  
21 (5, 1, 2, '企业开户', '', '', '', '1-5', 0),  
22 (6, 0, 1, '办公硬件', '', '', '', '6', 0);  

 分隔符要用 ‘-’,不要用下划线 ‘_’

2.分类属性表(核心)

 1 CREATE TABLE `category_fields` (  
 2   `field_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类属性表',  
 3   `category_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID',  
 4   `field_name` varchar(100) NOT NULL DEFAULT '' COMMENT '属性code',  
 5   `title` varchar(255) NOT NULL DEFAULT '' COMMENT '名称',  
 6   `description` varchar(255) NOT NULL DEFAULT '' COMMENT '描叙',  
 7   `required` enum('no','yes') NOT NULL DEFAULT 'no' COMMENT '是否必填',  
 8   `formtype` varchar(255) NOT NULL DEFAULT '' COMMENT '表单类型',  
 9   `choices` text NOT NULL COMMENT '值选项',  
10   `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',  
11   `unit` varchar(10) DEFAULT NULL COMMENT '单位',  
12   `min` int(11) unsigned DEFAULT NULL COMMENT '文本框时的最小值',  
13   `max` int(11) unsigned DEFAULT NULL COMMENT '文本框时的最大值',  
14   PRIMARY KEY (`field_id`)  
15 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;  
16   
17 INSERT INTO `category_fields` (`field_id`, `category_id`, `field_name`, `title`, `description`, `required`, `formtype`, `choices`, `sort`, `unit`, `min`, `max`)  
18 VALUES  
19 (1, 1, 'renjunyusuan', '人均预算', '', 'no', 'text', '', 0, '', 1, 2),  
20 (2, 1, 'renshu', '旅游人数', '', 'no', 'text', '', 0, '', NULL, NULL),  
21 (3, 1, 'daogou', '允许导购', '', 'no', 'radio', '是 否', 0, '', NULL, NULL),  
22 (4, 1, 'days', '预计天数', '', 'no', 'checkbox', '2天1夜 3天2夜', 0, '', NULL, NULL);  

 

3.商品属性值表

1 CREATE TABLE `mall_product_field_value` (  
2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品属性值',  
3   `product_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品ID',  
4   `field_id` int(11) NOT NULL DEFAULT '0' COMMENT '属性ID',  
5   `value` text COMMENT '属性值',  
6   PRIMARY KEY (`id`)  
7 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

二规格表

 1 CREATE TABLE `catalog_standard` (  
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类规格表',  
 3   `pid` int(11) NOT NULL DEFAULT '0',  
 4   `level` int(11) NOT NULL DEFAULT '1',  
 5   `catalog_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID',  
 6   `name` varchar(100) NOT NULL DEFAULT '' COMMENT '规格code',  
 7   `value` varchar(100) NOT NULL DEFAULT '' COMMENT '值选项',  
 8   PRIMARY KEY (`id`)  
 9 ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;  
10   
11 INSERT INTO `catalog_standard` (`id`, `pid`, `level`, `catalog_id`, `name`, `value`)  
12 VALUES  
13 (1, 0, 1, 35, 'color', '颜色'),  
14 (2, 0, 1, 35, 'size', '尺码'),  
15 (3, 1, 2, 35, 'red', '红色'),  
16 (4, 1, 2, 35, 'black', '黑色'),  
17 (5, 2, 2, 35, 'S', 'S'),  
18 (6, 2, 2, 35, 'M', 'M'),  
19 (7, 2, 2, 35, 'L', 'L');  

规格checkbox勾选值表

 1 CREATE TABLE `mall_product_standard_value` (  
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品规格值',  
 3   `product_id` int(11) NOT NULL DEFAULT '0' COMMENT '产品ID',  
 4   `root_standard_id` int(11) NOT NULL DEFAULT '0' COMMENT 'level=1的StandardID',  
 5   `standard_id` varchar(100) NOT NULL DEFAULT '0' COMMENT '规格ID',  
 6   `value` varchar(100) NOT NULL DEFAULT '' COMMENT '',  
 7   PRIMARY KEY (`id`)  
 8 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;  
 9   
10 INSERT INTO `mall_product_standard_value` (`id`, `product_id`, `root_standard_id`, `standard_id`, `value`)  
11 VALUES  
12 (1, 1, 1, '3', '红色1'),  
13 (2, 1, 1, '4', '黑色'),  
14 (3, 1, 2, '5', 'S222')  

规格勾选后,js生成不同规格组合的表单(价格/库存/货号),修改勾选规格名称,表单的规格名称也随之变化,商品的基础属性库存不允许填写,库存是自动加和的

不同规则选项组合表

 1 CREATE TABLE `mall_product_standard_value_group` (  
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品规则组合值',  
 3   `product_id` int(11) NOT NULL DEFAULT '0' COMMENT '产品ID',  
 4   `standard_ids` varchar(100) DEFAULT NULL COMMENT '规格组合standard_value_ids',  
 5   `inventory` int(11) NOT NULL DEFAULT '0' COMMENT '库存',  
 6   `price` int(11) NOT NULL DEFAULT '0.00' COMMENT '价格(分)',  
 7   `sku` varchar(60) DEFAULT NULL COMMENT '货号',  
 8   PRIMARY KEY (`id`),  
 9   UNIQUE KEY `standard_group` (`standard_ids`,`product_id`)  
10 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   

数组排列组合 

 1 <script>  
 2     function test() {  
 3         var temparr = [  
 4             ["M", "XL"],  
 5             ["红色", "白色"],  
 6             ["长", "短"],  
 7             ["1", "2"],  
 8             ["A", "B"],  
 9             ["无", "有"]  
10         ];  
11         var ret = doExchange(temparr);  
12         document.write("共有:" + ret.length + "种组合!<br/>");  
13         for (var i = 0; i < ret.length; i++) {  
14             document.write(ret[i] + "<br/>");  
15         }  
16     }  
17     function doExchange(doubleArrays) {  
18         var len = doubleArrays.length;  
19         if (len >= 2) {  
20             var len1 = doubleArrays[0].length;  
21             var len2 = doubleArrays[1].length;  
22             var newlen = len1 * len2;  
23             var temp = new Array(newlen);  
24             var index = 0;  
25             for (var i = 0; i < len1; i++) {  
26                 for (var j = 0; j < len2; j++) {  
27                     temp[index] = doubleArrays[0][i] + ',' + doubleArrays[1][j];  
28                     index++;  
29                 }  
30             }  
31             var newArray = new Array(len - 1);  
32             for (var i = 2; i < len; i++) {  
33                 newArray[i - 1] = doubleArrays[i];  
34             }  
35             newArray[0] = temp;  
36             return doExchange(newArray);  
37         } else if (len == 1) {  
38             return doubleArrays[0];  
39         } else {  
40             return doubleArrays;  
41         }  
42     }  
43     test();  
44 </script> 

 

转载地址:https://yq.aliyun.com/articles/44237

转载于:https://www.cnblogs.com/luyanliang/articles/5973127.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值