Design demand-side ads relational tables

Read the full interview experience this question came from →

Quick Overview

This question evaluates relational data modeling, normalization, key/foreign-key design, and the ability to represent hierarchical advertising entities and attribution join paths.

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).

Overview: This question evaluates relational data modeling, normalization, key/foreign-key design, and the ability to represent hierarchical advertising entities and attribution join paths.

Read the full Netflix Software Engineer interview experience this question came from

Netflix logo
Netflix
Mar 9, 2026
hardSoftware EngineerOnsiteSoftware Engineering Fundamentals
47
0

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).