简介:雪花模式是星型模式的变体。在这里,集中的事实表连接到多个维度。在雪花模式中,维度以规范化的形式存在于多个相关表中。当星型模式的维度详细且高度结构化,具有多个级别的关系,并且子表具有多个父表时,雪花结构就会具体化。雪花效应只影响维度表,不影响事实表。
例子:
Employee维度表现在包含以下属性:EmployeeID、EmployeeName、DepartmentID、Region、Territory。 DepartmentID 属性与Employee表和Department维表相链接。部门维度用于提供有关每个部门的详细信息,例如部门的名称和位置。 Customer维度表现在包含以下属性:CustomerID、CustomerName、Address、CityID。 CityID 属性将Customer维度表与City维度表链接起来。 City维度表包含有关每个城市的详细信息,例如 CityName、Zipcode、State 和 Country。
星型模式和雪花模式的主要区别在于雪花模式的维表以规范化的形式维护,以减少冗余。这里的优点是这样的表(标准化)易于维护并节省存储空间。但是,这也意味着需要更多的连接来执行查询。这将对系统性能产生不利影响。
什么是雪花?
雪花设计是维度表进一步扩展和规范化的结果。换句话说,如果维度的低基数属性已被划分为单独的规范化表,则称该维度表是雪花状的。然后将这些表连接到具有引用约束(外键约束)的原始维度表。
通常,不建议在维度表中使用雪花,因为它会妨碍维度模型的可理解性和性能,因为需要加入更多的表才能满足查询。
雪花模式的特征:雪花在以下条件下的维度模型:
- 雪花模式使用较小的磁盘空间。
- 很容易实现添加到架构中的维度。
- 有多个表,所以性能降低。
- 维度表由两组或更多组属性组成,这些属性定义了不同粒度的信息。
- 同一维度表的属性集由不同的源系统填充。
优点:下面给出了雪花模式的两个主要优点:
- 它提供结构化数据,减少数据完整性问题。
- 它使用小的磁盘空间,因为数据是高度结构化的。
缺点:
- 雪花减少了维度表消耗的空间,但与整个数据仓库相比,节省的空间通常微不足道。
- 除非必要且适当,否则避免维度表的雪花化或规范化。
- 不要将一维表的层次结构雪花化为单独的表。层次结构应该只属于维度表,永远不应该是雪花。
- 可以属于同一个维度的多个层次结构是在尽可能低的细节上设计的。