Um erro comum em projetos iniciantes é guardar só o valor mais recente de cada métrica, sobrescrevendo o histórico — o que impede qualquer análise de tendência depois.

Modelo mínimo recomendado

CREATE TABLE perfis_monitorados (
    id SERIAL PRIMARY KEY,
    username VARCHAR(255) UNIQUE NOT NULL,
    categoria VARCHAR(100)
);

CREATE TABLE metricas_diarias (
    id SERIAL PRIMARY KEY,
    perfil_id INTEGER REFERENCES perfis_monitorados(id),
    data DATE NOT NULL,
    seguidores INTEGER,
    seguindo INTEGER,
    posts_count INTEGER,
    UNIQUE (perfil_id, data)
);

Por que separar perfil de métrica

Separar a entidade "perfil" (que muda pouco) da entidade "métrica diária" (que cresce todo dia) mantém o modelo normalizado e evita repetir dado estático em cada linha de histórico.

Índices que valem a pena

CREATE INDEX idx_metricas_perfil_data ON metricas_diarias (perfil_id, data);

Esse índice acelera consultas de "histórico de um perfil ordenado por data", o tipo de query mais comum em dashboards de acompanhamento.

Para volumes bem maiores, vale considerar as técnicas descritas em data warehousing de métricas sociais.