2012-02-27 28 views

Respuesta

47

Como Alan tormenta me dijo: "no ha necesita saber acerca de cómo funciona su base de datos Usted debe aprender los modelos de trabajo". (Esta no es una cita exacta. Te di el significado).

Pero creé un esquema propio para comprender la estructura de la base de datos. Así que esta pantalla muestra cómo funciona: enter image description here enter image description here

Esperanza, que ayuda.

También recomiendo que mire a través de estos enlaces:

http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram

http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1

+12

¡Yikes! Sólo ¡sí! (también +1 para investigación increíble) – clockworkgeek

+6

Enlaces a las imágenes de arriba para leerlas correctamente: http://i.stack.imgur.com/PQsc1.png, http://i.stack.imgur.com/d65bi.png –

2

Características del producto son valores adicionales que se pueden asignar a un producto y se almacena en la tabla principal EAV, por nombre, y los datos se almacenan en unas pocas tablas diferentes basadas en el tipo de datos, como varchar, decimal, texto entero, fecha, etc.

si tenía varios valores para su atributo de producto Ribute, entonces eso será almacenado en las tablas de Opciones de Atributo, nuevamente, diferentes tablas basadas en el tipo de datos.

el siguiente enlace explica las mejores relaciones: http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram

y detalle más profundo del desarrollador: http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-7-advanced-orm-entity-attribute-value

y el atributo conjuntos serán la otra cosa que encuentren, como su nombre indica, un conjunto de atributos agrupados. http://www.magentocommerce.com/knowledge-base/entry/how-do-i-create-an-attribute-set

HTH Shaun

+1

gracias Shaun ... los enlaces fueron útiles .. – balanv

12

Cada vez que quieren saber algo acerca de cómo funciona relaciones db magento verifico esta

online Database Diagram Tool

+0

Cool link Ovidiu ... !! +1 para esto ... – balanv

+0

¿Hay una herramienta como esta para 1.9 o la base de datos no ha cambiado desde 1.7? – TheRealJAG

+0

Encontré un enlace para 1.9 http://anna.voelkl.at/magento-ce-1-9-2-2-database-diagram/ – Ovidiu

29

1) Los atributos se almacenan en eav_attribute. Ahí obtienes el attribute_id.

2) Las opciones se almacenan en eav_attribute_option_value. Allí obtienes el option_id.

3) Las opciones se asignan al producto en catalog_product_entity_varchar. No se necesita el entity_id del producto, la attribute_id de 1) y el valor que están separados de la coma option_ids de 2)

+0

¿Cómo el conjunto de atributos está vinculado con el atributo? –

3
SELECT pei.value 
FROM `catalog_product_entity_int` pei 
JOIN `eav_attribute` ea 
ON pei.attribute_id = ea .attribute_id 
WHERE pei.entity_id = {your product_id} 
AND ea.attribute_code = '{your attribute_code}' 

Tenga en cuenta que hay un número de diferentes mesas como catalog_product_entity_int dependiendo del tipo de la atributo, por lo que uno de esos otros podría ser apropiado.

2

He encontrado que estas consultas son muy útiles para buscar cosas como, por ejemplo, ¿dónde dice que el color del producto es negro?

-- show_product_attr.sql 
select 
    p.entity_id, 
    p.entity_type_id, 
    p.attribute_set_id, 
    p.type_id, 
    p.sku, 
    a.attribute_id, 
    a.frontend_label as attribute, 
    av.value 
from 
    catalog_product_entity p 
    left join catalog_product_entity_{datatype} av on 
     p.entity_id = av.entity_id 
    left join eav_attribute a on 
     av.attribute_id = a.attribute_id 
where 
    -- p.entity_id = 28683 
    -- p.sku = '0452MR' 
    p.entity_id = {eid} 
; 

Y para attr_options

-- show_product_attr_options.sql 
select 
    p.entity_id, 
    -- p.entity_type_id, 
    -- p.attribute_set_id, 
    p.type_id, 
    p.sku, 
    a.attribute_id, 
    a.frontend_label as attribute, 
    -- a.attribute_code, 
    av.value, 
    ao.* 
from 
    catalog_product_entity p 

    left join catalog_product_entity_int av on 
     p.entity_id = av.entity_id 

    left join eav_attribute a on 
     av.attribute_id = a.attribute_id 
    left join eav_attribute_option_value ao on 
     av.value = ao.option_id 
where 
    -- p.entity_id = 28683 
    p.entity_id = {eid} 
; 

Es necesario sustituir {tipo de datos} con el texto, varchar, int, decimal, etc, para la primera consulta, y {Eid} con entity_id para ambas consultas. Que se puede hacer en el orden como la siguiente:

$ cat show_product_attr_options.sql | sed -e "s/{eid}/30445/" | mysql -uUSER -pPASS DATABASE -t 
+-----------+---------+--------------+--------------+---------------------------+-------+----------+-----------+----------+--------------------+-------------+ 
| entity_id | type_id | sku   | attribute_id | attribute     | value | value_id | option_id | store_id | value    | colorswatch | 
+-----------+---------+--------------+--------------+---------------------------+-------+----------+-----------+----------+--------------------+-------------+ 
|  30445 | simple | 840001179127 |   96 | Status     |  1 |  5972 |   1 |  0 | Male    | NULL  | 
|  30445 | simple | 840001179127 |   102 | Visibility    |  1 |  5972 |   1 |  0 | Male    | NULL  | 
|  30445 | simple | 840001179127 |   122 | Tax Class     |  2 |  5973 |   2 |  0 | Female    | NULL  | 
|  30445 | simple | 840001179127 |   217 | Size      | 257 | 17655 |  257 |  0 | XS     | NULL  | 
|  30445 | simple | 840001179127 |   217 | Size      | 257 | 17657 |  257 |  1 | XS     | NULL  | 
|  30445 | simple | 840001179127 |   224 | Color      | 609 | 18717 |  609 |  0 | Arctic Ice Heather | NULL  | 
|  30445 | simple | 840001179127 |   260 | Featured     |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
|  30445 | simple | 840001179127 |   262 | Clearance Product   |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
|  30445 | simple | 840001179127 |   263 | Skip from Being Submitted |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
|  30445 | simple | 840001179127 |   283 | Discontinued    |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
+-----------+---------+--------------+--------------+---------------------------+-------+----------+-----------+----------+--------------------+-------------+ 

Un conjunto similar de secuencias de comandos SQL se puede crear para catálogo.

Cuestiones relacionadas