Instiq
Chapter 2 · Prepare and Serve Data (Modeling and Serving)·v2.0.0·Updated 6/16/2026·~9 min

What's changed: Deepened DP-600 Chapter 2 (ja figures; comparison tables/scenarios/FAQ/traps/deep paragraphs in all sections)

2.1Dimensional Modeling and Star Schema

Key points

Understand analysis-friendly data design—star schema (facts and dimensions), Slowly Changing Dimensions (SCD), and surrogate keys—key preparation that drives serving (semantic model) quality.

For analytics/BI, the star schema—separating data into facts (numeric measures) and dimensions (perspectives)—is the standard. It’s the foundation for serving.

2.1.1Star schema structure

Diagram of a star schema with a central fact table (numeric measures like sales plus foreign keys) connected radially to multiple dimension tables (date, product, customer, store), joined via surrogate keys, with SCD managing history.
Star schema
  • Fact table: holds numeric measures (sales, quantity) and foreign keys to dimensions.
  • Dimension tables: hold analysis perspectives (date, product, customer) to slice aggregations.
  • Surrogate keys: system-generated keys on dimensions, stabilizing joins and history.
  • SCD: design to retain attribute history (e.g., Type 2) over time.
Exam point

Common on DP-600: facts = numbers, dimensions = perspectives = star schema, retain history = SCD (Type 2), stable joins = surrogate keys, denormalized star over normalized for analytics/BI. Star schema performs best in Power BI semantic models.

Note

A date dimension (calendar table) is essential for time intelligence (e.g., YoY) and is included in most models.

For analytics/BI, a denormalized star schema is faster and easier than full normalization (3NF) and performs best in Power BI semantic models. For a fact, first decide the grain (what one row represents), then hold measures (additive/semi-additive/non-additive) and foreign keys. Dimensions are analysis perspectives (date, product, customer) with a surrogate key (system-generated integer) as primary key, separated from the business (natural) key to stabilize joins and history. Attribute changes are handled by SCD: Type 1 (overwrite, no history), Type 2 (add rows with validity dates/current flag to keep history), Type 3 (keep prior value in a column). A snowflake (further-normalized dimensions) adds joins and often hurts BI performance, so prefer star. Use bridge tables or multiple facts for many-to-many or differing grains. A date dimension with contiguous dates, year/quarter/month, and fiscal year underpins time intelligence (e.g., YoY). Good schema design keeps downstream DAX simple and reports fast.

SCD typeBehaviorHistory
Type 1Overwrite the attributeNot kept
Type 2Add rows (validity/current flag)Fully kept
Type 3Keep prior value in a columnLimited (prior only)
Note

Scenario: even when a customer’s address changes, analyze past sales by the region at that time. → Make the customer dimension SCD Type 2: on an address change, add a new row (new surrogate key) with validity dates/current flag to keep history. Facts reference the surrogate key as of the event, so the past aggregates correctly by the then-current attributes.

Note

FAQ: Q. Why surrogate keys? → A. To stabilize joins and history (SCD Type 2 allows multiple rows per business key) independent of business-key changes/duplicates/source differences. Q. Star or snowflake? → A. For BI/Power BI, prefer star (denormalized); snowflake adds joins and often hurts performance.

Warning

Trap: “fully normalized (3NF) is best for analytics/BI” is wrong—BI favors a denormalized star schema. Also “use SCD Type 1 to keep history” is wrong—Type 1 overwrites (no history); history retention is Type 2.

2.1.2Section summary

  • Star schema = fact + dimensions (joined by surrogate keys)
  • History = SCD, time intelligence = date dimension

Sign in to track progress — Log in.

Quick check

(just a quick review)

Q1. Which data design—separating facts and dimensions—suits analytics/BI?

Q2. What is the technique to retain dimension attribute changes as history called?

Q3. What does a fact table mainly hold?

Check your understandingPractice questions for Chapter 2: Prepare and Serve Data (Modeling and Serving)