我在php中编写了一个小型论坛软件,人们发布帖子,我想支持标签。
我应该为此制作多少个SQL表?并简要介绍标签系统的工作原理?
由于
答案 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)