Ir para o conteúdo

Regras de Integridade e Índices (PostgreSQL)

Este documento define constraints e índices recomendados para garantir integridade e performance do KotaJá.


1. Constraints (Integridade)

1.1 Unicidade

brands - UNIQUE (name)

vehicle_models - UNIQUE (brand_id, name)

vehicle_variants - UNIQUE (model_id, year, fuel_type, trim, transmission)

monthly_price_averages - UNIQUE (month_ref, region_id, vehicle_variant_id)


1.2 Validações (CHECK)

price_observations - CHECK (price_value > 0)

store_region_history - CHECK (valid_to IS NULL OR valid_to >= valid_from)

public_quote_queries - CHECK (month_ref IS NULL OR month_ref = date_trunc('month', month_ref))


1.3 Enum / domínio controlado

users.role - valores: admin, manager, coordinator, store_owner, researcher

store_submissions.status - valores: PENDING, APPROVED, REJECTED

store_reviews.decision - valores: APPROVED, REJECTED


2. Índices (Performance)

2.1 Consulta pública (principal)

monthly_price_averages - índice para consultas por mês/região/variante: - (month_ref, region_id, vehicle_variant_id)


2.2 Coleta e batch

price_observations - índice para batch mensal: - (observed_at, store_id, vehicle_variant_id) - índice para análises por loja: - (store_id, observed_at)


2.3 Lojas e região

store_region_history - índice para pegar região atual: - (store_id, valid_to) - índice para relatórios por região: - (region_id, valid_from)


2.4 Auditoria e histórico

store_submissions - (status, created_at) - (submitted_by_user_id, created_at)

store_reviews - (submission_id, created_at)