Jaco van der Laan

From LDM to PDM: Why Supertypes & Subtypes Belong Together

14/09/2025  ·  Data Architecture

‹ ›

When translating a Logical Data Model (LDM) into a Physical Data Model (PDM), the most common approach is the 1:1 mapping:

  • Every entity in the LDM becomes a table in the PDM.
  • Every subtype of a supertype (PRODUCT_A, PRODUCT_B, AGREEMENT_XYZ) gets its own table.

It’s simple and automatic — but also wasteful.

  • Too many tables clutter the PDM.
  • Subtypes that belong together end up scattered.
  • Historization becomes messy and imprecise.

There’s a better way.


One Table per Hierarchy

Instead of exploding the hierarchy, we consolidate it:

  • Supertype → one physical table.
  • Subtype → a discriminator column.
  • Subtype access → views (so logical consumers still see the familiar entities).

Example:

CREATE TABLE party_core (
  party_sk BIGINT PRIMARY KEY,
  party_bk STRING NOT NULL,
  party_type STRING NOT NULL,   -- discriminator: PERSON, ORG
  -- common attributes
  name_full STRING,
  country_code STRING,
  -- subtype: person
  person_birthdate DATE,
  person_gender_code STRING,
  -- subtype: organization
  org_legal_name STRING,
  org_chamber_id STRING,
  -- historization
  valid_from_ts TIMESTAMP,
  valid_to_ts TIMESTAMP,
  is_current BOOLEAN
);

Subtype view (only relevant columns exposed):

CREATE VIEW v_person_core AS
SELECT
  party_sk,
  party_bk,
  name_full,
  country_code,
  person_birthdate,
  person_gender_code,
  valid_from_ts,
  valid_to_ts,
  is_current
FROM party_core
WHERE party_type = 'PERSON';

This keeps the PDM lean, while preserving subtype semantics.


Why This Works Today

  • Cloud platforms compress nulls well — wide, sparse rows are no longer expensive.
  • Volatile attributes (like gender, marital status, product prices) belong in Characteristic entities, so the core table stays stable.
  • Views keep queries readable, without duplicating storage.

IDS Decomposition: From Wide to Right-Sized

Most Integrated Data Sources (IDS) don’t align neatly with our logical model.

  • One IDS table may combine many concepts.
  • Our PDM expects separation into core, characteristic, and reference tables.

Solution: split wide IDS tables into multiple right-sized PDM tables.

The benefit?

  • Historization works at the right level.
  • A small change (say, marital status) only creates a new row in its Characteristic table, not in the entire Party record.
  • Version explosion is avoided.

Historization at the Right Granularity

In a naïve wide historized table, every attribute change forces a full new row.
With decomposition:

  • Each characteristic entity versions independently.
  • Common identifiers stay stable in the core.

This gives you:

  • Less storage churn
  • Clear lineage
  • Accurate timelines

Wrapping Up

By consolidating supertypes and subtypes into one table per hierarchy, and decomposing IDS sources into core + characteristics, you get:

  • A simpler PDM with fewer tables
  • Cleaner historization at the right level of change
  • Closer alignment to the logical business model

This approach keeps both the data team and the business happy:

  • The data team avoids sprawl and redundancy.
  • The business still sees clear concepts through views.

In Part 2, we’ll look at how to implement this pattern with metadata-driven loading: how to map multiple IDS subtype feeds into one supertype table, using model metadata (e.g. from Erwin or PowerDesigner).