读书笔记:数据仓库——事实表、维度表、星型模型、雪花模型

笔者根据自己理解总结,如有谬误,恳请指正

  • 事实表

事实表,即为事实数据表的简称。主要特点是含有大量的数据,并且这些数据是可以汇总,并被记录的。——百度百科

记录既定事实数据的数据集,比如某时某地某物发生某事,记录为一条数据,一般是原始数据;例如2020年1月1日购物平台袜子销售金额为1000元,这条数据也可以继续细分,如2020年1月1日1时1分1秒20元卖出一双A牌B型号袜子。

因此,事实表的设计与平台能记录的事实数据的最小粒度有关。 如果记录了每双袜子的销售情况,则每次销售记录的集合为事实表,每天的销售数据可以通过该事实表聚合而得;如果仅记录了每天的销售数据,那每天的销售记录的集合为事实表;

事实表由键值和度量值组成,一个事实表中可以包含多个键值和度量值。如上述的例子中,2020年1月1日1时1分1秒为时间维度键值,A牌为品牌维度键值,B型号为型号维度键值,20元为金额度量值,事实表结构如下:

时间 品牌 型号 类型 金额
2020年1月1日1时1分1秒 A B 袜子 20

如果对该事实表进行简化,如A品牌B型号袜子简化为产品A,对应产品ID为0001,则事实表结构如下:

时间 产品ID 金额
2020年1月1日1时1分1秒 0001 20

此时会发现在事实表我们会丢失A品牌B型号袜子等关键信息,就需要引入维度表来管理这些信息

  • 维度表

维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。——百度百科

还是以上述例子为例,我们构建产品维度表:

产品ID 品牌 型号 类型 指导价
0001 A B 袜子 20
0002 A C 袜子 30
0003 B D 鞋子 30

通过产品维度表+销售记录事实表,我们就可以得到关于销售信息的数据模型了;

维度表由主键和属性组成,一个维度表只能有一个主键,且主键的值不能重复,一个维度表可以包含多个属性,且这些属性可以进行扩展。一般我们用DIM来表示维度表

上述例子中,销售记录事实表与产品维度表形成1对1的关联关系,但是一般情况下,事实表和维度表都是1对多的关系,例如销售记录事实表的结构增加销售人员ID和购买者ID两个键值,结构如下:

时间 产品ID 销售人员ID 购买者ID 金额
2020年1月1日1时1分1秒 0001 0011 0111 20

此时,我们需要引入三个维度表:产品维度表,销售人员维度表和消费者维度表,此时形成了我们常说的星型模型

  • 星型模型

星型模式是多维的数据关系,它由事实表(Fact Table)和维表(Dimension Table)组成。每个维表中都会有一个维作为主键,所有这些维的主键结合成事实表的主键。事实表的非主键属性称为事实,它们一般都是数值或其他可以进行计算的数据。——百度百科

例如上述例子中,销售记录事实表与产品维度表,销售人员维度表、消费者维度表构成的星型模型为:


星型模型

星型模型特点:
维度表只与事实表关联,维度表之间不关联;
每个维度表都有一个主键,事实表通过每个维度表的主键与维度表进行关联;
以事实表为核心,呈星型分布;

假设有这样一个场景,产品维度表改造为:

产品ID 品牌ID 型号 类型 指导价
0001 100 B 袜子 20
0002 100 C 袜子 30
0003 101 D 鞋子 30

增加品牌信息维度表,并增加一些品牌相关的属性,结构如下:

品牌ID 代理人 联系电话 地址
100 张三 XXXXX 上海市
101 李四 XXXXX 北京市
102 张三 XXXXX 贵州省

这种情况下,品牌维度表无法和事实表直接关联,需要通过销售记录事实表->产品维度表->品牌维度表的关系获得,如果采用星型模型,这在产品维度表中会冗余品牌的信息(此时产品维度表包含产品ID、品牌ID、代理人、联系电话、地址、型号、类型、指导价等属性),为应对这种情况,一般引入雪花模型进行数据数据仓库建模

  • 雪花模型

雪花模型是当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。——百度百科

针对上述产品维度和品牌维度的例子,直接画模型:


雪花模型

雪花模型是在星型模型基础上,为了规范化设计而形成的,相比星型模型,雪花模型的特点是贴近业务,数据冗余较少,但由于表连接的增加,导致了效率相对星型模型来的要低一些。星型模型和雪花模型的区别在于:维度表是直接连接到事实表还是其他维度表。

  • 星座模型
    上述所有例子都考虑了只有一个事实表的情况,维度表都根据该事实表展开,但是实际情况中我们会面对多个事实表的情况,事实表之间会由于引入相同的维度而形成关系模型,我们用星座模型来表述这种关系。

星座模型是一种常见的数据仓库的概念模型。这种模型往往应用于数据关系比星型模型和雪花模型更复杂的场合。事实星座模型需要多个事实表共享维度表,因而可以视为星形模型的集合,故亦被称为星系模型。——百度百科

直接上图:

星座模型
  • 宽表

很多场景中,我们都会听到宽表一词,

宽表从字面意义上讲就是字段比较多的数据库表。通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。——百度百科

个人理解:宽表是为了分析和理解数据而构建的,将事实表和维度表合并而成的数据集,是通过牺牲存储空间,通过数据冗余来提高数据分析和理解效率,宽表已经不符合三范式的模型设计规范,常用于数据展示、训练算法模型等场景中。

  • 聚合表

在事实表基础上,根据维度表的属性对事实表度量值进行统计分析(例如累加、计数、均值、极值等)而形成的数据表,一般是为了提高查询效率而提前形成的数据集。

  • 编码表(码表)

数据仓库中,编码表也是非常重要的组成部分,编码表专门针对代码与实际含义的关联关系而形成的数据集,某种意义上来说,编码表可认为是结构较简单、内容较固定的维度表,主键为代码(编码),属性为实际含义。编码表各系统间差别较大,构建数据仓库时可以参考国家标准、地方标准或行业标准进行编码表设计。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容