实现多表标签系统

Implementing tag system with multiple tables

我正在尝试实现类似于 Whosebug 拥有的标签系统。显然我已经阅读了多篇文章,包括这篇 answer.

但是我的情况有点不同

特别是第二个标准使它变得更难所以这些是我的想法

我使用最新版本的 PostgreSQL。

由于您使用的是 PostgreSQL,因此您可以选择其他数据库无法使用的某些字段类型。特别是数组和 JSON 字段。我对 a blog post 中的各种方法做了一些性能比较。对于需要组合多个标签的任何搜索,数组和 JSONB 绝对是比标签 table 更好的选择。

鉴于此,我建议为每个要在其上添加标签的 table 创建一个标签列,可以是数组或 JSONB 列,具体取决于。如果您需要搜索多个 table,我建议使用 UNION 查询,而不是使用单一的整体标签 table 来连接所有内容。