← Back to Glossary

Snowflake schema

A snowflake schema is a dimensional model where dimension tables are normalized into multiple related sub-tables instead of one flat table, reducing redundancy at the cost of extra joins.

Overview

A snowflake schema extends the star schema by normalizing dimension tables. Instead of one flat dim_product table that repeats category_name and department_name on every row, a snowflake schema splits it into dim_product, dim_category, and dim_department, each joined by a key. Visualized, the dimensions branch outward into further sub-dimensions, resembling a snowflake rather than a single-hop star.

The motivation is the same one behind normalization generally: eliminate repeated text values, shrink storage, and guarantee that an attribute like a category name is updated in exactly one place. The cost is query complexity — answering "revenue by department" now requires joining fact → product → category → department instead of a single join to a flat dimension.

Related terms

FAQS

Not generally. Snowflaking reduces redundancy in dimension tables but adds joins that make queries more complex and often slower. Most warehouses default to star schemas and only normalize a dimension when it's large, hierarchical, or updated often enough that the redundancy becomes a real problem.