日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Magento 2数据库EAV模型结构

發(fā)布時(shí)間:2023/12/31 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Magento 2数据库EAV模型结构 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  ?EAV模型是一種數(shù)據(jù)模型?,用于描述實(shí)體的數(shù)量預(yù)計(jì)會(huì)很大,但事實(shí)上,實(shí)體中要使用的屬性數(shù)量并不多。 Magento 2這么設(shè)計(jì)是為了靈活性,在不影響主干的基礎(chǔ)上,任意新增刪除屬性。 EAV模型(E ->實(shí)體,A -> 屬性,V -> 值)簡(jiǎn)單理解就是分表,不需要把所有字段都放在主表里,而是按類(lèi)型存放在不同的副表上。 對(duì)于字段少的項(xiàng)目來(lái)說(shuō) EAV其實(shí)沒(méi)啥用 效率不高。

  按照常規(guī)做法,比如一個(gè)產(chǎn)品的所有相關(guān)屬性都會(huì)存放在產(chǎn)品表里,增刪改查的都是這一個(gè)表。 EAV模式 就是把這些屬性按照類(lèi)型獨(dú)立分開(kāi)存放到不同表里的。 所有查詢(xún)屬性值的時(shí)候會(huì)比較麻煩 要聯(lián)表查詢(xún)。 不過(guò)M2里不用擔(dān)心,他提供了非常簡(jiǎn)單的方法,直接get屬性名就得到值了,不需要你手動(dòng)去寫(xiě)sql查表。

  實(shí)體存儲(chǔ)的是數(shù)據(jù)類(lèi)型的信息。 就Magento而言,就是Customer,Category,Product等。 屬性是每個(gè)實(shí)體的單獨(dú)屬性(比如name,weight,email)。 值是實(shí)體某個(gè)屬性的值。

  比如,產(chǎn)品有個(gè)屬性叫產(chǎn)地(Manufacture),它的值為中國(guó)。 那么產(chǎn)品就是實(shí)體,Manufacture就是屬性,中國(guó)就是值。

  ?EAV模型帶來(lái)的好處?如下:

  • 靈活的多功能數(shù)據(jù)結(jié)構(gòu)(可以在不更改數(shù)據(jù)庫(kù)模式的情況下更改屬性數(shù)量)。
  • 為給定實(shí)體添加新屬性時(shí),我們有可能在其他實(shí)體中使用它
  • 快速實(shí)施。
  •   ?EAV實(shí)體的數(shù)據(jù)庫(kù)模式:

    • eav_entity - (E)實(shí)體表。
    • eav_entity_attribute(A)屬性表
    • eav_entity_ {type}(V) - 值表。{type} - datetime,decimals,int,text和varchar。
    • eav_attribute 里面是所有實(shí)體的屬性

      帶有eav_ *表格的圖表:

    ?magento的eav模型

      Magento 2中有哪些EAV實(shí)體? 實(shí)體列表可以在eav_entity_type表中找到:

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

      Magento 2中有哪些EAV屬性類(lèi)型:

    • eav_entity_int
    • eav_entity_varchar
    • eav_entity_text
    • eav_entity_decimal
    • eav_entity_datetime

      這5種屬性類(lèi)型就相當(dāng)于字段類(lèi)型。

    • int 對(duì)應(yīng)mysql字段的int類(lèi)型
    • varchar 對(duì)應(yīng)mysql字段的varchar類(lèi)型
    • text 對(duì)應(yīng)mysql字段的text類(lèi)型
    • decimal 對(duì)應(yīng)mysql字段的decimal類(lèi)型
    • datetime對(duì)應(yīng)mysql字段的datetime類(lèi)型

      比如產(chǎn)品的name 是varchar類(lèi)型。 他的值存在catalog_product_entity_varchar表里。 知道了這個(gè)原理,你就很輕松的知道屬性和值在哪個(gè)表里。 聰明的你會(huì)覺(jué)得,把屬性分散存在不同的表里,如果要查詢(xún)?nèi)繉傩缘脑?要聯(lián)十幾張表,是不是太耗資源了? 這點(diǎn),M2官方也考慮到了,以產(chǎn)品為例,他提供了catalog_product_flat表,也就是說(shuō)后臺(tái)開(kāi)啟flat模式后,查產(chǎn)品數(shù)據(jù)就直接讀取這個(gè)表,他把屬性都存放在這個(gè)表里了。 catalog_product_flat是按store id來(lái)分的。如果你有多網(wǎng)店的話。 比如:

    catalog_product_flat_1 //代表store id為1的所有產(chǎn)品數(shù)據(jù) catalog_product_flat_2 代表store id為2的所有產(chǎn)品數(shù)據(jù)

      

    總結(jié)

    以上是生活随笔為你收集整理的Magento 2数据库EAV模型结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。