简短结论:EAV(Entity-Attribute-Value)模型“能做”Tag系统,但通常不是最适合的方案,是否合适要看规模、查询方式和可维护性要求。
下面分情况说清楚。
一个 Tag 系统通常关注:
EAV 看起来很适合:
示例(EAV):
entity_id | attribute | value
1 | tag | python
1 | tag | mysql
2 | tag | java
✅ 优点:
“找同时有 A 和 B 的实体”要:
SELECT entity_id
FROM eav
WHERE attribute='tag'
AND value IN ('A','B')
GROUP BY entity_id
HAVING COUNT(DISTINCT value)=2;
标签一多,SQL 就爆炸。
tags(id, name)
entity_tags(entity_id, tag_id)
优点:
这是最经典、最实用的 Tag 模型。
PostgreSQL:
tags text[]
或 MySQL:
tags JSON
适合:
EAV 更适合:
而 Tag 单独用关系表。
✅ 适合:
❌ 不适合:
Tag 系统优先用「标签表 + 关联表」,EAV 是“能但一般不推荐”的方案。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。