数据仓库的逻辑模型通常有星型模式和雪花模式两种基本结构。
(1)星形模式(Star Schema)
星形模式是以唯一的事实表为中心,由若干个维度表与其相连。在图3-17中,事实表是销售表,维表有产品维表、商店维表和日期维表。该模式简洁、表达查询方便且易于理解,是最常见的模式。
事实表中与主题相关的维标识符既是外键又是对应维表的主键,如图3-17中的产品标识符、商店标识符和日期标识符。
图3-17 某公司销售数据仓库数据的星形模式
星形模式的缺点是,有些维度是非规范化的。例如,图3-17的商店维表中,对于省份相同的商店,它们的属性“国家或地区名”“洲名”都相同,因此存在很多冗余。要解决此问题,就形成了雪花模式。
(2)雪花模式(Snowflake Schema)
雪花模式是星形模式的变种,其中某些维表被规范化,因而把数据进一步分解到附加的表中。这样,一个维度由若干层次组成,对应多个表,此模式图形类似于雪花的形状。雪花模式的维表规范化后,减少了冗余、易于维护并节省存储空间,但执行查询需要更多的连接操作,因此雪花结构可能降低浏览的效果。尽管雪花模式减少了冗余,但系统的性能可能相对受到影响,因此,在数据仓库设计中,雪花模式不如星型模式流行。
图3-18给出的是某公司销售数据仓库数据的雪花模式。图中的事实表与图3-17所示的星型模式相同。两种模式的主要差别是维表,星型模式中的单个产品维表在雪花模式中被规范化,对应新的产品维表、类维表和大类维表;雪花模式的商店维表中,市名连接到市维表,市维表中的省名连接到省维表,省维表中的国家或地区名连接到国家或地区维表;雪花模式中,日期维表中的月连接到月维表,月维表中的季连接到季维表。
图3-18 某公司销售数据仓库数据的雪花模式