星型模型

星型模型:一张事实表直接连接若干维度表,维度保持反规范化(层级字段落在同一张维表里);查询连接少、易理解,代价是维度存在冗余。

星型模型是什么

星型模型是维度建模最常用的落地形态:一张事实表居中,直接连接若干维度表,图形上像一颗星。它的关键特征是维度表保持反规范化——商品的类目、一级类目这类层级字段都放在同一张维表里,而不是拆成多级规范表。这样查询时只需要一次连接就能取到全部描述信息,BI 工具和多数数仓实践都以它为默认形态,代价是维度字段存在冗余。

基本信息

结构事实表居中,维度表一圈
维度处理反规范化,层级字段冗余
优点连接少、查询简单、BI 友好
代价维度变更影响面较大需谨慎
对比形态雪花模型(维度继续拆分成多级表)
对比形态星座模型(多个事实表共享维度)

星型查询

星型查询
SELECT d.year_month, p.category, SUM(f.amount) AS amt
FROM fact_order f
JOIN dim_date d ON f.date_sk = d.date_sk
JOIN dim_product p ON f.product_sk = p.product_sk
GROUP BY d.year_month, p.category;

典型使用场景

  • 经营分析:按时间、商品、渠道等维度自由下钻的指标查询
  • BI 自助分析:工具能自动识别事实与维度,生成查询不必手工写多级连接
  • 口径统一:维度属性集中一处,避免每张报表各写一遍映射
  • 性能优化:连接次数少,配合分区与列存扫描效率更高
  • 跨主题对比:多个事实表共享同一套维度,指标之间可以直接比较

三种形态对比

形态维度处理特点
星型维度反规范化连接少,查询直观
雪花维度继续规范化节省冗余但连接层数增加
星座多事实共享维度跨主题分析方便,治理更复杂
宽表维度属性直接打平进事实查询最快,更新与冗余成本高
BI 工具与多数数仓实践默认星型;维度冗余(商品-类目-一级类目)换来的是查询免多级连接。
维度字段的冗余范围要控制:把整张商品属性都塞进维度表会让维表体积膨胀、更新代价上升,通常只放分析常用的层级与分类字段。

易错点

  • 把维度做成多级规范表再叫星型,实际是雪花,查询层数增加
  • 维度表直接引用源系统主键,源端变更后历史对不上
  • 维度层级字段只在加载时算一次,上游分类调整后历史数据无法同步
  • 事实表里混入描述性字段,维度的复用价值被削弱
  • 维度表更新没有版本概念,回溯报表时取到的是当前属性

数据来源与参考

  • Kimball《The Data Warehouse Toolkit》星型模型章节
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌