维度建模的基本概念
维度建模是专门用于分析性数据库、数据仓库、数据集市的建模方法。与传统的关系性建模方法相比它增加了“维度表”与“事实表”两个概念。
维度表
表示对分析主题所属类型的描述。如:上周天我在天猫花费了200元购买了一副蓝牙耳机,那么以购买主题进行分析,我们可以提取出三个维度:时间维度(上周天)、地点维度(天猫)、商品维度(蓝牙耳机)。通常来说维度表比较固定,数据量比较少。
事实表
表示对分析主题的度量。如:上面那个例子中200元就是一个事实信息。事实表中不久包含了度量信息(实表的度量通常为数值类型),还包含了与各维度表相关联的外键,后面可以通过join的方式与维度表关联。通常事实表中的数据量会不断增加,表规模迅速增大。
维度建模的三种模式
星型模式
星型模式是最常见的建模方式,它是由一个事实表与一组维表组成,它具有如下几个特点:
维表只与事实表关联,维表之间没有关联
事实表中会存放维表的主键
以事实表为核心,维表围绕核心成星型形状
雪花模式
雪花模式是对星型模式的扩展,每个维表可以继续向外连接多个子维表。雪花模型相当于把星型模型中的大维表拆分为多个小维表,满足了数据库设计规范。雪花模型在实际数仓建模中运用比较少,因为这种设计模式会增加开发的查询难度。
星座模式
星座模式也是星型模式的扩展,星座模式中允许存在多个事实表,同时一个维表表可能会被多个事实表引用。在业务发展的后期,绝大部分维度建模都采用星座模式。
对比三种维表建模方式
雪花模式