Media & Entertainment EDW data model
Data Vault 2.0 raw vault for media/entertainment: hubs (title/talent/distributor/rights_agreement/asset), links (title-talent, title-distributor, title-rights, content-asset), and satellites (title, talent PII, distributor details, a rights-terms effectivity satellite, asset details, and a transactional royalty satellite on the title-talent link). Hash keys and load metadata are generated by the DDL layer.
Media & entertainment enterprise data warehouse modeled as a Data Vault 2.0 raw vault: title, talent, distributor, rights agreement, and asset hubs; production and distribution links plus a transactional royalty satellite; and descriptive plus effectivity satellites — built for integrating production, rights-management, and distribution source systems with full historization and the rights/royalty lineage that makes Data Vault attractive for complex content supply chains. It is a Data Vault 2.0 raw vault: hubs for business keys, links for relationships and satellites for descriptive history, with hash keys and hash diffs generated in the DDL.
- 16
- tables
- 98
- columns
- 14
- relationships
- 6
- PII columns
Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Databricks). Edit it in plain English or on the canvas, then ship it to any supported warehouse.
Subject areas
Design decisions
Hubs hold only content business keys
Separating title_id, talent_id, and agreement_id into hubs lets media asset management, casting, rights, and distribution source systems attach independently without reworking existing structures — the core agility of Data Vault.
Effectivity satellite for licensing windows
Distribution rights are time- and territory-bound and renegotiated frequently; an effectivity satellite records the valid window of each rights term for accurate as-of availability reporting.
Transactional royalty satellite on the title-talent link
Royalty statements are periodic, immutable financial events tied to a specific title-talent relationship; carrying them as a satellite on the link keeps the participation relationship and its payouts together.
Masked talent identifiers for privacy
Talent tax_id is full-masked and email is hashed so the governance report flags sensitive personal and financial data; load_date + record_source provide the queryable lineage for rights and royalty audits.
Tables in the Media & Entertainment EDW model
Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.
Hubs (5)
hub_title
Grain: one row per unique hub_title business key
| Column | Type | Keys |
|---|---|---|
| title_id | varchar | BK |
| load_date | timestamp | |
| record_source | varchar |
hub_talent
Grain: one row per unique hub_talent business key
| Column | Type | Keys |
|---|---|---|
| talent_id | varchar | BK |
| load_date | timestamp | |
| record_source | varchar |
hub_distributor
Grain: one row per unique hub_distributor business key
| Column | Type | Keys |
|---|---|---|
| distributor_code | varchar | BK |
| load_date | timestamp | |
| record_source | varchar |
hub_rights_agreement
Grain: one row per unique hub_rights_agreement business key
| Column | Type | Keys |
|---|---|---|
| agreement_id | varchar | BK |
| load_date | timestamp | |
| record_source | varchar |
hub_asset
Grain: one row per unique hub_asset business key
| Column | Type | Keys |
|---|---|---|
| asset_id | varchar | BK |
| load_date | timestamp | |
| record_source | varchar |
Links (4)
lnk_title_talent
Grain: one row per lnk_title_talent relationship
Which talent participated in which title.
| Column | Type | Keys |
|---|---|---|
| title_hk | binary | |
| talent_hk | binary | |
| load_date | timestamp | |
| record_source | varchar |
lnk_title_distributor
Grain: one row per lnk_title_distributor relationship
Which distributor carries which title.
| Column | Type | Keys |
|---|---|---|
| title_hk | binary | |
| distributor_hk | binary | |
| load_date | timestamp | |
| record_source | varchar |
lnk_title_rights
Grain: one row per lnk_title_rights relationship
Which rights agreement governs which title.
| Column | Type | Keys |
|---|---|---|
| title_hk | binary | |
| rights_agreement_hk | binary | |
| load_date | timestamp | |
| record_source | varchar |
lnk_content_asset
Grain: one row per lnk_content_asset relationship
Which media assets belong to which title.
| Column | Type | Keys |
|---|---|---|
| title_hk | binary | |
| asset_hk | binary | |
| load_date | timestamp | |
| record_source | varchar |
Satellites (6)
sat_title_details
Grain: one row per title_hk per change
Title descriptive history.
| Column | Type | Keys |
|---|---|---|
| title_hk | binary | PK |
| load_date | timestamp | PK |
| title_name | varchar | |
| content_type | varchar | |
| genre | varchar | |
| release_year | integer | |
| runtime_minutes | integer | |
| original_language | varchar | |
| content_rating | varchar | |
| production_status | varchar | |
| load_end_date | timestamp | |
| record_source | varchar |
sat_talent_details
Grain: one row per talent_hk per change
Talent descriptive history (PII).
| Column | Type | Keys |
|---|---|---|
| talent_hk | binary | PK |
| load_date | timestamp | PK |
| first_name | varchar | PII |
| last_name | varchar | PII |
| stage_name | varchar | |
| varchar | PII | |
| phone | varchar | PII |
| tax_id | varchar | PII |
| guild_affiliation | varchar | |
| agent_name | varchar | PII |
| load_end_date | timestamp | |
| record_source | varchar |
sat_distributor_details
Grain: one row per distributor_hk per change
Distributor descriptive history.
| Column | Type | Keys |
|---|---|---|
| distributor_hk | binary | PK |
| load_date | timestamp | PK |
| distributor_name | varchar | |
| platform_type | varchar | |
| territory | varchar | |
| primary_country | varchar | |
| load_end_date | timestamp | |
| record_source | varchar |
sat_rights_terms
Grain: one row per rights agreement per term change
Effectivity satellite tracking licensing windows over time.
| Column | Type | Keys |
|---|---|---|
| rights_agreement_hk | binary | PK |
| load_date | timestamp | PK |
| rights_type | varchar | |
| media_window | varchar | |
| territory | varchar | |
| license_fee | decimal | |
| currency | varchar | |
| effective_from | date | |
| effective_to | date | |
| is_active | boolean | |
| load_end_date | timestamp | |
| record_source | varchar |
sat_asset_details
Grain: one row per asset_hk per change
Media asset descriptive history.
| Column | Type | Keys |
|---|---|---|
| asset_hk | binary | PK |
| load_date | timestamp | PK |
| asset_name | varchar | |
| asset_type | varchar | |
| resolution | varchar | |
| codec | varchar | |
| duration_seconds | integer | |
| file_size_bytes | bigint | |
| storage_location | varchar | |
| load_end_date | timestamp | |
| record_source | varchar |
sat_royalty_transaction
Grain: one row per title-talent royalty statement period
Transactional royalty satellite on the title-talent link.
| Column | Type | Keys |
|---|---|---|
| title_talent_hk | binary | PK |
| load_date | timestamp | PK |
| statement_period | varchar | |
| royalty_basis | varchar | |
| royalty_amount | decimal | |
| currency | varchar | |
| units_sold | bigint | |
| load_end_date | timestamp | |
| record_source | varchar |
Lookup tables (1)
ref_territory
Grain: one row per distribution territory
| Column | Type | Keys |
|---|---|---|
| territory_code | varchar | BK |
| territory_name | varchar | |
| region | varchar |
Relationships
Each relationship is a foreign key on the first table referencing the second.
- lnk_title_talent.title_hk → hub_title (many-to-one)
- lnk_title_talent.talent_hk → hub_talent (many-to-one)
- lnk_title_distributor.title_hk → hub_title (many-to-one)
- lnk_title_distributor.distributor_hk → hub_distributor (many-to-one)
- lnk_title_rights.title_hk → hub_title (many-to-one)
- lnk_title_rights.rights_agreement_hk → hub_rights_agreement (many-to-one)
- lnk_content_asset.title_hk → hub_title (many-to-one)
- lnk_content_asset.asset_hk → hub_asset (many-to-one)
- sat_title_details.title_hk → hub_title (many-to-one)
- sat_talent_details.talent_hk → hub_talent (many-to-one)
- sat_distributor_details.distributor_hk → hub_distributor (many-to-one)
- sat_rights_terms.rights_agreement_hk → hub_rights_agreement (many-to-one)
- sat_asset_details.asset_hk → hub_asset (many-to-one)
- sat_royalty_transaction.title_talent_hk → lnk_title_talent (many-to-one)
Related templates
All templates →From requirements to AI-ready context, in one platform.
Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.
