简短结论:EAV(Entity-Attribute-Value)模型在某些情况下可以减少“结构冗余”,但通常会带来“数据冗余”和性能/复杂度问题,不能简单地说“能降数据库冗余”。
下面分层说明。
EAV 也叫“开放 schema”模型:
典型表结构:
entity_id | attribute_id | value
而不是传统宽表:
id | name | color | weight | size | ...
传统模型问题:
ALTER TABLE例如:
用宽表会是:
product_id | battery | size | isbn | ...
大量字段为空。
EAV 不需要改表结构,避免了“空列结构冗余”。
EAV 中:
1 | color | red
2 | color | blue
3 | color | red
color 被反复存储
而宽表中 color 只是一次列定义
➡ 数据冗余上升
JOIN 或 PIVOT✅ 适合:
❌ 不适合:
EAV 降低的是“表结构冗余”,但往往以“数据冗余 + 查询复杂 + 性能下降”为代价,不是通用的降冗余方案。
如果你有具体场景(电商 / 医疗 / 配置系统),我可以帮你判断该不该用 EAV。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。