Pular para o conteudo

Resumo TI Banco de Dados: Trade-offs entre Normalização e Performance

O resumo anterior apresentou a desnormalização como a técnica mais direta de trocar consistência automática por velocidade de leitura. Mas ela está longe de ser a única ferramenta disponível — e, na maioria dos casos reais, nem deveria ser a primeira a ser tentada. Este resumo fecha a seção de normalização e projeto de esquemas com um framework mais amplo: onde a desnormalização se encaixa entre outras estratégias de desempenho, e que perguntas fazer antes de decidir por ela.

Neste resumo, você vai entender por que o grau de normalização é uma decisão, não um destino fixo, conhecer cinco alternativas que preservam o esquema normalizado, ver uma ordem de preferência prática entre as estratégias e fechar, com isso, toda a teoria de projeto de esquemas da trilha.

📲 Canal Oficial do Dicionário do Concurseiro no WhatsApp

Receba resumos, questões comentadas e novidades diretamente no seu celular!

👉 Acessar Canal no WhatsApp

💡 Conteúdo exclusivo para concurseiros. Totalmente gratuito!

🎚️ Normalização não é tudo ou nada

Não existe “o banco normalizado” e “o banco desnormalizado” como dois estados opostos — o grau de normalização é uma escala, e a decisão pode ser tomada tabela por tabela, ou até coluna por coluna, dentro do mesmo banco. É perfeitamente comum um sistema manter a maior parte do esquema em 3FN ou BCNF, e desnormalizar deliberadamente só as tabelas envolvidas nas consultas mais críticas de desempenho, mantendo o resto intacto.

🛠️ Alternativas que preservam o esquema normalizado

  • Índices: aceleram a busca sem alterar o esquema lógico nem introduzir redundância de dados — o custo é o espaço em disco ocupado e a queda no desempenho de escrita, não risco de inconsistência;
  • Views materializadas: parecidas com a tabela de resumo do resumo anterior, mas com política de atualização (refresh) que pode ser automática, agendada ou até manual, dependendo do SGBD (por exemplo, o Oracle admite refresh automático ON COMMIT, enquanto o PostgreSQL exige REFRESH MATERIALIZED VIEW manual ou agendamento externo) — o esquema normalizado continua sendo a fonte de verdade, e a view é uma “foto” derivada, não uma cópia mantida sincronizada manualmente por trigger, job ou disciplina da equipe;
  • Cache na camada de aplicação: guarda resultados de consultas frequentes fora do banco (em memória, Redis, etc.) — não é desnormalização, porque não altera o modelo relacional, só evita repetir a mesma consulta (tem seu próprio risco de dado desatualizado, o cache stale, mas isso não é redundância no modelo relacional);
  • Réplicas de leitura: distribuem consultas entre cópias do mesmo banco normalizado, escalando a capacidade de leitura horizontalmente sem tocar no esquema (com o próprio risco de replication lag, uma janela de defasagem entre a réplica e a origem);
  • Particionamento: divide fisicamente uma tabela grande (por intervalo de datas, por região, etc.) para acelerar consultas que filtram por essa dimensão — o esquema lógico continua o mesmo, só a organização física dos dados muda.

❓ Framework de decisão antes de desnormalizar

Antes de desnormalizar, três perguntas ajudam a decidir: (1) o problema é realmente de modelagem, ou uma das alternativas acima (índice, view materializada, cache, réplica, particionamento) já resolveria sem tocar no esquema? (2) qual o padrão real de leitura e escrita dessa tabela especificamente, não do sistema como um todo? (3) qual o custo de tolerar uma janela de inconsistência temporária, e existe um mecanismo confiável para mantê-la pequena?

📶 Uma ordem de preferência prática

Como regra geral, vale tentar nesta ordem: primeiro índices (mais barato, sem risco de inconsistência); depois views materializadas, cache, réplicas e particionamento (não alteram o esquema lógico, embora possam exigir mais esforço de infraestrutura); só então, se ainda assim o desempenho não for suficiente e o padrão de acesso justificar, a desnormalização propriamente dita. Normalizar não é o objetivo final — é o meio para garantir consistência; da mesma forma, performance não justifica abrir mão de consistência antes de esgotar as alternativas mais baratas.

⚠️ Pegadinhas comuns

  • Índice, view materializada, cache, réplica e particionamento NÃO são desnormalização — nenhum deles reintroduz redundância no modelo relacional lógico; a banca costuma testar exatamente essa distinção;
  • View materializada não é o mesmo que tabela de resumo manual: a primeira tem política de atualização gerenciada pelo SGBD; a segunda depende de trigger ou job criado pela equipe;
  • “Mais rápido” não é sinônimo de “melhor decisão”: a pergunta certa não é “isso deixa a consulta mais rápida?”, mas “o ganho de desempenho justifica o risco e o custo de manutenção da técnica escolhida?”;
  • Não existe forma normal “certa” universal: parar em 3FN, ir até BCNF ou desnormalizar depois são decisões que dependem dos requisitos do sistema, não uma hierarquia de “quanto mais normalizado, melhor”.

🎯 Dica Final para a Prova

Quando o enunciado apresentar uma técnica de desempenho, primeiro pergunte: ela altera o esquema relacional lógico, introduzindo redundância? Se sim, é desnormalização. Se não (índice, view materializada, cache, réplica, particionamento), é uma alternativa que preserva a normalização — e normalmente deveria ser tentada antes.

✓ Com este resumo, a teoria de normalização e projeto de esquemas está completa: da identificação de anomalias até o framework de decisão entre consistência e desempenho. A trilha agora muda de fase — em vez de projetar o esquema no papel, o próximo resumo começa a implementá-lo de fato, com a estrutura básica da linguagem SQL.


📍Gostou do conteúdo? Deixe um comentário, compartilhe e continue acompanhando o Dicionário do Concurseiro para mais Resumos de TI – Banco de Dados. Aqui você encontra explicações claras, atualizadas e com foco total no que cai em prova!

👉 Leia também no Dicionário do Concurseiro: Resumo TI Banco de Dados: Estrutura Básica da Linguagem SQL


📘 Antes de desnormalizar, esgote as alternativas que não mexem no esquema — índice, view materializada, cache, réplica e particionamento resolvem a maioria dos gargalos de leitura sem abrir mão de consistência. Continue estudando!

Gostou deste conteúdo?

Favoritar

Comentários

Seja o primeiro a comentar.