EAV 模型(Entity-Attribute-Value,实体-属性-值模型),也被称为开放模式(open schema)或垂直模型,是一种用于数据库设计的灵活数据建模方式,特别适合属性数量不固定、变化频繁或高度稀疏的数据场景。
传统关系型表结构是这样的(宽表):
| user_id | name | age | city | phone |
|---|---|---|---|---|
| 1 | Tom | 20 | BJ | 123 |
而 EAV 模型把数据“竖着存”:
| entity | attribute | value |
|---|---|---|
| 1 | name | Tom |
| 1 | age | 20 |
| 1 | city | BJ |
| 1 | phone | 123 |
也就是:
SELECT
e.entity_id,
MAX(CASE WHEN attribute='name' THEN value END) AS name,
MAX(CASE WHEN attribute='age' THEN value END) AS age
FROM eav_table e
GROUP BY e.entity_id;
| 模型 | 特点 |
|---|---|
| 宽表 | 简单、快,但不灵活 |
| JSON 字段 | 灵活,适合半结构化 |
| EAV | 极度灵活,但复杂 |
| 宽表 + JSON | 现代常见折中方案 |
如果你愿意,我也可以帮你:
只要告诉我你的使用场景即可。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。