【转】Magento 2数据库EAV模型结构
EAV模型是一种数据模型 ,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多。 Magento 2这么设计是为了灵活性,在不影响主干的基础上,任意新增删除属性。 EAV模型(E ->实体,A -> 属性,V -> 值)简单理解就是分表,不需要把所有字段都放在主表里,而是按类型存放在不同的副表上。 对于字段少的项目来说 EAV其实没啥用 效率不高。
按照常规做法,比如一个产品的所有相关属性都会存放在产品表里,增删改查的都是这一个表。 EAV模式 就是把这些属性按照类型独立分开存放到不同表里的。 所有查询属性值的时候会比较麻烦 要联表查询。 不过M2里不用担心,他提供了非常简单的方法,直接get属性名就得到值了,不需要你手动去写sql查表。
实体存储的是数据类型的信息。 就Magento而言,就是Customer,Category,Product等。 属性是每个实体的单独属性(比如name,weight,email)。 值是实体某个属性的值。
比如,产品有个属性叫产地(Manufacture),它的值为中国。 那么产品就是实体,Manufacture就是属性,中国就是值。
EAV模型带来的好处 如下:
- 灵活的多功能数据结构(可以在不更改数据库模式的情况下更改属性数量)。
- 为给定实体添加新属性时,我们有可能在其他实体中使用它
- 快速实施。
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来分的。如果你有多网店的话。 比如:
- catalog_product_flat_1 //代表store id为1的所有产品数据
- catalog_product_flat_2 代表store id为2的所有产品数据
【转】Magento 2数据库EAV模型结构相关推荐
- Magento 2数据库EAV模型结构
EAV模型是一种数据模型 ,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多. Magento 2这么设计是为了灵活性,在不影响主干的基础上,任意新增删除属性. EAV模型(E ...
- mysql eav设计模型_Magento 2数据库EAV模型结构
EAV模型是一种数据模型,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多. Magento 2这么设计是为了灵活性,在不影响主干的基础上,任意新增删除属性. EAV模型(E -& ...
- 使用 Eav 模型构建可无限扩展的数据存储能力
举个例子 假设要做一个电商的商品管理,我们先卖一些衣服,需要管理衣服的尺码.颜色.款式等信息,有一天需要卖电脑了,电脑需要 主板.CPU.显卡.内存.硬盘.散热 等信息,过几天又需要卖手机了,手机有 ...
- Magento 数据表结构 EAV模型详解
EAV : Entity - Attribute - Value的缩写,是数据库模型的一种,使用eav建模的好处是可以动态为数据模型增加或移除属性. 1.问题提出: 假设需要定义一个实体Custome ...
- java eav_动态自定义字段属性–Magento的EAV模型 | 学步园
EAV : Entity - Attribute - Value 的缩写,是数据库模型的一种,使用eav建模的好处是可以动态为数据模型增加或移除属性. 1. 问题提出: 假设需要定义一个实体Custo ...
- magento EAV 模型理解
EAV模型是Zend框架的基础,而Magento项目又是建立在Zend框架的基础上的,所有了解EAV有助于了解Magento的架构原理,在开发Magento相关应用时非常有用. EAV : Entit ...
- Magento开发文档(七):Magento EAV模型
在第一篇介绍Magento ORM的文章中,我们提到过Magento拥有两类模型.普通的模型及Entity Attribute Value(EAV)模型.这里首先搞清楚它们之前的一些关系. 所有的Ma ...
- Magento的EAV模型窥探
EAV : Entity - Attribute - Value 的缩写,是数据库模型的一种,使用eav建模的好处是可以动态为数据模型增加或移除属性. [color=#BF0000][b]1. 问题提 ...
- mysql eav_Magento的EAV模型窥探
1. 问题提出: 假设需要定义一个实体Customer的信息,通常我们只要定义一个表为customer,并定义相应的属性即可.倘若某天需要为customer增加一个新的属性如"毕业学校&qu ...
最新文章
- python数据分析从入门到精通电子工业出版社_荐书丨Python数据分析从入门到精通...
- TCP/IP详解--第十三章
- MySQL数据库中导入导出方法以及工具介绍
- 教你3个python「性能分析」工具,再也不用自己计算函数耗时了
- java apktoo_apktool.jar最新版下载|apktool_2.0.3.jar 官方版_最火软件站
- 管道 通过匿名管道在进程间双向通信
- python-学生管理系统--3删除学生信息功能
- Windows电脑安装Linux系统的方法-Ubuntu版
- 浙江高级职称英语 计算机考试时间2016,浙江省2016年度全国专业技术人员职称外语等级统一考试时间...
- c++如何快速写出get set_如何快速写出产品文案?(4大核心方法)
- android平板8英寸,8英寸安卓系统 Newpad P10平板电脑评测
- 【安卓Android】VibratorService分析
- 《实变函数简明教程》,P91,定理4.8(iii)(对等的可测函数同时可积或同时不可积)
- 【基础】java操作word,自动更新目录/域
- UnityShader实现较为完整的光照模型(Lambert+Phong+三色环境光+阴影+环境遮蔽(AO))
- windows11任务栏全透明
- 一种高超声速飞行器弹道的仿真方法
- 微信小程序数据 \n 换行符失效解决办法
- css实现自定义鼠标样式
- 吉首大学第八届“新星杯”大学生程序设计大赛(暨新生网络同步赛)
热门文章
- spring----注解
- 非maven配置SpringBoot框架
- ffmpeg在android上输出滑屏问题处理
- 动态规划6个题目总结比较
- 开始《数据机构与算法之美》之旅
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第17篇]述和比较DES和AES的轮结构
- Not Equal on a Segment CodeForces - 622C
- 系统mysql数据库服务器,系统mysql数据库服务器
- java I O类大全_Java I/O最简单的几个类
- 开机自启动脚本_使用xtu降低笔记本(游戏本)cpu电压及功耗·游戏本延时(以及试着解决开机自启动的问题)...