当前位置:   article > 正文

事实表和维度表是怎么造数据_数据仓库建模——维度表、事实表与星型模式

事实星座建模

28de211e6a2d00da340e2520c3094d11.png

一、维度建模的基本概念

维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。

它本身属于一种关系建模方法,但和在操作型数据库中介绍的关系建模方法相比增加了两个概念:

1. 维度表(dimension)

表示对分析主题所属类型的描述。比如"昨天早上张三在京东花费200元购买了一个皮包"。那么以购买为主题进行分析,可从这段信息中提取三个维度:时间维度(昨天早上),地点维度(京东), 商品维度(皮包)。通常来说维度表信息比较固定,且数据量小。

2. 事实表(fact table)

表示对分析主题的度量。比如上面那个例子中,200元就是事实信息。事实表包含了与各维度表相关联的外码,并通过JOIN方式与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表规模迅速增长。

二、维度建模的三种模式

1. 星形模式

星形模式(Star Schema)是最常用的维度建模方式,下图展示了使用星形模式进行维度建模的关系结构:

a1355d8d28ee98be5d4c4cf4fe8e71e5.png
星型模式

可以看出,星形模式的维度建模由一个事实表和一组维度表组成,且具有以下特点:

  • 维度表只和事实表关联,维度表之间没有关联;
  • 每个维度表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
  • 以事实表为核心,维度表围绕核心呈星形分布。

2. 雪花模式

雪花模式(Snowflake Schema)是对星形模式的扩展,每个维度表可继续向外连接多个子维度表。下图为使用雪花模式进行维度建模的关系结构:

3edb5a2edfe818724dc83639d7ffa6cc.png
雪花模式

星形模式中的维度表相对雪花模式来说要大,而且不满足规范化设计。雪花模型相当于将星形模式的大维度表拆分成小维度表,满足了规范化设计。然而这种模式在实际应用中很少见,因为这样做会导致开发难度增大,而数据冗余问题在数据仓库里并不严重。

3. 星座模式

星座模式(Fact Constellations Schema)也是星型模式的扩展。基于这种思想就有了星座模式:

0ffc2db46632c2f88101f03341f2ea56.png
星座模式

前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。

4. 三种模式对比

归纳一下,星形模式/雪花模式/星座模式的关系如下图所示:

598968aade2b32b55fc6f65ba3bfce08.png
三种模式的关系

雪花模式是将星型模式的维表进一步划分,使各维度表均满足规范化设计。而星座模式则是允许星形模式中出现多个事实表。

三、建模技巧

通常在需求搜集完毕后,便可进行维度建模了。Adventure Work Cycles案例即可采用星形模型维度建模。但不论采取何种模式,维度建模的关键在于明确下面四个问题:

1. 哪些维度对主题分析有用?

Adventure Work Cycles案例中,根据产品种类、销售区域、时间,对销售额、销量进行分析是非常有帮助的。

2. 如何使用现有数据生成维度表?

Adventure Work Cycles案例中,样本数据已经生成维度表。

3. 用什么指标来"度量"主题?

Adventure Work Cycles案例的主题是销售,而销量和销售额这两个指标最能直观反映销售情况,此外客单价、平均运费、平均税率等指标也可以进行分析。

4. 如何使用现有数据生成事实表?

Adventure Work Cycles案例中,样本数据已经生成事实表。

明确这四个问题后,便能轻松完成维度建模。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/664132
推荐阅读
相关标签
  

闽ICP备14008679号