EAV(Entity-Attribute-Value,实体-属性-值)模型是一种用于灵活存储具有大量可变属性数据的数据库设计模式,常用于属性数量不固定、差异很大的业务场景。
传统表结构通常是“宽表”:
用户表:id, name, age, email, phone ...
但如果不同用户有不同的属性(如皮肤类型、血型、喜欢的运动),且属性经常变化,宽表就难以维护。
EAV 把数据拆成三要素:
entities
---------
id | type
1 | user
2 | user
attributes
----------
id | name | type
1 | age | int
2 | skin_type | string
entity_values
--------------
entity_id | attribute_id | value
1 | 1 | 25
1 | 2 | oily
2 | 1 | 30
读取用户 1 的年龄和肤质,需要 join 三张表。
✅ 高度灵活
✅ 避免空列浪费
✅ 易于扩展系统
❌ 查询复杂
❌ 约束弱
❌ 索引和统计困难
✅ 适合:
❌ 不适合:
如果你愿意,我也可以用 具体例子(如电商商品、用户画像) 或 EAV vs JSON 的对比 来进一步说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。