求助.关于TAG标签功能的实现

#1 SunPSP

以前没在网站中搞过TAG
这两天突然来兴致想搞个TAG标签给网站完善内链
想法听简单,具体下手的时候才发现没地方下手
TAG这东西,主要是因为每条记录对应的TAG数目不同
不可能像单一分类那样给个单独字段来存储,需要的时候直接SQL=就完事儿
但是想想也不能用%LIKE%来实现,效率太过低下

有个设想是建个对照表,每个TAG与内容一一对应起来
然后类似分类那样,需要直接用SQL=出来就完事儿了
但是这样有个问题就是这个对照表的记录数增长太快
基本每条记录都对应着多个TAG,这样TAG的对照表记录数增长飞速啊
担心未来这个表数据量太大不好处理
因为目前网站数据量已经接近百万了,那么一旦添加了TAG
按1:5算也得500W的量了,感觉多了点

另外一个设想是在内容表中加个字段用来存放TAG的ID
调用的时候读取该字段然后通过PHP的in_array函数来判断
但是这样带来的问题是需要提取某个TAG下的记录的时候
需要读全表然后逐个去判断,数据那么多处理起来太耗时
另外还可能直接撑爆内存

SP坛内卧龙藏虎,不知道有没好法子分享下

2013-06-18 05:12:44

#2 jake

多对多关系,tag作为中间表

2013-06-18 08:51:02

#3 SunPSP

jake 发表于 2013-6-18 08:51
多对多关系,tag作为中间表
用中间表确实是很好的戒觉方法
目前担心的是多对多关系下中间表记录数基本是成倍数增长
一段时间之后维护起来很有难度

2013-06-20 01:13:36

#4 jake

SunPSP 发表于 2013-6-20 01:13
用中间表确实是很好的戒觉方法
目前担心的是多对多关系下中间表记录数基本是成倍数增长
一段时间之后维护 ...
一般不会,中间表记录多但查询简单,速度较快。而且维护是程序维护,非人手维护,没有无法维护的情况。

2013-06-21 08:54:12