一、维度建模的基本概念
维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。
它本身属于一种关系建模方法,但和在操作型数据库中介绍的关系建模方法相比增加了两个概念:
1. 维度表(dimension)
表示对分析主题所属类型的描述。比如"昨天早上张三在京东花费200元购买了一个皮包"。那么以购买为主题进行分析,可从这段信息中提取三个维度:时间维度(昨天早上),地点维度(京东), 商品维度(皮包)。通常来说维度表信息比较固定,且数据量小。
2. 事实表(fact table)
表示对分析主题的度量。比如上面那个例子中,200元就是事实信息。事实表包含了与各维度表相关联的外码,并通过JOIN方式与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表规模迅速增长。
二、维度建模的三种模式
1. 星形模式
星形模式(Star Schema)是最常用的维度建模方式,下图展示了使用星形模式进行维度建模的关系结构:星型模式
可以看出,星形模式的维度建模由一个事实表和一组维度表组成,且具有以下特点:维度表只和事实表关联,维度表之间没有关联;
每个维度表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
以事实表为核心,维度表围绕核心呈星形分布。
2. 雪花模式
雪花模式(Snowflake Schema)是对星形模式的扩展,每个维度表可继续向外连接多个子维度表。下图为使用雪花模