`
hudeyong926
  • 浏览: 2034845 次
  • 来自: 武汉
社区版块
存档分类
最新评论

Magento 数据库EVA

 
阅读更多

实体,属性和值(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商城数据库

    Magento 商城数据库是一个关键组成部分,它是 Magento 电子商务平台的核心,负责存储所有商品信息、客户数据、订单记录以及网站配置等重要信息。Magento 是一个开源的电子商务解决方案,以其强大的功能和高度可定制...

    magento 数据库 以及时尚模板

    本资源“Magento数据库 以及时尚模板”显然是针对服装类商家,提供了数据库配置和时尚设计的解决方案。 首先,让我们详细探讨Magento数据库的构建和管理。Magento的核心功能之一是其复杂的商品目录系统,这依赖于一...

    magento数据库批量导出产品及自定义属性语句

    Magento将产品信息分散在多个数据库表中,主要包括`catalog_product_entity`作为主产品表,以及一系列以`_attribute`结尾的表来存储产品的不同属性。自定义属性则存储在`eav_attribute`、`eav_attribute_set`、`eav_...

    Magento 数据库设计图.pdf

    标题:Magento 数据库设计图 描述:Magento 数据库设计图旨在提供一个清晰的视图,帮助用户理解 Magento 系统内部的数据结构与关联性。通过这张设计图,开发者和DBA能够快速掌握数据库中各表之间的关系,以及它们在...

    zencart 数据迁移到magento 数据库操作

    本文将详细介绍如何进行Zencart到Magento的数据迁移,尤其是数据库操作部分。 一、前期准备 在开始迁移前,确保你有Zencart和Magento的最新稳定版本,并备份两个系统的数据库和文件,以防数据丢失或错误。你需要...

    Magento数据库设计

    Magento是一个功能强大的开源电子商务解决方案,由于其庞大的功能集合和灵活的架构,其数据库设计相对复杂。Magento数据库包含超过250张表,每张表都承载了不同模块和功能的数据存储和业务逻辑。这些表之间存在大量...

    magento导入数据库

    当涉及到Magento站点的迁移时,一个常见的方法是通过使用PHPMyAdmin来导入数据库,这种方法不仅高效,而且能够确保数据的完整性和一致性。下面,我们将深入探讨Magento通过PHPMyAdmin方式做站点迁移的具体步骤、注意...

    Magento数据库配置选项,以及mysql 读写分离

    1.数据库配置  [mysqld] key_buffer = 512M max_allowed_packet = 64M table_cache = 512 sort_buffer_size = 4M read_buffer_size = 4M read_rnd_buffer_size = 2M myisam_sort_buffer_size = 64M tmp_...

    magento数据结构分析

    描述:“Magento数据字典”提供了对Magento系统中各种数据库表的深入理解,这对于理解和优化Magento的性能至关重要。 一、Magento数据结构解析 Magento是一款功能强大的电子商务平台,其复杂的数据结构是支撑其...

    Magento-ProductGallery:从magento数据库中获取最新的10种产品

    从magento数据库中获取最新的10种产品 安装说明: - - - - - - - - - - - - - 解压缩ProductGalleryModule.zip 。 将应用程序和js文件夹复制并粘贴到项目的根目录中。 转到此URL以查看您商店的最新产品图库:...

    magento-lite-db-dump:转储 Magento 数据库的简化版本以用于开发的 Shell 脚本

    magento-lite-db-dump 转储 Magento 数据库的简化版本以用于开发的 Shell 脚本。 此脚本转储整个数据库结构,但将许多表留空。 这些通常是与日志、客户、订单、愿望清单等对应的表。 结果是一个更轻量级的文件可供...

    magento快速复制网站_magento_magento快速复制站_

    Magento是一款强大的开源电子商务...总之,快速复制Magento站点涉及多个层面的工作,包括数据库迁移、文件复制、配置调整和缓存处理。正确执行这些步骤将帮助你高效地在新环境中搭建起一个与原站点相似的Magento商店。

    magento CE1.922数据库图

    magento CE版(社区办)1.922数据库业务逻辑,表关系逻辑图

    magento内部培训资料

    magento数据库设计图对于理解Magento的后台运作至关重要。Magento的数据库结构复杂,包含了多个表和关系,用于存储商品信息、用户数据、订单详情等。理解这些设计图可以帮助你更好地优化查询性能,进行数据迁移,...

    Magento2.1.13汉化

    Magento 2.1.13汉化包是一个针对Magento电子商务平台的中文本地化解决方案,它使得在中国使用Magento的商家和开发者能够更方便地理解和操作这个强大的开源系统。Magento是一款广泛使用的开源电商框架,以其高度可...

    magento导出数据sql

    首先,`magento导出数据sql`是指使用SQL语句来提取Magento数据库中的数据。这通常涉及到备份、分析或迁移数据到其他系统。在Magento中,数据主要存储在MySQL数据库中,因此我们可以通过以下几种方式来导出数据: 1....

    Magento2-Data-Migration:此脚本将您的 Magento1 数据库迁移到 Magento2

    Magento 2 数据库迁移将数据库从 Magento 1.8、1.9 迁移到 Magento 2 beta5。 该程序绝对没有任何保证。 对于每个新的 Magento2 发行版/预发行版,必须调整此模块,主要是在有新的安装脚本时。 此外,Magento2 将...

    magento2 developers cookbook

    书中指导开发者如何创建一个带有样本数据的Magento 1网站,准备从Magento 1升级的过程,创建Magento 2网站以及如何升级数据库。这些步骤对于保持数据完整性和用户体验的连贯性至关重要。 在处理产品时,开发者可以...

    Magento插件开发手册 Magento Extension Developers Guide

    4. **数据库准备**:如果插件需要数据库支持,需创建相应的数据库表结构。 5. **业务逻辑实现**:编写模型类处理数据操作和业务逻辑。 6. **请求处理和路由**:定义插件的URL路径和请求处理逻辑。 7. **输出准备**:...

    magento二次开发大全

    3. **模型(Model)**:模型是Magento中处理业务逻辑的组件,通常与数据库交互。`模型继承架构图(product为例).png`可能揭示了产品模型的继承结构,展示了如何创建自定义模型以扩展或修改默认功能。 4. **模块...

Global site tag (gtag.js) - Google Analytics