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