实体-属性-值模型(Entity-Attribute-Value,简称 EAV 模型),也叫开放模式(open schema)或垂直模型(vertical model),是一种用于在关系型数据库中灵活存储稀疏、异构数据的数据库设计模式。
传统的关系表是“宽表”结构:
用户表(user_id, 姓名, 年龄, 性别, 地址, 电话, ...)
而 EAV 模型把数据“竖着存”:
典型表结构:
EAV表
| entity_id | attribute | value |
|-----------|------------|-------|
| 1 | 年龄 | 25 |
| 1 | 性别 | 男 |
| 2 | 颜色 | 红色 |
✅ 高度灵活,易扩展
✅ 避免大量 NULL 字段
✅ 适合异构数据
❌ 查询复杂(常需多表 JOIN 或行转列)
❌ 索引和约束难做
❌ 性能较差
❌ 数据一致性弱(类型、格式难控)
| 模式 | 结构 | 灵活性 | 性能 |
|---|---|---|---|
| 宽表 | 固定列 | 低 | 高 |
| EAV | 行存储 | 高 | 低 |
如果你愿意,我也可以用 SQL 示例 或 和 JSON / NoSQL 的对比 来讲得更具体。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。