判断步骤
1️⃣ 看表内容
-
属性字段多 → 倾向维度表
-
指标字段多 → 倾向事实表
2️⃣ 看业务含义
-
描述实体 → 维度表
-
记录事件/交易 → 事实表
3️⃣ 看数据增长方式
-
历史追溯 → 维度表可拉链
-
新增为主 → 事实表
4️⃣ 看表粒度
-
每条记录唯一描述一个实体 → 维度表
-
每条记录唯一描述一次业务事件 → 事实表
1. 观察表的业务角色和数据粒度
-
事实表(Fact Table):
-
通常记录业务过程或事件(如销售、订单、库存变动)。
-
表中的数据是 可度量的(measurable),如金额、数量、时间、成本等。
-
数据通常具有 时间粒度,可能会随业务增长而快速累积。
-
典型字段:
order_id,amount,quantity,transaction_date。
-
-
维度表(Dimension Table):
-
描述事实表的上下文或属性(如客户、产品、地区、时间)。
-
表中的数据是 描述性的(descriptive),通常不会像事实表一样快速增长。
-
典型字段:
customer_name,product_category,region_name。
-
思路:问自己 “这个表记录的是事件吗?还是描述对象的属性?”
-
如果是事件 → 偏事实表
-
如果是描述对象 → 偏维度表
2. 看主键和外键
-
事实表:
-
通常包含多个外键(FK),指向维度表。
-
主键可能是复合主键(多个维度 FK 的组合)或者一个业务生成的唯一 ID。
-
-
维度表:
-
主键通常是单一的业务主键或代理键(Surrogate Key)。
-
通常不包含指向其他表的外键(除了可能的层级关系,比如产品类别表指向上级类别表)。
-
例子:
3. 看表的字段类型
-
事实表:
-
大量数值型字段(可加总、可度量)。
-
时间字段通常很重要,用于分析趋势。
-
-
维度表:
-
以文本、分类码、枚举字段为主。
-
描述性字段占多数(如名字、类别、属性)。
-
4. 观察数据的增长和使用模式
-
事实表:
-
数据量大,增长快,通常按时间追加。
-
用于聚合、统计和分析。
-
-
维度表:
-
数据量相对较小,增长慢。
-
主要用于提供事实表分析的上下文信息。
-
5. OLTP 系统的提示
-
OLTP 系统中通常没有明确的“事实表”和“维度表”概念。
-
可以通过 业务分析 来映射:
-
找到 业务事件表 → 对应事实表
-
找到 业务实体表 → 对应维度表
-
✅ 总结判断思路
| 判断点 | 事实表 | 维度表 |
|---|---|---|
| 数据内容 | 事件/事务/度量 | 描述/属性 |
| 主键/外键 | 复合主键或事件 ID;多个 FK 指向维度表 | 单一主键;通常无外键 |
| 字段类型 | 数值字段多;可度量 | 描述性字段多 |
| 数据量与增长 | 大且增长快 | 小且增长慢 |
| 时间粒度 | 通常有时间字段 | 通常没有或非关键 |

浙公网安备 33010602011771号