2022-09-14 10:53:46 - 米境通跨境電商
magento數(shù)據(jù)結(jié)構(gòu)首先要知道是EAV模式,這種結(jié)構(gòu)要比普通數(shù)據(jù)結(jié)構(gòu)更容易擴展,但是帶來的就是查詢速度慢,好在magento開發(fā)的緩存機制不錯
最重要的3張表eav_entity_type,eav_entity_attribute,eav_attribute
eav_entity_type表用來定義實體的基本信息
比如entity_type_id=1是customer實體
eav_entity_attribute表用來定義實體模型包含哪些屬性(當(dāng)然這里還涉及到set和group)
select*fromeav_entity_attributewhereentity_type_id=1;取出customer有哪些屬性
eav_attribute屬性的信息
select*fromeav_attributewhereattribute_id<=上面結(jié)果范圍andattribute_id>上面結(jié)果范圍;取出customer的屬性定義
看看magento中是怎樣使用EAV模式的,還是拿customer
customer_entity用戶的實體存放,當(dāng)然里面也有是沒有必用分開的屬性,比如email,這是用戶必須的,magento沒有完全分開,可能也是考慮到速度
customer_entity_varchar
customer_entity_text
customer_entity_int
customer_entity_decimal
customer_entity_datetime
這幾張表是實體對應(yīng)的屬性的值,屬性值都有不同的類型,這樣分開是有必要的
SELECT'cev'.*,'ea'.attribute_codeFROMcustomer_entity_varcharAS'cev'LEFTJOIN'eav_attribute'AS'ea'ON'ea'.attribute_id='cev'.attribute_idWHERE'cev'.entity_id='2';取出客戶id為2的在customer_entity_varchar中的屬性值
magento不僅提供了EAV模式,同時在數(shù)據(jù)庫中完美支持了Flat表結(jié)構(gòu),flat和我們普通的表結(jié)構(gòu),一個產(chǎn)品對應(yīng)一行數(shù)據(jù),相對于EAV的多表聯(lián)查來說,單表單行數(shù)據(jù)的調(diào)用效率更高,magento默認(rèn)是eav模式,可以在后臺開啟flat(就分類和產(chǎn)品用到)
catalog_product_flat_1
catalog_product_flat_2
后面數(shù)字代表storeId,刷新索引的時候會重新更新這些表數(shù)據(jù)
order表結(jié)構(gòu)
sales_flat_order相關(guān),表命名中帶了flat,表示order不使用eav模式,我這么理解的
看這兩張表
sales_flat_order_grid//后臺grid列出來的相關(guān)數(shù)據(jù),它把相應(yīng)的放一起了,應(yīng)該是為了方便調(diào)取,可是這樣寫的時候就的多了操作,考慮到讀應(yīng)該比寫更頻繁,這樣應(yīng)該也是可取的
sales_flat_order_item//同上,具體到某個order里面
sales_flat_quote相關(guān)表,在網(wǎng)站上點了產(chǎn)品放入購物車,但是沒有下單,magento將這些產(chǎn)品暫時放入這些表中,下次用戶登錄到購物車會拿出來讓客戶繼續(xù),這個沒得說。
magento的數(shù)據(jù)結(jié)構(gòu)很靈活,上面寫的也只是大概了解些,具體到實現(xiàn),還是有很多東西的。