数仓建模——星型模型和雪花模型

在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。

当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型。

 

星型模式是多维的数据关系,它由事实表和维表组成。

每个维表中都会有一个维作为主键,

所有这些维的主键结合成事实表的主键。

事实表的非主键属性称为事实,它们一般都是数值或其他可以进行计算的数据。

 

星型模型与雪花模型,应该是数仓面试者最喜欢提的问题,也是比较容易理解的概念。

1.星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,例图如下:

数仓建模——星型模型和雪花模型

星型模型

2.当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。如图 2,将地域维表又分解为国家,省份,城市等维表。它的优点是 :通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。

数仓建模——星型模型和雪花模型

雪花模型

一般在互联网公司推崇星型模型,使用便利方便

 

这里的数据冗余,我举例说明一下,不是数据重复,而是数据冗余。

比如地域维度,星型模型会记录中国-广东省-深圳市,中国-广东省-广州市,中国和广东省就是所说的数据冗余

而雪花模型,会分成多个维度表去记录,一个国家维度表,中国,一个省份维度表,写广东省,一个城市维度表,写深圳市、广州市,这样子每个数据都只记录一次,而不是像星型模型那样子前面几列有重复的情况。

这就是所说的数据冗余。

雪花模型分得太细了,没必要,

一张地域表直接维护国家、省份、广州几个同样是地域类型的维度即可。

 

参考:

https://blog.csdn.net/qq_28666081/article/details/104686822

https://www.jianshu.com/p/43f3dffc2b69