商品系统设计(四):商品属性设计之自定义属性

来源:互联网 发布:虚拟照相软件 编辑:程序博客网 时间:2024/04/30 09:30

前面我们说到了不同分类商品的属性是不同的。
图书:作者、出版社、出版时间、ISBN、开本
比如《Java从入门到精通》分为16开和32开,价格就不同了。

修改属性表

我们要加个字段attr_forprice,代表该属性是否拆分价格,默认是“否”。如果用户选中此项,则要让用户新增自定义属性。

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',  `attr_forprice` tinyint(4) DEFAULT '0',  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
INSERT INTO `prod_class_attr` VALUES ('1', 'press', '出版社', '0', '1', '0'), ('2', 'author', '作者', '0', '1', '0'), ('3', 'format', '开本', '0', '1', '1'), ('4', 'pressdate', '出版时间', '0', '1', '0'), ('5', 'technics', '工艺', '0', '2', '0'), ('6', 'style', '风格', '0', '2', '0'), ('7', 'target', '适用对象', '0', '2', '0'), ('8', 'material', '材质', '0', '2', '0');

同时还需要修改商品属性表prod_attr
因为同一个属性可能有多个值:开本有16开和32开。所以prod_idattr_id不是是主键。

DROP TABLE IF EXISTS `prod_attr`;CREATE TABLE `prod_attr` (  `prod_id` int(11) NOT NULL,  `attr_id` int(11) NOT NULL,  `attr_value` varchar(100) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;INSERT INTO `prod_attr` VALUES ('3', '1', '中信出版社'), ('3', '2', '刘勇'), ('3', '3', '16开'), ('3', '3', '32开');

思考题

既然属性已经分开了,那么商品价格表应该如何设计呢?

0 0
原创粉丝点击