Concept 01
The 9 DV2 Modeling Principles
🧠 ELI5 — Explain Like I'm Five
Dan Linstedt formalized 9 rules that every Data Vault design must follow. Think of them as the "constitution" of DV — they exist to guarantee auditability, agility, and parallel loading. No rule is optional. If you bend one, you no longer have a Data Vault.
All 9 Principles Explained
These principles are non-negotiable. Every table, every load pattern, every design decision must satisfy all nine simultaneously.
| # | Principle | What it means in practice |
|---|---|---|
| 1 | All tables must have a Load Date (LDTS) and Record Source (RSRC) | Every single row in every Hub, Link, and Satellite carries a warehouse arrival timestamp and a source system identifier. No exceptions. These two columns are the foundation of auditability. |
| 2 | All Hubs must have a business key and only a business key | A Hub stores the natural business identifier and nothing else. No names, addresses, statuses, or any descriptive data. Those belong exclusively in Satellites. Violation of this rule is the most common DV design mistake. |
| 3 | All Links must reference only Hash Keys from their participating Hubs | A Link joins Hubs together using their Hash Keys as foreign keys. Links never store raw business keys directly — only the derived Hash Keys. This ensures referential integrity across the entire vault. |
| 4 | All Satellites must reference their parent Hub or Link via Hash Key | A Satellite hangs off exactly one parent: either a Hub (describing an entity) or a Link (describing a relationship). The connection is always through the Hash Key, never through raw business keys. |
| 5 | Satellites store all descriptive attributes and history | Every piece of descriptive, changing, or contextual information lives in Satellites. One row per version of the data, each with its own Load Date. This automatically produces complete, timestamped history. |
| 6 | All data is insert-only — no updates, no deletes, ever | The Raw Vault is immutable. New data is appended as new rows. Historical rows are never changed. This is what makes the vault a permanent, tamper-evident record of what every source system ever said. |
| 7 | All load operations must be idempotent (safe to run twice) | Running the same load job twice must produce exactly the same result as running it once. No duplicate rows, no errors. The HashDiff pattern on Satellites and NOT EXISTS checks on Hubs/Links enforce this. |
| 8 | Business keys define the grain of a Hub — one BK = one row | Each unique business key value gets exactly one row in its Hub, ever. Once loaded, a business key row is never moved, split, or merged. This fixed grain is what makes the vault a reliable integration anchor. |
| 9 | All relationships are stored in Links — never in Hubs or Satellites | If two entities are related, that relationship belongs in a Link table. Hubs and Satellites must never contain foreign key columns that express relationships. This strict separation is what allows independent, parallel loading of all vault objects. |
The DV litmus test: If a design choice violates any of these 9 rules, it's not Data Vault 2.0 — it's something else. Use this checklist on every table you design, and review it again before every sprint review.