【问题标题】:Creating a TAG Database创建标签数据库
【发布时间】:2011-01-14 22:01:48
【问题描述】:

我正在以tag1,tag2,tag3,ect 的形式提交标签...但是我不确定如何在性能和专业性方面创建数据库布局。

当有人点击一个标签时,我想查询并拉出每个有该标签的页面。

【问题讨论】:

标签: php database tags


【解决方案1】:

标签本身进入标签表。此表只有唯一标签

TAGS
id | tagname
1     stack
2     overflow

您创建一个查找表以将标签表与页面表相匹配

PAGES_TAGS
tag_id | page_id
1           13
1           24
1           11
2           12

然后你做一个连接来查询哪些页面有哪些标签。

SELECT *
  FROM pages p
 INNER JOIN pages_tags pt ON p.id = pt.page_id
 INNER JOIN tags t        ON t.id = pt.tag_id
 WHERE tag.name='overflow'

【讨论】:

    【解决方案2】:

    如果这就是你想要的,那么拥有:

    1. 带有tag_idtag 字段的tags 表,可能还有一些与标签关联的其他字段,即描述、权限等...
    2. page_tags 带有tag_idpage_id 字段的标签表来保存标签和页面之间的多对多关系(假设您有一个pages 表,其中page_id 作为索引列)。您还可以考虑任何其他字段,例如添加标签的日期和时间、添加标签的人等)

    但是稍后您可能想要添加诸如标签云之类的东西,这将需要一些数据缓存(您不希望每次有人标记某物时都重建您的标签,而是定期进行,例如每天一次)。为此,您可以添加另一个表 tags_cloudtag_idcount 字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 2023-03-25
      • 2020-08-16
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多