在数据库中存储标签的最佳方法?

时间:2010-08-22 01:41:03

标签: sql database database-design tags data-modeling

我有一个包含两个表的数据库:

  • 条目
  • 标记

条目表包含每个都有一个或多个标签的帖子。问题是,每个帖子可以有任意数量的标签。换句话说,我不能拥有'tag1','tag2'等列并执行LEFT JOIN。

我应该如何设置条目,以便每个帖子可以包含任意数量的标签?

2 个答案:

答案 0 :(得分:11)

您需要一张映射表。

创建一个名为entries_tags的表,其中包含两列:entry_idtag_id,两个条目都有一个多键。

这称为多对多关系

答案 1 :(得分:3)

你也可以这样做,其中除了有一个交汇点/映射/交集表,你有一个标签列表可以标记:

entries table:
post_id: 3539744, .... tags: sql, database, database-design, tags, data-modeling

如果在拉出条目的关联标记时无法获得使用联结表的性能影响。当然,这里必须特别小心,因为你正在处理非规范化数据。