简短回答:标准 EAV(Entity-Attribute-Value)模型本身通常不会导致“传统意义上的数据冗余”,但在某些设计或实现不当的情况下,会产生“存储膨胀”和“逻辑冗余”问题,容易被误认为是数据冗余。
下面分层说明。
EAV(Entity-Attribute-Value)常用于:
典型结构:
entity_id | attribute_id | value
相比宽表:
product(id, color, size, weight)
EAV 会把一行变成多行:
1, color, red
1, size, L
1, weight, 2kg
➡ 行数变多
➡ entity_id、attribute_id 重复存储
➡ 看起来“重复”,但这是结构代价,不是冗余
如果:
➡ 会产生值级冗余
✅ 解决:
value_id 指向字典表option_id✅ 不会导致:
这正是 EAV 的优势。
❌ 错误用法:
➡ 既慢又“冗余感”强
如果你愿意,我可以用“宽表 vs EAV vs JSON”对比,或结合某个业务场景(商品 / 用户画像 / 配置)具体分析。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。