Design demand-side ads relational tables
Company: Netflix
Role: Software Engineer
Category: Software Engineering Fundamentals
Difficulty: hard
Interview Round: Onsite
You are designing the core relational data model for a demand-side advertising system.
Create a normalized schema (tables + key columns + relationships) that supports:
- **Advertiser** owns multiple **Campaigns**.
- A campaign contains multiple **Ad Groups** (line items).
- An ad group contains multiple **Ads/Creatives**.
- Targeting settings (geo, device, audience), budgeting, start/end dates, pacing, and status (active/paused).
- Reporting needs: join keys that make it easy to attribute an impression/click back to advertiser/campaign/ad group/ad.
Explain:
- Primary keys/foreign keys and cardinalities.
- Which fields belong at campaign vs ad group vs ad.
- How you would model targeting (as columns vs separate tables).
- How you would handle versioning/audit (changes over time).
Quick Answer: This question evaluates relational data modeling, normalization, key/foreign-key design, and the ability to represent hierarchical advertising entities and attribution join paths.