温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是实体属性值模型

发布时间:2026-10-09 20:30:26 来源:亿速云 阅读:117 作者:小樊 栏目:数据库

实体-属性-值模型(Entity-Attribute-Value,简称 EAV 模型),也叫开放模式(open schema)或垂直模型(vertical model),是一种用于在关系型数据库中灵活存储稀疏、异构数据的数据库设计模式。


1. 核心思想

传统的关系表是“宽表”结构:

用户表(user_id, 姓名, 年龄, 性别, 地址, 电话, ...)

而 EAV 模型把数据“竖着存”:

  • Entity(实体):被描述的对象(如某个用户、某个商品)
  • Attribute(属性):实体的特征名(如“年龄”“颜色”)
  • Value(值):该属性对应的值

典型表结构:

EAV表
| entity_id | attribute | value |
|-----------|------------|-------|
| 1         | 年龄       | 25    |
| 1         | 性别       | 男    |
| 2         | 颜色       | 红色  |

2. 为什么用 EAV

适合场景

  • 属性很多且不确定:如医疗记录、商品参数、问卷系统
  • 属性稀疏:大部分对象只用少部分属性
  • 需要动态扩展字段:不修改表结构就能加新属性

不适合场景

  • 属性固定、查询频繁、对性能要求高

3. 优点

✅ 高度灵活,易扩展
✅ 避免大量 NULL 字段
✅ 适合异构数据


4. 缺点

❌ 查询复杂(常需多表 JOIN 或行转列)
❌ 索引和约束难做
❌ 性能较差
❌ 数据一致性弱(类型、格式难控)


5. 常见应用

  • 医疗系统(不同病人不同指标)
  • 电商商品属性(手机 vs 衣服字段不同)
  • 配置系统、元数据管理
  • CRM / 低代码平台

6. 简单对比

模式 结构 灵活性 性能
宽表 固定列 低 高
EAV 行存储 高 低

如果你愿意,我也可以用 SQL 示例 或 和 JSON / NoSQL 的对比 来讲得更具体。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手