Data Modeling Updated: 2026-01-21

What is Data Modeling?

The process of creating a visual representation of data structures and relationships, defining how data is stored, organized, and accessed in databases and warehouses.

From the field

Data modeling is the unglamorous, consequential discipline that decides whether your warehouse is a pleasure to work with in three years or a swamp nobody understands. Everyone focuses on the tool (dbt, Snowflake, BigQuery) and skips the modeling; a year later they have 2,400 models with no consistent naming convention, no grain discipline, no SCD strategy, and every analyst writes subtly different versions of "revenue."

Three schools, pick deliberately

Kimball (dimensional) — star schemas, fact and dimension tables, denormalized dimensions. Intuitive for analysts, fast for BI, well-understood. Works for 80% of analytics workloads.

Data Vault 2.0 — hubs/links/satellites, auditability and history preservation as first-class concerns. Shines for regulated industries (banking, insurance) with heavy audit requirements and complex source-system integration. Costs more to build; pays off at scale with auditability.

One Big Table (OBT) / wide denormalized — pre-joined, analyst-friendly mart. Works well on Snowflake/BigQuery where storage is cheap and columnar pruning handles wide tables. Simpler for analysts but harder to evolve and test.

Field story

A mid-sized SaaS I worked with had grown their dbt project to 1,800 models over three years with no model layering — staging, intermediate, and marts all mixed together, no consistent primary key naming, no documented grain per model. New engineers took six weeks to ramp; a typical analyst question required reading 8-10 models to answer. We did a six-week refactor: adopted Kimball as the mart layer, enforced staging/intermediate/marts layering, renamed primary keys consistently, added {{ config(contract={enforced: true}) }} on marts, and documented grain for every fact table. Ramp time dropped to one week; the senior team stopped being the bottleneck on every analyst question. The lesson: modeling discipline compounds. Invest early, or pay interest forever.

Data modeling is the process of creating a visual representation of how data is structured, stored, and accessed in a system. It defines entities, attributes, relationships, and constraints—serving as the blueprint for databases and data warehouses.

Types of Data Models

1. Conceptual Model

High-level business view:
  • Entities and relationships
  • No technical details
  • Understood by business stakeholders

2. Logical Model

Detailed structure without platform specifics:
  • Attributes and data types
  • Primary and foreign keys
  • Normalization rules

3. Physical Model

Implementation-ready design:
  • Table definitions with exact data types
  • Indexes and partitions
  • Platform-specific optimizations

Data Modeling Techniques

Dimensional Modeling (Kimball)

Optimized for analytics and BI:
  • Fact Tables: Metrics and measurements
  • Dimension Tables: Descriptive attributes
  • Star Schema: Fact table surrounded by dimensions
  • Snowflake Schema: Normalized dimensions

Data Vault

Scalable, auditable modeling:
  • Hubs: Business keys
  • Links: Relationships
  • Satellites: Descriptive data with history

One Big Table (OBT)

Modern, denormalized approach:
  • Single wide table with all data
  • Optimized for cloud warehouses
  • Simple, fast queries

Best Practices

  1. Start with Business Questions: Model for how data will be used
  2. Document Everything: Maintain a data dictionary
  3. Think About Change: Design for schema evolution
  4. Test with Real Queries: Validate performance early
  5. Use dbt for Implementation: Transform raw to modeled data

Common Mistakes

  • Over-normalization for analytical workloads
  • Ignoring query performance during design
  • Not involving business stakeholders
  • Skipping documentation

Key Points

Gotchas

Data modeling pitfalls I see repeatedly:

  • No documented grain is the #1 killer. Every fact table must have a one-sentence grain statement ("one row per order line per day"). Without it, SUMs double-count through fanout joins and nobody notices until the CEO asks why revenue looks off.
  • Inconsistent primary key naming. Some tables use id, some order_id, some pk_order. Pick a convention (I like _id for natural keys, _sk for surrogate keys) and enforce with linting.
  • SCD strategy by accident, not design. Slowly Changing Dimensions: Type 1 (overwrite), Type 2 (history), Type 3 (previous value column). Decide per dimension before building; retrofitting Type 2 later means rebuilding every downstream fact. Dimensions with business meaning that change (customer_segment, employee_manager) almost always want Type 2.
  • Over-normalization for analytical workloads. Snowflake-schema purity on cloud warehouses with cheap columnar storage is pennywise, pound-foolish. Denormalize dimensions unless you have a specific reason not to.
  • Skipping the semantic layer. Every analyst writing their own revenue definition means every report shows a different number. Centralize business definitions (dbt metrics, semantic layer tools, Looker LookML) and make it harder to re-invent than to reuse.
  • Modeling for today's question, not tomorrow's. A fact table grained at order-level is brittle when someone asks about line-item discounts. Default to the finest grain you can afford; aggregate upward as needed.
  • Ignoring late-arriving facts. Real-world events often arrive after their "event date" — a refund three weeks later. Your merge/upsert logic and partition strategy must handle this. Test with explicitly backdated rows in staging.
  • No unit tests on models. dbt's unique, not_null, relationships, accepted_values tests catch 80% of modeling bugs. Teams that skip tests discover modeling bugs in production dashboards.
  • Mixing layers. Staging (source-shape + light cleanup), intermediate (reusable business-logic building blocks), marts (final star/OBT for consumption) — keep them separated. Mixing is the biggest source of circular dependencies and debugging pain.

Frequently Asked Questions

What is data modeling in simple terms?

Data modeling is the design step of deciding how data will be organized in a database or warehouse — what entities exist (customers, orders, products), what attributes they have (name, status, price), how they relate to each other (customers place orders, orders contain products), and what rules enforce consistency (primary keys, foreign keys, uniqueness). Good modeling produces a schema that is fast to query, intuitive for analysts, and resilient to change. Bad modeling produces a swamp of models nobody understands.

What are the types of data models?

Three levels of abstraction: (1) Conceptual — high-level business entities and relationships without technical detail, usually diagrams for stakeholder alignment; (2) Logical — entities + attributes + keys + normalization, platform-agnostic; (3) Physical — actual DDL with data types, indexes, partitioning, and clustering for a specific platform. Separately, there are methodologies: Kimball dimensional (fact/dimension), Data Vault 2.0 (hub/link/satellite), Inmon 3NF, Anchor Modeling, One Big Table. The levels describe *what* you're modeling; the methodologies describe *how*.

What is a star schema?

A star schema is a Kimball dimensional design with a central fact table (one row per business event — a sale, a click, a payment) surrounded by dimension tables (descriptive context — customer, product, date, store). Foreign keys in the fact connect to primary keys in dimensions. It's called "star" because diagrams show the fact in the center with dimensions radiating out like points. Star schemas are the default for BI workloads because queries need few joins, grain is clear, and analysts can self-serve without understanding complex normalization.

What tools are used for data modeling?

For transformation modeling (the actual SQL/logic that shapes your models): dbt is the dominant choice in modern cloud warehouses. For schema visualization: dbdiagram.io, SqlDBM, Lucidchart, draw.io, Erwin (enterprise). For semantic modeling: dbt's semantic layer, Looker LookML, Cube.dev, Snowflake semantic views, MetricFlow. For Data Vault automation: Vaultspeed, WhereScape, AutomateDV (dbt package). Most modern teams center on dbt + a diagramming tool and skip heavyweight enterprise modeling products.

What is the difference between Kimball and Data Vault modeling?

Kimball (dimensional) optimizes for analyst usability and query performance — denormalized star schemas where each dimension holds flat, readable attributes. Data Vault 2.0 optimizes for source-system integration, auditability, and flexibility — hubs (business keys), links (relationships), satellites (context with history). Kimball is simpler and faster to build; Data Vault is more resilient to source changes and better for regulated industries needing full audit history. Most teams use Kimball; some regulated enterprises use Data Vault for raw/integration layer with Kimball marts on top.

Is dimensional modeling still relevant in 2026?

Yes — dimensional modeling remains the default for analytics mart layers, and its patterns (fact/dimension, grain discipline, SCD) are foundational knowledge for any data engineer. What has changed is the surrounding stack: dbt replaced hand-written ETL, cloud columnar warehouses (Snowflake, BigQuery, Databricks) handle wide denormalized tables efficiently, and the OBT pattern competes with traditional star schemas for some use cases. But the *thinking* of dimensional modeling — declaring grain, separating facts from context, handling SCD — is as relevant as ever.

What are common data modeling mistakes?

Six I see repeatedly: (1) no documented grain per fact table, leading to silent fanout bugs; (2) inconsistent PK/FK naming across models; (3) treating SCD as an afterthought and retrofitting later (painful); (4) skipping the staging/intermediate/marts layering, ending up with circular dependencies; (5) no unit tests (dbt `unique`, `not_null`, `relationships`) so modeling bugs ship to prod; (6) not involving business stakeholders, producing technically-correct models nobody actually uses. All six are cultural/discipline issues, not technical ones — the tools support good practice; teams skip it anyway.

Related Terms

Data Warehousedbt (Data Build Tool)Star SchemaDimensional Modeling

Related Tools

dbtErwinLucidchartdbdiagram.ioSqlDBM

Learn More

Related Articles

Browse All Terms Read Articles