您的位置:首页 > 其它

商品系统设计(三):商品属性设计之固定属性

2017-01-05 10:34 375 查看

今天我们讲一下商品属性

我们知道,不同类别的商品属性是不同的。

比如图书和男装

图书:作者、出版社、出版时间、ISBN、开本

男装:工艺(图案或颜色)、风格、材质等

所以我们首先要建立一个商品分类属性表
prod_class_attr


DROP TABLE IF EXISTS `prod_class_attr`;
CREATE TABLE `prod_class_attr` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`attr_name` varchar(100) DEFAULT NULL COMMENT '属性名称',
`attr_note` varchar(100) DEFAULT NULL COMMENT '属性备注',
`attr_pid` int(11) DEFAULT '0' COMMENT '属性父 id',
`prod_classid` int(11) DEFAULT NULL COMMENT '商品分类id',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;

INSERT INTO `prod_class_attr` VALUES ('1', 'press', '出版社', '0', '1'), ('2', 'author', '作者', '0', '1'), ('3', 'format', '开本', '0', '1'), ('4', 'pressdate', '出版时间', '0', '1'), ('5', 'technics', '工艺', '0', '2'), ('6', 'style', '风格', '0', '2'), ('7', 'target', '适用对象', '0', '2'), ('8', 'material', '材质', '0', '2');


所以接下来要建一个商品属性对应表

prod_id 商品id

attr_id 属性id

attr_value 属性值

注意,在表单中并不是所有用户都会填全属性

CREATE TABLE `prod_attr` (
`prod_id` int(11) NOT NULL,
`attr_id` int(11) NOT NULL,
`attr_value` varchar(100) DEFAULT NULL,
PRIMARY KEY (`prod_id`,`attr_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;


新增商品流程

1、第一步,往商品主表插入数据

2、并获取自增的商品ID

3、批量插入商品属性(怎么插入)

先看一个SQL

SELECT 1 AS attr_id, '中信出版社' AS attr_value UNION SELECT 2 AS attr_id, '刘勇' AS attr_value;




这样是为了批量插入到
prod_attr


下面,我们要把这条SQL放到存储过程中,并且需要动态执行。



这就是一个新建商品的mysql存储过程,商品的属性是在得到商品id之后,根据传入的一个sql字符串,再拼凑成一条插入到表
prod_attr
的SQL完成的。

BEGIN
SET @pid=0;
INSERT INTO prod_main(prod_name,prod_classid) VALUES (_prod_name,_class_id);
SET @pid=LAST_INSERT_ID();
#SET @ss='INSERT INTO prod_attr SELECT ? AS prod_id, a.* FROM (SELECT 1 AS attr_id, \'中信出版社\' AS attr_value UNION SELECT 2 AS attr_id, \'刘勇\' AS attr_value) a';
SET @ss=CONCAT('INSERT INTO prod_attr SELECT ? AS prod_id, a.* FROM (',_attr_sql,') a');
PREPARE pname FROM @ss;
EXECUTE pname USING @pid;
DEALLOCATE PREPARE pname;
END


来执行这个
sp_new_prod
存储过程:

CALL sp_new_prod('java从入门到精通',1,'SELECT 1 AS attr_id, \'中信出版社\' AS attr_value UNION SELECT 2 AS attr_id, \'刘勇\' AS attr_value');


这样就完成了既插入了
prod_mian
商品主表,也插入了
prod_attr
商品属性表。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: