一、维度建模的基本概念
1.1维度建模的定义
维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法,数据集市可以理解为是一种小型的数据仓库。
1.2 维度表(dimension)
维度表示你要对数据进行分析时所用的一个量,比如,你要分析产品销售情况,你可以选择按照类别来进行分析,或者按照区域进行分析。这样的按照XX进行分析的就构成了一个维度。再比如“昨天下午我在星巴克话费200元喝了一杯卡布奇诺”,那么以消费为主题进行分析从这段消息中可以提取三个维度:时间维度(昨天下午)、地点维度(星巴克)、商品维度(卡布奇诺)。通常来说维度表信息比较固定,且数据量小。
1.3 事实表(fact_table)
表示对分析主题的度量。事实表包含了与各维度表相关联的外键,并调用JOIN方式与维度表关联。事实表的度量通常是数值型的,且记录数会不断增加,表规模迅速增长。比如上面消费的例子,他的消费事实表结构示例如下所示:
消费事实表:prod_id(引用商品维度表id)、timekey(引用时间维度表)、place_id(引用地点维度表)、unit(销售量)。
总的来说,在数据仓库中不需要严格按照规范化设计原则,因为数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操作。事实表的设计是以能够正确记录历史信息为准则,维度表的设计是以能够以合适的角度来聚合主题内容为原则。
二、维度建模的三种方式
2.1 星型模型
星型模型&