Modèle EAV

Présention

Magento possède certains objets au format EAV :

  • Produits
  • Catégories
  • Clients *
  • Adresses clients *

(*) ces objets ont une structure EAV mais elle n'est pas utilisée, les attributs standard sont de type static et sont donc présents dans la table entity de base.

Ces objets ne sont pas structurés dans une seule table (sans compter les tables de liaison n-n).

Tout est découpé en fonction du type du champ.

Exemples

Modèle standard

ID client Email Nom Prénom Age
1 fma@ph2m.com MARTINEZ Frédéric 35
2 jean.durand@gmail.com DURAND Jean 40

Table : clients

Modèle EAV

ID_entite Active
1 1
2 1

Table : clients_entite

ID ID_entite Name Value
1 1 Nom MARTINEZ
2 2 Nom DURAND
3 1 Prénom Frédéric
4 2 Prénom Jean
5 1 Email fma@ph2m.com
6 2 Email jean.durand@gmail.com

Table : clients_entite_varchar

ID ID_entite Name Value
1 1 Age 35
2 2 Age DURAND

Table : clients_entite_int

Avantages & Inconvénients

Avantages

  • Souplesse dans nos modules. Il n'est plus nécessaire de faire un ALTER TABLE pour ajouter un champ.
  • Seule l'ajout d'une ligne permet l'ajout d'un attribut.
  • La structure des tables est commune à tous les Magento, simplifiant leur maintenance
  • Gestion des valeurs par store facilitée

Inconvénients

  • Lourdeur au niveau de la base de données
  • Imports / Exports complexes

Le flat catalog

Le flat catalog :

  • Quand le flat catalog est activé, alors Magento concatène les tables EAV en une table unique afin que le système n'aille faire ses requêtes que dans une seule table par store pour les produits et les catégories :
    • catalog_product_flat_1
    • catalog_category_flat_store_1