首先要知道是EAV模式,这种结构要比普通数据结构更容易扩展,但是带来的就是查询速度慢,好在magento的缓存机制不错
最重要的3张表eav_entity_type,eav_entity_attribute,eav_attribute

eav_entity_type表用来定义实体的基本信息
比如entity_type_id = 1是customer实体

eav_entity_attribute表用来定义实体模型包含哪些属性(当然这里还涉及到set和group)
select * from eav_entity_attribute where entity_type_id=1;取出customer有哪些属性

eav_attribute属性的信息

select * from eav_attribute where attribute_id<=上面结果范围 and attribute_id>上面结果范围;取出customer的属性定义

看看magento中是怎样使用EAV模式的,还是拿customer
customer_entity用户的实体存放,当然里面也有是没有必用分开的属性,比如email,这是用户必须的,magento没有完全分开,可能也是考虑到速度
customer_entity_varchar
customer_entity_text
customer_entity_int
customer_entity_decimal
customer_entity_datetime
这几张表是实体对应的属性的值,属性值都有不同的类型,这样分开是有必要的
SELECT `cev`.*,`ea`.attribute_code FROM customer_entity_varchar AS
`cev` LEFT JOIN `eav_attribute` AS `ea` ON `ea`.attribute_id =
`cev`.attribute_id WHERE `cev`.entity_id = '2'
;取出客户id为2的在customer_entity_varchar中的属性值

magento不仅提供了EAV模式,同时在数据库中完美支持了Flat表结构,flat和我们普通的表结构,一个产品对应一行数据,相对于EAV的多表
联查来说,单表单行数据的调用效率更高,magento默认是eav模式,可以在后台开启flat(就分类和产品用到)
catalog_product_flat_1
catalog_product_flat_2
后面数字代表store Id,刷新索引的时候会重新更新这些表数据

order表结构
sales_flat_order相关,表命名中带了flat,表示order不使用eav模式,我这么理解的
看这两张表
sales_flat_order_grid//后台grid列出来的相关数据,它把相应的放一起了,应该是为了方便调取,可是这样写的时候就的多了操作,考虑到读应该比写更频繁,这样应该也是可取的
sales_flat_order_item//同上,具体到某个order里面

sales_flat_quote相关表,在网站上点了产品放入购物车,但是没有下单,magento将这些产品暂时放入这些表中,下次用户登录到购物车会拿出来让客户继续,这个没得说。

magento的数据结构很灵活,上面写的也只是大概了解些,具体到实现,还是有很多东西的。

magento 数据结构的更多相关文章

  1. magento addFieldToFilter()方法常用的过滤条件

    记录一下Magento模型集合Model Collection中addFieldToFilter()方法常用的过滤条件.以下参数也同样适用于产品实体的addAttributeToFilter()方法. ...

  2. 高级Magento模型 EAV

    我们讲过Magento有两种模型,简单模型和EAV(Entity Attribute Value)模型.上一章我们讲过所有的Magento模型都是继承自Mage_Core_Model_Abstract ...

  3. Magento 2数据库EAV模型结构

     EAV模型是一种数据模型 ,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多. Magento 2这么设计是为了灵活性,在不影响主干的基础上,任意新增删除属性. EAV模型(E ...

  4. 深入理解MAGENTO – 第九章 – 数据集合瓦瑞恩

    本来,作为一个PHP程序员,如果你想攒一组变量的相关你有一个选择,古老的 阵列 . 尽管共享一个地址的名称与C存储器的阵列,一个PHP数组是一种通用的字典可变数组索引像数值对象结合行为的影响. 在其他 ...

  5. 深入理解Magento - 第六章 - 高级Magento模型

    我们讲过Magento有两种模型,简单模型和EAV(Entity Attribute Value)模型.上一章我们讲过所有的Magento模型都是继承自Mage_Core_Model_Abstract ...

  6. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  7. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  8. 深入浅出Redis-redis底层数据结构(上)

    1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...

  9. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

随机推荐

  1. BZOJ1324: Exca王者之剑

    1324: Exca王者之剑 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 256  Solved: 131[Submit][Status] Desc ...

  2. MVVM Light中的Message

    比喻:像漂流瓶一样发送一个Message,任何人有兴趣就可以拾起来. MVVM Light中的Message的使用分为三个步骤: 1.创建一个类,包含要传递的Message. 2.在ViewModel ...

  3. [Stephen]关于Ext.net fileupload 的兼容性解决问题

    在firefox下,利用fileupload上传图片后,通过后端将image 的src路径进行更新,刷新前段界面显示没有问题. 但是在以IE为内核的360中,这种上传后的更新导致一个命名为Action ...

  4. Kettle汇总时参数

    Kettle汇总时手动执行小时汇总命令: ./kitchen.sh -norep -file /usr/local/evqm/kettle/kettle_scripts/rpt_hour.kjb -p ...

  5. 基于React服务器端渲染的博客系统

    系统目录及源码由此进入 目录 1. 开发前准备 1.1 技术选型1.2 整体设计1.3 构建开发 2. 技术点 2.1 react2.2 redux, react-router2.3 server-r ...

  6. [NOIP2003]栈

    2003年普及组 题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重 ...

  7. 【Java基础】成员变量和局部变量的区别

    在类中的位置不同 成员变量:在类内部方法外部 局部变量:在方法体内部定义的或者方法的参数中定义的在内存中的位置不同 成员变量:在堆内存,有初始化值,byte,short,int,long->0, ...

  8. Hadoop学习记录(4)|MapReduce原理|API操作使用

    MapReduce概念 MapReduce是一种分布式计算模型,由谷歌提出,主要用于搜索领域,解决海量数据计算问题. MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce( ...

  9. [Windows Server] 在 Windows Server 2012 上安裝 .NET Framework 3.5 - 摘自网络

    官方: Applies To: Windows 8, Windows 8.1 For a Windows Server® 2012 core installation that is not conn ...

  10. iOS网络编程(三) 异步加载及缓存图片---->SDWebImage

    @SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...