0

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

我应该为此创建多少个 SQL 表?简要介绍一下标签系统将如何工作?

谢谢

4

2 回答 2

4

基本上你需要标签(id,标签)表和标签到帖子的 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" 

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

一般来说,最好保持数据库规范化,即使一开始看起来“复杂”。

于 2010-03-14T20:40:53.470 回答
1

“标签系统:性能测试”一文中提供了一些很好的推理和性能测试

于 2010-03-14T21:57:09.087 回答