Chapter02-Simple Star Schemas
本页目录· 9 条
Overview
本章名为 “Simple Star Schemas”,旨在用两个实际案例(College & Sales)说明如何把操作型数据库通过 星型模式(Star Schema) 转换为分析型数据仓库,并提供一种 Two-Column Table 检查法来验证模型正确性。全章结构分为四大部分:Notation & Process→College 案例→Sales 案例→Two-Column 方法,共同串起从概念、建模到 SQL 实现与质量验证的完整学习路径。
1. Notations & Process
| 子节 | 教授内容 | 可从哪些角度深入学习 |
|---|---|---|
| 1.1 Star Schema Notation | ★ 数据仓库是多维视角;星型由 Fact + Dimensions 组成;Fact 仅含数值;Dimension ID 在 Fact 中既是 FK 也是 PK;可用直线或折线表示关联。 | - 复习事实表/维度表的角色与粒度- 练习识别维度主键、度量值- 画出简单星型草图并标注 PK/FK |
| 1.2 E/R Diagram Notation | 实体大写;PK、FK 标注;用 Crow-foot 表示基数;区分一对多与多对多关系。 | - 对照传统 ER 图与星型图的差异- 练习把 ER 图关系转化为维度/事实 |
| 1.3 Transformation Process | 概念上承上启下:说明从 ER ➜ 星型的流程(虽无细节步骤,但为后续案例做铺垫)。 | - 列出自己项目中可能的源表- 思考应聚合哪些度量、保留哪些维度 |
1.1 Star Schema Notation
Data warehouse is a multi-dimensional view of the database
当我们绘制/设计星型模式图时,我们应该考虑什么,有什么规则需要遵循
星型模式是数据仓库的一种建模方法,而实体关系图 (ERD) 是数据库的一种建模方法。
规则基于案例场景,即用户想要分析的主题或事物。例如,如果我想分析销售业绩,你设计的星型模式与销售额相关(事实度量:销售额)。DIM 将基于用户提供的数据,例如时间、地点和分行(如果这些数据存在于数据库中)。
在编写fact和dimensions时,是否有任何命名约定规则需要遵循
Yes, we have.
PK for DIM & Fact: end with ID
1
fact table include all PK from dimension table and use them as PF. except that, fact table include the fact measure which the fact you want to analyse,e.g: total_sales
关于模型设计
我们想提请你注意本单元关于实验练习和作业的一个关键方面。星型模型的设计,包括事实度量和维度,完全基于我们为每个练习和作业提供的具体问题。
务必严格遵循问题要求并相应地设计星型模型。事实度量和维度应与解决给定问题所需的数据和分析完全一致。
在进行星型模型设计之前,请确保你完全理解问题提示和预期结果。任何与所提供问题的偏差都可能导致结果不准确,并影响你的评估。
表的标题应该总是像名称末尾的 FACT、DIM
我们需要对维度表施加约束(例如唯一约束)吗
是的,表中的每一行都必须唯一且无重复。
1.2 E/R Diagram Notation
1.3 Transformation Process
2. Case Study 1:College Star Schema
| 教授内容 | 学习切入点 |
|---|---|
| - 通过 国际学生缴费 场景提出四个分析问题(按国家、课程、代理、入学年份统计收入与付款次数)。 - 从问题中抽出 Fact(Number of Payments, Total Income)与 Dimensions(Country, Course, Agent, Enrolment Year)。 | 1. 练习“问题→维度/度量”映射2. 掌握 create table … as select 聚合生成事实表的方法,并理解为何直接用操作库表而不是维度表创建事实表。 |
- SQL 示例展示如何联结 Student、Enrolment、Payment 表聚合生成 CollegeFact。 | 3. 在本地数据库复现 SQL,检验结果4. 思考进一步细化维度(如学期、奖学金类型)对分析粒度的影响 |
Create dimension tables
Create fact table
3. Case Study 2:Sales Star Schema
| 教授内容 | 学习切入点 |
|---|---|
| - 目标:按 季度、门店、产品类别 汇总销售额。 | 1. 比较与 College 案例维度差异,体会星型可复用模式 |
| - 三种创建维度表的方法:① 直接复制原表;② 挑选部分列;③ 手工创建并插入(TimeDim 例)。 | 2. 操作层面掌握三种脚本写法;尝试为 TimeDim 写自动化脚本 |
- 示例 SQL:ProdCategoryDim、BranchDim 复制;TimeDim 手工插入四个季度记录。 | 3. 练习使用临时表 (TempFact) 先算出季度,再汇总到事实表;理解临时层在 Data Pipeline 中的作用。 |
Create dimension tables
Create fact table
Three ways to Create dimension table
- 使用
create table as select *,直接从操作型数据库的表中进行复制。 - 从操作型数据库的表中选择特定的属性(列)
- 手动创建dimension表,然后使用
insert into语句将新记录插入表中。
4. Two-Column Table Methodology
| 教授内容 | 学习切入点 |
|---|---|
| - 用 “类别 + 度量” 的二列表格从不同维度视角检查事实表是否一贯。区分 单一度量 与 多度量 场景,若每张表都能合理展示数据,说明星型设计正确。 | - 针对自己构建的星型,画出两列表格做 sanity check- 思考多度量时必须在所有维度均可见的原则 |
To check the correctness of a star schema
5. Chapter Summary
- Fact = 聚合数值,Dimensions = 分析视角;二者共同定义多维模型。
- 维度表可 复制、抽取或手工 创建;事实表可 直接聚合 或借助 TempFact。
- Two-Column 方法是验证星型一致性的快速工具。