-- ===============================================
-- DDL: Data Marts (DM)
-- Слой "готовых решений" — для BI, отчётов, API
-- ===============================================

DROP SCHEMA IF EXISTS dm CASCADE;
CREATE SCHEMA dm;

-- Витрина: ежедневные продажи по товарам и клиентам
-- Гранулярность: 1 строка = 1 день × 1 товар × 1 сегмент клиента
CREATE TABLE dm.mart_daily_sales (
    date_actual      DATE NOT NULL,
    product_name     VARCHAR(100) NOT NULL,
    customer_segment VARCHAR(20) NOT NULL,  -- напр. 'Premium', 'Basic'
    total_qty        INT NOT NULL,
    total_revenue    NUMERIC(18,2) NOT NULL
);

-- Витрина: 360°-портрет клиента (lifetime value)
CREATE TABLE dm.mart_customer_360 (
    customer_bk      INT NOT NULL,
    first_order_date DATE,
    last_order_date  DATE,
    total_line_items INT NOT NULL,
    total_items      INT NOT NULL,
    lifetime_value   NUMERIC(18,2) NOT NULL,
    last_email       VARCHAR(100),
    last_city        VARCHAR(50)
);

-- Индексы для ускорения BI (опционально, но рекомендовано)
CREATE INDEX ON dm.mart_daily_sales (date_actual);
CREATE INDEX ON dm.mart_daily_sales (product_name);
CREATE INDEX ON dm.mart_customer_360 (customer_bk);
