日期:2014-05-18  浏览次数:20512 次

用tag作为分类的问题。
在设计论坛数据库的时候,一个帖子可能被赋予1个以上的tag。。
我应该怎么设计数据库?
帖子前的tag是应该   1个tag占一个列还是   N个tag放在一个列?

第一种
tag1   |   tag2   |……|   tagN   |   title         |
科技   |   教育   |……|   文化   |   这是主题   |

第二种

            tag                    |   title
科技,教育,……,文化     |   这是主题

这两种用哪一种?那种的搜索速度快?

------解决方案--------------------
N个tag放在一个列
------解决方案--------------------
感觉如果类型不是太多 ,第一中好点,
------解决方案--------------------
都放在同一个列,之间用分隔符就行了
------解决方案--------------------
用第二种吧
select * from table where tag like '%科技% '
------解决方案--------------------
假如说有一个帖子的tag是“科技,教育,体育,娱乐,文化”
你想查询 教育 和 娱乐 的帖子, 可以 tag like '%教育%娱乐% ',
如果另外一个帖子的tag是“娱乐,教育,体育,文化” 当顺序变的时候就差不出来了,会很麻烦,而且当数据量打的时候 like 会很慢
感觉一种tag作为一列,可以用0或1 表示,查询的时候很方便,就是如果tag有很多种 表会很长