我有一个包含两个表的数据库:
- entries(文章)
- tags(标签)
文章表包含了每篇文章所拥有的一个或多个标签。问题在于,每篇文章所拥有的标签数量是不确定的。换句话说,我不能使用“标签1”、“标签2”等列进行左连接。
那么,我应该如何设置文章表,以便每篇文章都可以拥有任意数量的标签呢?
我有一个包含两个表的数据库:
文章表包含了每篇文章所拥有的一个或多个标签。问题在于,每篇文章所拥有的标签数量是不确定的。换句话说,我不能使用“标签1”、“标签2”等列进行左连接。
那么,我应该如何设置文章表,以便每篇文章都可以拥有任意数量的标签呢?
你需要一个映射表。
创建一个名为entries_tags
的表,它包含两个列:entry_id
和tag_id
,并在这两个条目上有一个多键。
这被称为多对多关系。
您也可以按照SO的方式进行操作,在具有连接/映射/交集表的同时,您还可以在可标记的条目上拥有标签列表:
entries table:
post_id: 3539744, .... tags: sql, database, database-design, tags, data-modeling
如果在提取条目的相关标签时,无法承受使用交汇表所带来的性能损失。当然,在这里必须格外小心,因为您正在处理非规范化数据。