星型模型中有一张事实表,以及零个或多个维度表,事实表与维度表通过主键外键相关联,维度表之间没有关联,当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型。星形模型是最简单,也是最常用的模型。由于星形模型只有一张大表,因此它相比于其他模型更适合于大数据处理。其他模型可以通过一定的转换,变为星形模型。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家 A 和省 B 的信息分别存储了两次,即存在冗余。星型模型是数据仓库设计中使用的一种常见模型,其结构类似于一颗星星,由一个中心的事实表(Fact Table)和围绕在其周围的多个维度表(Dimension Table)组成。事实表包含业务过程中的度量值(如销售额、数量等),而维度表则包含用于描述这些度量值的上下文信息(如时间、地点、产品等)。
优点:
- 简化查询:由于模型结构简单,查询逻辑较为直接,能够快速响应查询需求。
- 简化业务报表逻辑:与高规范化的事务模型相比,星型模型简化了业务报表的生成逻辑。
- 提升查询性能:对于只读报表类应用,星型模型能够显著提升查询性能。
- 便于向立方体提供数据:星型模型被广泛用于高效地建立OLAP立方体,几乎所有的OLAP系统都支持这种模型。
缺点:
- 数据完整性不足:一次性地插入或更新操作可能会造成数据异常,而在规范化模型中这种情况是可以避免的。
- 灵活性不足:星型模型更偏向于特定目的的数据视图,对于全面的数据分析支持不够灵活。
- 难以支持多对多关系:星型模型不自然地支持业务实体之间的多对多关系,需要额外的桥接表。
应用案例:
以电商数据仓库建设为例,星型模型可以应用于销售数据分析。例如,事实表可以记录每笔交易的销售金额、数量等信息,而维度表则包括时间维度(如交易日期)、产品维度(如产品ID、产品名称)、客户维度(如客户ID、客户姓名)等。通过星型模型,可以方便地查询和分析不同时间段、不同产品、不同客户的销售情况。