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

来源:互联网 发布:fragment 传数据 编辑:程序博客网 时间:2024/04/30 14:34

今天我们讲一下商品属性

我们知道,不同类别的商品属性是不同的。
比如图书和男装
图书:作者、出版社、出版时间、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 商品属性表。
这里写图片描述

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 民族团结手抄报间单有漂亮怎么办 鹦鹉尾巴毛掉了怎么办 羊绒衫领子打太大了怎么办 内裤洗了还有一股味道怎么办 月经下不来内裤上总有脏东西怎么办 夏天外衣薄露出内衣怎么办 金毛体味很重怎么办 直筒连衣裙太短怎么办 托班社会下雨了怎么办 托班下雨了怎么办教案 吃鸡界面有鼠标怎么办 老年机成英语了怎么办 手机成了英语了怎么办 塑料袋融化粘到衣服上怎么办 厕所被卫生纸堵了怎么办 钻石画的胶不粘了怎么办 客厅沙发选大了怎么办 连衣裙腰大了怎么办呀 憋尿后出现尿急尿涨怎么办 脚有酸酸的味道怎么办 三星手机home键失灵怎么办 三星s6返回键失灵怎么办 三星s7屏幕漏液怎么办 三星s8出现蓝框怎么办 三星手机短信图标没了怎么办 ps没有足够的ram怎么办 ps性能调不了是怎么办 苹果6p照相模糊怎么办 相框玻璃碎了怎么办 word文档加密后忘记密码怎么办 手机wps密码忘了怎么办 苹果手表忘了密码怎么办 苹果系统忘了密码怎么办 ps画板建小了怎么办 wps表格密码忘了怎么办 word文档变成虚的怎么办 wps论文中表格跨页怎么办 word文档复制过来有边框怎么办 wps表格跨页断开怎么办 锅的铆钉老是松怎么办 文胸不知道怎么染色了怎么办