日期:2014-05-16  浏览次数:20926 次

产品复合分类数据表设计。
一个数据表,现有200,000数据,今后会陆续增加到300,000 - 400,000条。

现在要记录每一个产品的分类(总计有600-700种,但单一产品最多不超过8个分类),类似这样的数据表如何设计?
这个数据库的主要功能是:随时根据不同分类,将该类的所有产品从数据库里检索出来,附加功能是根据产品名检索。

本人知识有限,初步设想如下,分类用数字代替,另有一个副表做参照。比如101代表运动鞋,202代表女鞋,305代表红色的鞋子,401代表nike,501代表美国... 把分类写进一个数据列里(porduct_list [varchar(32)])

id | porduct_list
1 | 101 201 305
2 | 101 202
3 | 102 202 334 401
...

这样设计是否合理?
如果可以。现在要检索出所有的运动鞋。像这类20-40W级的数据表,用like速度快还是fulltext速度快?
select * from porduct_table where porduct_list like '%101%' (innodb表 + index + 产品名检索用 RLIKE)
或者
select * from porduct_table where match (porduct_list) against ('+101' IN BOOLEAN MODE) (myisam表+产品名检索和分类搜索均用 fulltext index)

谢谢。

------解决方案--------------------
建议比较正规的设计如下。


id porduct_list
1 101
1 201
1 305
2 101
2 202
3 102
3 202
3 334
3 401