Php 什么';支持标签系统的sql方案是什么?

Php 什么';支持标签系统的sql方案是什么?,php,sql,tagging,Php,Sql,Tagging,我用php编写了一个小型论坛软件,人们可以在其中发布线程,我想支持标签 我应该为此创建多少SQL表?简单介绍一下标签系统将如何工作 谢谢基本上,您需要标签(id,tag)表和标签来发布M:M关系表(tag\u id,post\u id)。为给定标记选择帖子的步骤 select posts.* from posts, tags, post_tags where post_tags.post_id = posts.id and post_tags.tag_id = tags.id

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

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

谢谢

基本上,您需要标签(id,tag)表和标签来发布M:M关系表(tag\u id,post\u 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" 
作为对评论的回应:单个表(tag、post)方法可能看起来“更简单”,但它并不是完全可伸缩的。如果你决定给你的标签添加一些额外的信息,比如创建日期或者是谁创建的呢。或者让用户拥有“最喜欢的标签”,就像这里的SO——如果没有单独的标签表,这将是一个棘手的问题

一般来说,最好保留数据库,即使它在开始时看起来很“复杂”。

基本上,您需要标记(id,tag)表和标记来发布M:M关系表(tag\u id,post\u 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" 
作为对评论的回应:单个表(tag、post)方法可能看起来“更简单”,但它并不是完全可伸缩的。如果你决定给你的标签添加一些额外的信息,比如创建日期或者是谁创建的呢。或者让用户拥有“最喜欢的标签”,就像这里的SO——如果没有单独的标签表,这将是一个棘手的问题


一般来说,最好保留数据库,即使它在开始时看起来很“复杂”。

文章中有一些很好的推理和性能测试

文章中有一些很好的推理和性能测试

可能重复:可能重复:谢谢,我想知道做1表是否会更好:标签(tagtitle,entryid)?我同意stereofrog。2表法可能是最好的方法。保持你的标签表干净和独特也允许M:M关系Hanks stereofrog,我想知道做1表是否会更好:标签(tagtitle,entryid)?我同意stereofrog。2表法可能是最好的方法。保持标记表的干净和唯一性还允许M:M关系