EAV模型是一种数据模型 ,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多。 Magento 2这么设计是为了灵活性,在不影响主干的基础上,任意新增删除属性。 EAV模型(E ->实体,A -> 属性,V -> 值)简单理解就是分表,不需要把所有字段都放在主表里,而是按类型存放在不同的副表上。 对于字段少的项目来说 EAV其实没啥用 效率不高。

  按照常规做法,比如一个产品的所有相关属性都会存放在产品表里,增删改查的都是这一个表。 EAV模式 就是把这些属性按照类型独立分开存放到不同表里的。 所有查询属性值的时候会比较麻烦 要联表查询。 不过M2里不用担心,他提供了非常简单的方法,直接get属性名就得到值了,不需要你手动去写sql查表。

  实体存储的是数据类型的信息。 就Magento而言,就是Customer,Category,Product等。 属性是每个实体的单独属性(比如name,weight,email)。 值是实体某个属性的值。

  比如,产品有个属性叫产地(Manufacture),它的值为中国。 那么产品就是实体,Manufacture就是属性,中国就是值。

   EAV模型带来的好处 如下:

  1. 灵活的多功能数据结构(可以在不更改数据库模式的情况下更改属性数量)。
  2. 为给定实体添加新属性时,我们有可能在其他实体中使用它
  3. 快速实施。

   EAV实体的数据库模式:

  • eav_entity - (E)实体表。
  • eav_entity_attribute(A)属性表
  • eav_entity_ {type}(V) - 值表。{type} - datetime,decimals,int,text和varchar。
  • eav_attribute 里面是所有实体的属性

  带有eav_ *表格的图表:

magento的eav模型

  Magento 2中有哪些EAV实体? 实体列表可以在eav_entity_type表中找到:

  • customer
  • customer_address
  • catalog_category
  • catalog_product
  • order
  • invoice
  • creditmemo
  • shipment

  Magento 2中有哪些EAV属性类型:

  • eav_entity_int
  • eav_entity_varchar
  • eav_entity_text
  • eav_entity_decimal
  • eav_entity_datetime

  这5种属性类型就相当于字段类型。

  • int 对应mysql字段的int类型
  • varchar 对应mysql字段的varchar类型
  • text 对应mysql字段的text类型
  • decimal 对应mysql字段的decimal类型
  • datetime对应mysql字段的datetime类型

  比如产品的name 是varchar类型。 他的值存在catalog_product_entity_varchar表里。 知道了这个原理,你就很轻松的知道属性和值在哪个表里。 聪明的你会觉得,把属性分散存在不同的表里,如果要查询全部属性的话,要联十几张表,是不是太耗资源了? 这点,M2官方也考虑到了,以产品为例,他提供了catalog_product_flat表,也就是说后台开启flat模式后,查产品数据就直接读取这个表,他把属性都存放在这个表里了。 catalog_product_flat是按store id来分的。如果你有多网店的话。 比如:

  1. catalog_product_flat_1 //代表store id为1的所有产品数据
  2. catalog_product_flat_2 代表store id为2的所有产品数据

  

【转】Magento 2数据库EAV模型结构相关推荐

  1. Magento 2数据库EAV模型结构

     EAV模型是一种数据模型 ,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多. Magento 2这么设计是为了灵活性,在不影响主干的基础上,任意新增删除属性. EAV模型(E ...

  2. mysql eav设计模型_Magento 2数据库EAV模型结构

    EAV模型是一种数据模型,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多. Magento 2这么设计是为了灵活性,在不影响主干的基础上,任意新增删除属性. EAV模型(E -& ...

  3. 使用 Eav 模型构建可无限扩展的数据存储能力

    举个例子 假设要做一个电商的商品管理,我们先卖一些衣服,需要管理衣服的尺码.颜色.款式等信息,有一天需要卖电脑了,电脑需要 主板.CPU.显卡.内存.硬盘.散热 等信息,过几天又需要卖手机了,手机有 ...

  4. Magento 数据表结构 EAV模型详解

    EAV : Entity - Attribute - Value的缩写,是数据库模型的一种,使用eav建模的好处是可以动态为数据模型增加或移除属性. 1.问题提出: 假设需要定义一个实体Custome ...

  5. java eav_动态自定义字段属性–Magento的EAV模型 | 学步园

    EAV : Entity - Attribute - Value 的缩写,是数据库模型的一种,使用eav建模的好处是可以动态为数据模型增加或移除属性. 1. 问题提出: 假设需要定义一个实体Custo ...

  6. magento EAV 模型理解

    EAV模型是Zend框架的基础,而Magento项目又是建立在Zend框架的基础上的,所有了解EAV有助于了解Magento的架构原理,在开发Magento相关应用时非常有用. EAV : Entit ...

  7. Magento开发文档(七):Magento EAV模型

    在第一篇介绍Magento ORM的文章中,我们提到过Magento拥有两类模型.普通的模型及Entity Attribute Value(EAV)模型.这里首先搞清楚它们之前的一些关系. 所有的Ma ...

  8. Magento的EAV模型窥探

    EAV : Entity - Attribute - Value 的缩写,是数据库模型的一种,使用eav建模的好处是可以动态为数据模型增加或移除属性. [color=#BF0000][b]1. 问题提 ...

  9. mysql eav_Magento的EAV模型窥探

    1. 问题提出: 假设需要定义一个实体Customer的信息,通常我们只要定义一个表为customer,并定义相应的属性即可.倘若某天需要为customer增加一个新的属性如"毕业学校&qu ...

最新文章

  1. python数据分析从入门到精通电子工业出版社_荐书丨Python数据分析从入门到精通...
  2. TCP/IP详解--第十三章
  3. MySQL数据库中导入导出方法以及工具介绍
  4. 教你3个python「性能分析」工具,再也不用自己计算函数耗时了
  5. java apktoo_apktool.jar最新版下载|apktool_2.0.3.jar 官方版_最火软件站
  6. 管道 通过匿名管道在进程间双向通信
  7. python-学生管理系统--3删除学生信息功能
  8. Windows电脑安装Linux系统的方法-Ubuntu版
  9. 浙江高级职称英语 计算机考试时间2016,浙江省2016年度全国专业技术人员职称外语等级统一考试时间...
  10. c++如何快速写出get set_如何快速写出产品文案?(4大核心方法)
  11. android平板8英寸,8英寸安卓系统 Newpad P10平板电脑评测
  12. 【安卓Android】VibratorService分析
  13. 《实变函数简明教程》,P91,定理4.8(iii)(对等的可测函数同时可积或同时不可积)
  14. 【基础】java操作word,自动更新目录/域
  15. UnityShader实现较为完整的光照模型(Lambert+Phong+三色环境光+阴影+环境遮蔽(AO))
  16. windows11任务栏全透明
  17. 一种高超声速飞行器弹道的仿真方法
  18. 微信小程序数据 \n 换行符失效解决办法
  19. css实现自定义鼠标样式
  20. 吉首大学第八届“新星杯”大学生程序设计大赛(暨新生网络同步赛)

热门文章

  1. spring----注解
  2. 非maven配置SpringBoot框架
  3. ffmpeg在android上输出滑屏问题处理
  4. 动态规划6个题目总结比较
  5. 开始《数据机构与算法之美》之旅
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第17篇]述和比较DES和AES的轮结构
  7. Not Equal on a Segment CodeForces - 622C
  8. 系统mysql数据库服务器,系统mysql数据库服务器
  9. java I O类大全_Java I/O最简单的几个类
  10. 开机自启动脚本_使用xtu降低笔记本(游戏本)cpu电压及功耗·游戏本延时(以及试着解决开机自启动的问题)...