什么是雪花模式?

2025年3月17日 | 阅读 3 分钟

雪花模式等同于星型模式。“如果一个或多个维度表不直接连接到事实表,而是必须通过其他维度表连接,则该模式称为雪花模式。”

雪花模式是星型模式的扩展,星型的每个点都扩展成更多的点。它被称为雪花模式,因为雪花模式的图表类似于雪花。 雪花化是一种规范化星型模式中维度表的方法。 当我们完全规范化所有维度表时,结果结构类似于雪花,事实表位于中间。

雪花化用于提高特定查询的性能。 该模式以每个事实被其相关维度包围的方式进行图示,并且这些维度与其他维度相关,分支成雪花模式。

雪花模式由一个事实表组成,该事实表链接到许多维度表,这些维度表可以通过多对一的关系链接到其他维度表。 雪花模式中的表通常被规范化为第三范式。 每个维度表在层次结构中只执行一个级别。

下图显示了一个具有两个维度(每个维度有三个级别)的雪花模式。 雪花模式可以有任意数量的维度,并且每个维度可以有任意数量的级别。

What is Snowflake Schema

示例:图显示了一个雪花模式,其中包含一个 Sales 事实表,以及 Store、Location、Time、Product、Line 和 Family 维度表。 Market 维度有两个维度表,Store 作为主维度表,Location 作为支腿维度表。 产品维度有三个维度表,Product 作为主维度表,Line 和 Family 表作为支腿维度表。

What is Snowflake Schema

星型模式将维度的所有属性存储到一个反规范化表中。 与更规范化的雪花模式相比,这需要更多的磁盘空间。 雪花化通过将低基数的属性移动到单独的维度表中来规范化维度,这些维度表通过外键与核心维度表相关。 不建议仅出于最小化磁盘空间的目的进行雪花化,因为它会对查询性能产生不利影响。

在雪花模式中,表被规范化以删除冗余。 在雪花模式中,维度表被破坏成多个维度表。

下图显示了一家制造公司销售额的简单星型模式。 销售事实表包括数量、价格和其他相关指标。 SALESREP、CUSTOMER、PRODUCT 和 TIME 是维度表。

What is Snowflake Schema

如上所示,销售额的星型模式仅包含五个表,而规范化版本现在扩展到十一个表。 我们会注意到,在雪花模式中,每个原始维度表中基数较低的属性都被删除以形成单独的表。 这些新表通过人工键连接回原始维度表。

What is Snowflake Schema

雪花模式专为跨更复杂维度和关系进行灵活查询而设计。 它适用于维度级别之间的多对多和一对多关系。

雪花模式的优点

  1. 雪花模式的主要优点是由于最小化的磁盘存储要求和加入较小的查找表而提高了查询性能。
  2. 它在维度级别和组件之间的相互关系中提供了更大的可扩展性。
  3. 没有冗余,因此更容易维护。

雪花模式的缺点

  1. 雪花模式的主要缺点是由于查找表数量的增加而需要额外的维护工作。 它也被称为多事实星型模式。
  2. 存在更复杂的查询,因此难以理解。
  3. 表越多,连接越多,查询执行时间越长。