• 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模型带来的好处 如下:

    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的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的所有产品数据
    

      

  • 相关阅读:
    Direct2D Simple
    波动+灰度图+噪点的简单实现
    控制台和窗口应用程序转换
    read from plist file
    1366X768成为全球最流行屏幕分辨率
    游戏框架类
    Animation in Cocos2diphone
    透射
    11.20
    11.19
  • 原文地址:https://www.cnblogs.com/ytkah/p/10160885.html
Copyright © 2020-2023  润新知