跳转到内容

数据仓库设计

在数据仓库(Data Warehouse)设计中,维度表(Dimension Table)事实表(Fact Table) 是两大核心构建块。通过它们的有机组合,演化出了商业智能 (BI) 领域最常用的 星型模型雪花模型


维度表构成了业务分析的“视角”,回答了业务动作中“谁、什么、哪里、何时”的问题。

  • 内容构成:包含详细的 描述性属性(Descriptive Attributes,如人名、地名、商品类目)。
  • 物理特征:行数较少(数据增长慢),但列数较多(被称为“宽表”)。
  • 主键设计:通常使用无业务含义的自增 代理键(Surrogate Key) 作为维度主键。
  • 业务用途:作为数据筛选、分组(Group By)以及多维分析中的 切片与切块(Slice and Dice) 的入口。

示例(商品维度表 Dim_Product):记录 SKU_ID、品牌、颜色、供应商等不变或慢变信息。


事实表是数据仓库的数据引力中心,记录业务动作产生的客观 度量值,回答了“发生了多少、金额多大”的问题。

  • 内容构成:主要由 数字度量(Numeric Measures,如销售额、点击量)和指向各维度表的 外键集合 组成。
  • 物理特征:行数极其庞大(每天可能产生上亿条记录),但列数相对精简(“高而窄”)。
  • 主键设计:通常由多个维度外键组成的 复合主键
  • 业务用途:支撑 BI 报表的聚合、求和(SUM)、求平均(AVG)等数学统计分析。

示例(订单事实表 Fct_Sales):仅记录时间代理键、商品代理键、客户代理键以及购买数量和实付金额。


将事实表与维度表通过外键关联,即形成了数据仓库的架构模型。

  • 架构拓扑:事实表位于正中心,周围直接环绕着一圈维度表。各维度表之间 互不关联
  • 性能优势:关联(Join)路径极短,查询效率最高。它是主流 BI 工具(如 Tableau, PowerBI)优化支持的最佳结构。
  • 劣势:维度表存在数据冗余(未满足数据库第三范式)。
  • 架构拓扑:在星型模型的基础上,对维度表进行进一步规范化拆分,形成层次结构(如“商品维度”向外拆分出独立的“品牌维度表”)。
  • 设计优势:消除了维度数据冗余,维护成本更低。
  • 性能劣势:执行分析时需要 多级 Join 连接,严重拖慢大规模数据的查询性能,架构更复杂。

特性评估维度表 (Dim)事实表 (Fact)
存储内容文本描述(谁/什么/哪里/何时)数字度量(频率/金额/数量)
表体量行数少(慢变数据)行数极多(海量快变数据)
表结构宽(列数多)窄(列数少,全为外键和数字)
键类型单一代理主键复合外键组
分析用途分组、过滤、提供业务上下文计算、聚合、统计分析底座