A market is defined as:
Market =
Product Scope
× Buyer Scope
× Geography Scope
× Supplier Scope
× Channel Scope
× Serviceability Scope
× Time Scope
× Price Basis
The canonical market cell is:
market_definition_version
× period
× geography
× NAPCS product leaf
× NAICS industry leaf
× demographic segment
× channel
Not every source will populate every dimension. Missing dimensions must be represented as unknown, not_applicable, or not_available, never silently omitted.
create table analytics.market_definition (
market_definition_id uuid primary key,
market_key text not null unique,
market_name text not null,
description text not null,
business_question text not null,
owner_name text not null,
status text not null check (
status in ('draft', 'review', 'approved', 'deprecated', 'retired')
),
created_at timestamptz not null default now(),
created_by text not null
);
Example:
market_key: family_play_rentals_hampton_roads
market_name: Hampton Roads Family Play Rental Market
business_question: What is the addressable annual demand for family-oriented physical game and puzzle rentals within the serviceable Hampton Roads market?
create table analytics.market_definition_version (
market_definition_version_id uuid primary key,
market_definition_id uuid not null references analytics.market_definition,
version_number integer not null,
effective_start_date date not null,
effective_end_date date,
market_status text not null check (
market_status in ('draft', 'approved', 'superseded', 'retired')
),
primary_geography_vintage text not null,
primary_naics_vintage text,
primary_napcs_vintage text,
price_basis text not null check (
price_basis in ('nominal', 'real', 'both')
),
real_dollar_base_period text,
notes text,
approved_by text,
approved_at timestamptz,
unique (market_definition_id, version_number)
);