SQL e NoSQL em provas de Banco de Dados
Banco de Dados SQL e NoSQL são um dos temas mais recorrentes em concursos de diversas carreiras: fiscais, controle, policiais, TI. Precisamos dominar desde os fundamentos do modelo relacional até as diferenças entre bancos SQL e NoSQL.
Questões recentes demonstram que as bancas exigem não apenas o conhecimento de comandos de manipulação de dados, mas também a compreensão de conceitos de normalização, integridade e estruturas auxiliares como índices, visões e triggers.
Portanto, neste artigo, vamos revisar os seguintes tópicos:
- Conceitos fundamentais de bancos de dados relacionais
- Linguagem SQL: estrutura e cobrança em concursos
- Normalização e integridade dos dados em bancos relacionais
- Estruturas auxiliares em bancos de dados
- SQL x NoSQL: diferenças essenciais
Conceitos Fundamentais de Bancos de Dados Relacionais
O modelo relacional, proposto por Edgar F. Codd na década de 1970, organiza os dados em tabelas (relações). Cada tabela é formada por:
- Linhas (tuplas) – os registros armazenados;
- Colunas (atributos) – os campos de cada registro;
- Chave primária – identifica unicamente cada linha;
- Chaves estrangeiras – garantem relacionamentos entre tabelas.
Além disso, nós devemos entender as diferentes classificações de chaves:
| Tipo de chave | Definição |
| Superchave | Conjunto de atributos que identifica unicamente uma tupla |
| Chave candidata | Superchave mínima, da qual uma é escolhida como chave primária |
| Chave estrangeira | Atributo que referencia a chave primária de outra tabela |
Esses conceitos costumam ser cobrados de forma conceitual e também em exercícios práticos de modelagem.
Linguagem SQL: Estrutura e Cobrança em Concursos
A SQL (Structured Query Language) é dividida em três subconjuntos principais:
| Categoria | Função | Exemplos de comandos |
| DDL (Data Definition Language) | Define a estrutura do banco | CREATE TABLE, ALTER TABLE, DROP TABLE |
| DML (Data Manipulation Language) | Manipula e consulta dados | INSERT, UPDATE, DELETE, SELECT |
| DCL (Data Control Language) | Controla permissões de acesso | GRANT, REVOKE |
Embora alguns materiais utilizem a sigla DQL para destacar os comandos de consulta, como SELECT, nós devemos lembrar que a classificação mais aceita é incluir essa instrução dentro da DML, já que também manipula dados.
O SELECT é, de longe, o comando mais cobrado em concursos. Bancas exploram filtros com WHERE, junções (JOIN) e agrupamentos (GROUP BY e HAVING).
Exemplo clássico:
SELECT departamento, AVG(salario)
FROM funcionarios
GROUP BY departamento
HAVING AVG(salario) > 5000;
Nesse caso, a diferença entre WHERE e HAVING costuma ser alvo de pegadinha: WHERE filtra linhas antes da agregação, enquanto HAVING atua depois da agregação.
Normalização e Integridade dos Dados em Bancos Relacionais
A normalização organiza os dados em estruturas mais eficientes, reduzindo redundâncias e evitando anomalias em bancos relacionais.
| Forma Normal | Condição | Problemas evitados |
| 1FN | Todos os atributos atômicos, sem valores multivalorados | Elimina atributos compostos ou repetidos |
| 2FN | Estar em 1FN e não ter dependência parcial em chave composta | Elimina redundâncias em tabelas com chaves compostas |
| 3FN | Estar em 2FN e não ter dependências transitivas | Evita anomalias de atualização |
| FNBC | Todo determinante deve ser chave candidata | Elimina dependências funcionais indevidas |
Exemplo de 2FN (dependência parcial):
Uma tabela (id_pedido, id_produto, nome_produto, quantidade) tem chave primária composta (id_pedido, id_produto). O atributo nome_produto depende apenas de id_produto, não da chave completa. Para corrigir, nós devemos separar em duas tabelas: Produtos e Pedidos_Produtos.
Exemplo de 3FN (dependência transitiva):
Em uma tabela de empréstimos, (codigo_emprestimo, cpf_cliente, nome_cliente, nome_agente, email_agente), os atributos nome_agente e email_agente não dependem do empréstimo em si, mas do agente. Isso é uma dependência transitiva e deve ser corrigido com a decomposição em tabelas diferentes.
Essas distinções entre 2FN e 3FN aparecem frequentemente em questões de certo/errado.
Estruturas Auxiliares em Bancos de Dados
Além das tabelas, contamos com estruturas adicionais que aumentam a eficiência e permitem automatizar tarefas.
Índices
São estruturas que aceleram a busca de registros no banco de dados.
- B-Tree: padrão, indicado para atributos com alta variedade de valores.
- Bitmap: eficiente em colunas com poucos valores distintos (ex: estados, sexo).
Pegadinha comum: acreditar que índices sempre melhoram desempenho. Eles aceleram consultas, mas podem tornar operações de inserção e atualização mais lentas.
Views (Visões)
São tabelas virtuais criadas a partir de consultas SQL.
- View comum: não armazena dados, apenas a instrução.
- View materializada: armazena os resultados, sendo útil para consultas complexas e repetitivas.
Triggers
São gatilhos que executam automaticamente instruções no banco de dados em resposta a eventos DML.
Funcionam no modelo evento-condição-ação.
| Tipo de Trigger | Quando executa |
| BEFORE INSERT | Antes da inserção, podendo ajustar valores |
| AFTER INSERT | Após a inserção e validações |
| BEFORE UPDATE | Antes da atualização, permitindo verificar regras |
| AFTER DELETE | Após a exclusão de registros |
SQL x NoSQL: Diferenças Essenciais
Os bancos NoSQL foram criados para lidar com grandes volumes de dados, escalabilidade horizontal e estruturas mais flexíveis.
| Modelo | Estrutura | Exemplos de uso |
| Relacional (SQL) | Tabelas normalizadas, forte consistência | Sistemas financeiros, ERPs |
| Documentos (NoSQL) | Estruturas JSON ou BSON | Aplicações web, catálogos |
| Chave-valor (NoSQL) | Pares simples chave → valor | Cache, rankings de jogos |
| Colunar (NoSQL) | Armazenamento por colunas | Big Data, análise em larga escala |
| Grafos (NoSQL) | Nós e arestas | Redes sociais, recomendações |

Pegadinha frequente: afirmar que NoSQL é ideal para transações complexas e rígidas. Isso está incorreto, já que o modelo relacional ainda é o mais indicado para cenários de forte consistência.
Conclusão
Vimos que o estudo de Banco de Dados (SQL e NoSQL) é essencial para concursos com conteúdo de TI. Precisamos dominar:
- O modelo relacional e suas chaves;
- Os principais comandos SQL (DDL, DML e DCL);
- A normalização até FNBC, compreendendo diferenças entre 2FN e 3FN;
- Estruturas auxiliares como índices, views e triggers;
- As vantagens e limitações dos bancos NoSQL.
Além disso, observamos que as bancas exploram desde conceitos básicos de banco de dados até detalhes de sintaxe e pegadinhas de interpretação.
Estude conosco para Concursos Públicos
Chegamos ao final do artigo! Esperamos que este conteúdo tenha te ajudado a acertar uma questão a mais sobre banco de dados na prova.
Porém, recomendamos que este artigo seja utilizado como complemento de estudo, priorizando sempre os materiais do Estratégia Concursos, que trazem a teoria aprofundada e questões comentadas.
Bons estudos!
https://aws.amazon.com/pt/compare/the-difference-between-relational-and-non-relational-databases
https://www.alura.com.br/artigos/sql-nosql-bancos-relacionais-nao-relacionais