数据仓库与数据集市建模

一. 什么是数据模型

数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。在这里,数据模型表现的抽象的是实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。

二. 维度建模的基本概念

维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。它本身属于一种关系建模方法。以下说明一下在维度建模当中出现的两个概念:

  1. 维度表(dimension)

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

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

三. 维度建模的三种模式

  1. 星形模式

    星形模式(Star Schema)是最常用的维度建模方式,星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:
    a. 维表只和事实表关联,维表之间没有关联;
    b. 每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
    c. 以事实表为核心,维表围绕核心呈星形分布;

  2. 雪花模式

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

  3. 星座模式

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

  4. 三种模式对比

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

posted @ 2020-11-10 16:06  Shmily_blog  阅读(258)  评论(0编辑  收藏  举报