创建TAG数据库

时间:2011-01-14 22:01:48

标签: php database tags

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

当有人点击代码时,我想查询并提取每个包含该代码的网页。

2 个答案:

答案 0 :(得分:7)

标签本身会进入标签表。此表仅包含唯一标记

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'

答案 1 :(得分:1)

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

  1. tags包含tag_idtag字段的表格,可能还有与该标记相关联的其他字段,即说明,权限,...
  2. page_tags标记包含tag_idpage_id字段的表格,用于保存标记和网页之间的多对多关系(假设您有一个pages表格page_id作为索引列)。您还可以考虑任何其他字段,例如添加标记的日期和时间,添加标记的人员等。)
  3. 但是稍后您可能想要添加标签云等内容,这将需要一些数据缓存(您不希望每次有人标记某些内容时重建您的标记,而是每天定期执行一次,例如每天一次)。为此,您可以添加另一个包含tags_cloudtag_id字段的表count