mysql 数据库:商品表的设计,分为主表和扩展表
主表主要记录商品的通用信息,比如标题,价格,长宽高等:
CREATE TABLE `product` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`status` tinyint(3) NOT NULL DEFAULT '0',
`type` tinyint(3) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
附表主要记录商品的属性或其他扩展信息:
CREATE TABLE `product_meta` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`pruduct_id` bigint(11) NOT NULL,
`meta_key` varchar(255) NOT NULL DEFAULT '',
`meta_value` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品属性表';
但是这样的表,在商品过滤的时候,被sql难住了,比如某个分类下,有颜色,大小,尺寸,材质等属性,请问:
1、这样的sql语句怎么写?
2、有没有更好的表设计方案,过滤查询的sql样的?
一般过于复杂的筛选,都会考虑一些专门的搜索引擎,比如 ES。
另外,对于你这个表的设计,不是很行,如果按照这样设计,后续 meta 表的体积会可能会是 product 的 N 倍,而且介于存储的数据由比较杂,不变检索,甚至效率更低了。