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

前面我们说到了不同分类商品的属性是不同的。
图书:作者、出版社、出版时间、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开');

思考题

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值