实体,属性和值(EVA)数据库架构排在第一,非常难以把握。EVA结构缺少文档,大部分的人还不知道EVA结构的,对magento都的好处、重要性以及适合性。在这篇文章我要介绍EVA是怎么工作的,为什么他有效,看了这边文章对magento的开发者来说是很有好处的。为了更好的理解这边文章,我建议使用phpmyadmin等数据库工具。

什么是EVA
EVA代表实体,属性和值。让我们看看它的每一部分,试着更好的了解它。
实体
实体代表等产品,种类,客户和订单Magento的数据项。每个实体(产品,类别等)都会有它的数据库中的实体记录。
属性(attribute_code)
该属性表示数据项属于一个实体。例如,产品实体,如名称,价格,地位和更多的属性。

该值是最简单的理解,因为它是简单地链接到一个属性的值。
为了更好地理解这一点,让我们考虑产品的实体。每个产品的实体将有一个属性,一个是属性名称系列。每一种产品将有一个属性名称值(和所有其他属性)。

EVA是怎么工作的 ?
让我们用一个产品表作为例子。比起将所有的数据存取在一个表格中,magneto将信息分开存储在多张表格中。
在这种层次结构的顶部表是 catalog_product_entity. 如果你在phpMyAdmin看看这个表,你会看到它包含了产品的简单基本资料,也没有出现任何有用的信息,包括SKU!幸运的是,使用此表是有可能建立从属性和值表的完整的产品记录。
要开始构建一个完整的产品记录,您将需要开始加入到产品实体的属性表。你这样做之前,看一下名为eav_attribute的表。eav_attribute是存储属性的主要表,用于存储所有不同的实体的属性(产品,客户,订单,分类等)。Magento的怎么知道哪一个属性属于一个产品,或者属于一个类别?由于通常是与Magento情况下,每一个实体 (产品,客户,订单,分类等) 都有一个 entity_type_id.要了解这一点,回去 catalog_product_entity 查找entity_type_id 这个字段.在该表中每个记录的值应该是4,因为这已被列为指定产品entity_type_id。如果你看看 catalog_category_entity你将看到另一个不同的 entity_type_id。使用这个值和属性代码,它可以为一个产品或任何实体加载属性。找到attribute_code对应的attribute_id和backend_type,如果backend_type不为空,就是用的catalog_category_entity_{backend_type}表,为空就是catalog_category_entity。通过attribute_id,catalog_category_entity中的entity_id可以找到莫一条纪录的值

为什么要使用EVA?
EAV 是因为它比一般规范化的数据库结构扩展性更好。开发人员无需修改数据库结构的核心就可以为任何实体(产品,品类,客户,订单等)添加属性。当建立一个自定义属性的时候,不用为保存这个属性去建立逻辑结构,因为它已经被建立到数据库模型中;只要数据集和属性已经建立,该模型将被保存!

EAV的缺点是什么?
EAV一个主要缺点是它的速度。因为实体数据如此支离破碎,创造了整个实体记录需要大量的表联接。幸运的是,在瓦瑞恩团队有一个很好的缓存系统实施,允许开发者缓存不经常改变的资料。
EAV的另一个问题是它学习有曲线性, 这样很多初级开发人员在了解到它的的简单之前就已经放弃了。虽然没有此快速修复,希望这篇文章将有助于人们开始解决这个问题。

结论
实体,属性,价值是一个伟大的数据库结构,是Magento成功的一个关键部分,开发人员了解如何运作是非常重要的。这方面的知识也有很多应用,我相信如果你的Magento工作时间足够长,你会碰到一些!

SELECT `e`.entity_id AS customer_id,`e`.email,_table_billing_name.value AS realname,_table_billing_addree.value AS address,
_table_billing_province.value as province,_table_billing_city.value AS city,_table_billing_postcode.value AS postcode
FROM `customer_entity` AS `e`
LEFT JOIN `customer_entity_int` AS `_table_default_billing` ON (`_table_default_billing`.`entity_id` = `e`.`entity_id`) AND (`_table_default_billing`.`attribute_id` = '7')
LEFT JOIN `customer_address_entity_varchar` AS `_table_billing_name` ON (`_table_billing_name`.`entity_id` = `_table_default_billing`.`value`) AND (`_table_billing_name`.`attribute_id` = '9')
LEFT JOIN `customer_address_entity_varchar` AS `_table_billing_postcode` ON (`_table_billing_postcode`.`entity_id` = `_table_default_billing`.`value`) AND (`_table_billing_postcode`.`attribute_id` = '14')
LEFT JOIN `customer_address_entity_varchar` AS `_table_billing_province` ON (`_table_billing_province`.`entity_id` = `_table_default_billing`.`value`) AND (`_table_billing_province`.`attribute_id` = '12')
LEFT JOIN `customer_address_entity_varchar` AS `_table_billing_city` ON (`_table_billing_city`.`entity_id` = `_table_default_billing`.`value`) AND (`_table_billing_city`.`attribute_id` = '15')
LEFT JOIN `customer_address_entity_text` AS `_table_billing_addree` ON (`_table_billing_addree`.`entity_id` = `_table_default_billing`.`value`) AND (`_table_billing_addree`.`attribute_id` = '16') 

Magento 数据库EVA相关推荐

  1. Magento数据库结构:EAV (转)

    Magento数据库结构:EAV (转) Magento的表有三百多张,以实体.属性.值(EAV)的数据库结构难以掌握,加上缺少有关EAV的文档,以至许多人不知道这种EAV方式的好处以及 它对mage ...

  2. Magento数据库结构:EAV

    Magento的表有三百多张,以实体.属性.值(EAV)的数据库结构难以掌握,加上缺少有关EAV的文档,以至许多人不知道这种EAV方式的好处以及它对magento来说的重要性,在这里作为一名magen ...

  3. VBA 连接Oracle 数据库

    Sub?linkOracle()?? ?? ????Dim?strConn?As?String??'连接字符串?? ?????? ????Dim?dbConn?As?Object??'连接对象?? ? ...

  4. [置顶] 动软软代码生成器使用(127.0.0.1)无法看到 SQLServer2008 新附加数据库的 原因 以及 解决方案...

    在项目中,使用代码生成器给我们的开发工作带来了相当大的方便,而有时候会出现这样的问题,就是新附加的数据库在动软代码生成器当中看不到,奇了怪了@@@ 一,首先看动软代码生成器的链接字符串,如图 ,我们使 ...

  5. Magento搬家、换域名、重新安装教程

    范例:从http://www.youdomain.com 迁移到http://www.newsite.com. 将原来网站文件中的var文件中的cache和session文件删除,将media中的缓存 ...

  6. Magento重建所有索引方法

    Magento永久之后,在后台->Catalog->URL Rewrite Management,会有很多系统生成的索引,有些是没有的,我们可以用下面这个方法快速清除URL Rewrite ...

  7. 搭建Magento电子商务网站

    搭建Magento电子商务网站 https://help.aliyun.com/document_detail/50704.html 更新时间:2020-05-08 18:34:32 编辑我的收藏 本 ...

  8. Linux上搭建Magento电子商务网站

    一.简介 Magento是一款开源电商网站框架,其丰富的模块化架构体系及拓展功能可为大中型站点提供解决方案.它使用PHP开发,支持版本范围从PHP 5.6到PHP 7.1,并使用MySQL存储数据.本 ...

  9. moodle mysql,Moodle: 查询任意数据库

    代码: if (!file_exists('../../config.php')) { header('Location: ../../install.php'); die; } require_on ...

最新文章

  1. VS与Win7 共舞:用户界面特权隔离
  2. python 內建数据类型
  3. Window 7 下的某些服务不能随便禁用! 无法立即删除.exe文件,因为禁用了Application Experience服务。...
  4. 清华CrossWOZ,助你徒手搭建任务导向对话系统
  5. ISO12233分辨率测试卡的使用方法
  6. win11精简中文版 兼容ISO
  7. java 概率生成随机数_JAVA 生成随机数,并根据概率、比率
  8. Mini USB针脚定义
  9. 转载:程序员必备的8个学习工具
  10. 职能型、矩阵型、项目型组织结构的优缺点
  11. 前台离岗提示语_酒店前台温馨提示语
  12. 使用 PHPMailer 配合 QQ邮箱 发送邮件
  13. 素食崇尚的是养身和修心的生活方式,鼎沐素食让你身心共融
  14. 服务器pcie 3.0装固态硬盘,PCIe SSD怎么装系统?实操发现竟然这么简单!
  15. 根据ID从FASTA文件中批量提取序列【Python】
  16. EXCEL设置自动隔行填充颜色
  17. BUPT OJ146 Coin Tossing
  18. 两个必须更新浏览器的理由,危险就在你身边
  19. python 函数修饰器 父类_手把手教你学python第十四讲(函数装饰器,super用法和时间处理)...
  20. 5G安全,5G防御,5G网络安全,5G信息安全

热门文章

  1. sklearn中predict()与predict_proba()返回值意义
  2. Debian 12采用 Ubuntu三重缓冲
  3. 马来西亚央行抨击使用误导性Logo的ICO项目
  4. 程序员恭喜了!11月起逼自己拿下这个证,年薪68万起!
  5. Linux命令 - wget
  6. 前程无忧助力,再次举办湖北武汉网络专场招聘会
  7. Server-Sent Events 一种轻量级的Push方式
  8. 【mysql】【binlog】mysql配置binlog
  9. 16省8-四平方和(四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 比如:)
  10. linux添加删除虚拟ip,Linux增加/删除虚拟ip