什么是支持Tags系统的sql方案?

时间:2010-03-14 20:34:07

标签: php sql tagging

我在php中编写了一个小型论坛软件,人们发布帖子,我想支持标签。

我应该为此制作多少个SQL表?并简要介绍标签系统的工作原理?

由于

2 个答案:

答案 0 :(得分:4)

基本上你需要标签(id,tag)表和标签到帖子M:M关系表(tag_id,post_id)。选择给定标签的帖子

 select posts.* from posts, tags, post_tags
    where post_tags.post_id = posts.id
    and post_tags.tag_id = tags.id
    and tags.tag = "whatever_tag" 

回应评论:单个表(标签,帖子)方法可能看起来“更简单”,但它不是完全可扩展的。如果您决定在标记中添加一些额外信息,例如创建日期或创建者,该怎么办?或者让用户拥有“最喜欢的标签”,就像在这里一样 - 没有单独的标签表,这将是棘手的。

一般来说,最好保留数据库normalized,即使它在开头似乎“复杂”。

答案 1 :(得分:1)

文章"Tagsystems: performance tests"

中提供了一些很好的推理和性能测试