Seu navegador não oferece leitura em voz alta. Você pode ler o guia normalmente.
Os editais de informática, mesmo os de nível médio, costumam trazer “noções de banco de dados”. Na prova, o conteúdo se resume a conceitos do modelo relacional, chaves, normalização, comandos SQL e transações. Este guia organiza esses pontos, resolve consultas sobre um conjunto pequeno de dados e destaca as pegadinhas, como a comparação com NULL e a diferença entre DELETE, TRUNCATE e DROP.
Conceitos básicos
- Banco de dados: conjunto organizado de dados relacionados.
- SGBD (Sistema Gerenciador de Banco de Dados): software que cria, mantém e controla o acesso ao banco. PostgreSQL, MySQL, Oracle e SQL Server são exemplos.
- Modelo relacional: organiza os dados em tabelas (relações), com linhas (registros ou tuplas) e colunas (atributos ou campos).
- Esquema: a estrutura (tabelas, colunas, tipos e restrições); instância: os dados em um dado momento.
Chaves e integridade
| Conceito | Definição |
|---|---|
| Chave primária (PK) | identifica cada linha de forma única; não admite valor nulo nem repetido |
| Chave candidata | coluna(s) que poderiam ser a chave primária |
| Chave estrangeira (FK) | coluna que referencia a chave primária de outra tabela |
| Chave composta | chave formada por mais de uma coluna |
| Integridade de entidade | a PK não pode ser nula |
| Integridade referencial | todo valor de FK deve existir na PK referenciada (ou ser nulo, se permitido) |
Modelagem: entidades e relacionamentos
No modelo entidade-relacionamento (MER), entidade é o objeto do mundo real (Servidor, Setor), atributo é sua propriedade (nome, anos de serviço) e relacionamento liga entidades. A cardinalidade define quantas ocorrências se relacionam: 1:1, 1:N ou N:N. Na passagem para o modelo relacional:
- Relacionamento 1:N: a chave primária do lado “1” vira chave estrangeira no lado “N”. Um setor tem vários servidores, então a tabela de servidor recebe a coluna setor_id.
- Relacionamento N:N: exige uma tabela associativa com as duas chaves. Um servidor participa de vários projetos e um projeto tem vários servidores: cria-se a tabela participação (servidor_id, projeto_id).
Normalização
Normalizar reduz redundância e evita anomalias de inserção, atualização e exclusão.
- 1FN: cada coluna guarda valor atômico (indivisível), sem grupos repetidos. Uma coluna “telefones” com três números violaria a 1FN.
- 2FN: está na 1FN e todo atributo não chave depende da chave inteira (sem dependência parcial). Só aparece como problema em chaves compostas.
- 3FN: está na 2FN e nenhum atributo não chave depende de outro atributo não chave (sem dependência transitiva).
Exemplo. Tabela pedido(id_pedido, id_cliente, nome_cliente, cidade_cliente). O nome e a cidade dependem de id_cliente, que não é a chave do pedido: dependência transitiva. Para a 3FN, crie cliente(id_cliente, nome, cidade) e deixe o pedido só com id_pedido e id_cliente.
SQL: grupos de comandos
| Grupo | Função | Comandos |
|---|---|---|
| DDL (definição) | cria e altera a estrutura | CREATE, ALTER, DROP, TRUNCATE (em muitos SGBD) |
| DML (manipulação) | altera os dados | INSERT, UPDATE, DELETE |
| DQL (consulta) | consulta os dados | SELECT |
| DCL (controle) | permissões | GRANT, REVOKE |
| TCL (transação) | controla transações | COMMIT, ROLLBACK, SAVEPOINT |
A classificação do SELECT varia: alguns autores o incluem na DML e outros o separam em DQL. A banca costuma explicitar o critério; sem ele, leia as alternativas.
Pegadinhas de remoção
- DELETE: remove linhas (com WHERE escolhe quais); é DML e pode ser desfeito em transação.
- TRUNCATE: esvazia toda a tabela e mantém a estrutura; em muitos SGBD é tratado como DDL.
- DROP: apaga a própria tabela (estrutura e dados).
- DELETE sem WHERE apaga todas as linhas.
SELECT na prática
Considere duas tabelas:
setor(id, nome): (1, Protocolo), (2, Compras), (3, Arquivo).
servidor(id, nome, setor_id, anos): (1, Ana, 1, 8), (2, Bruno, 1, 3), (3, Carla, 2, 5), (4, Diego, 2, 12), (5, Elisa, nulo, 2).
1. Filtrar e ordenar. SELECT nome FROM servidor WHERE anos >= 5 ORDER BY nome; Resultado: Ana, Carla, Diego.
2. Junção interna (INNER JOIN). Retorna só as linhas com correspondência nas duas tabelas. SELECT s.nome, t.nome FROM servidor s INNER JOIN setor t ON s.setor_id = t.id; Resultado: Ana-Protocolo, Bruno-Protocolo, Carla-Compras, Diego-Compras. Elisa não aparece, pois não tem setor.
3. Junção externa (LEFT JOIN). Mantém todas as linhas da tabela à esquerda. SELECT t.nome, s.nome FROM setor t LEFT JOIN servidor s ON s.setor_id = t.id; Resultado: Protocolo-Ana, Protocolo-Bruno, Compras-Carla, Compras-Diego, Arquivo-nulo. O setor Arquivo aparece com servidor nulo.
4. Agrupamento. SELECT t.nome, AVG(s.anos) FROM servidor s JOIN setor t ON s.setor_id = t.id GROUP BY t.nome; Resultado: Compras = 8,5 (média de 5 e 12) e Protocolo = 5,5 (média de 8 e 3).
5. HAVING filtra grupos. Acrescentando HAVING AVG(s.anos) > 6, só Compras permanece (8,5 > 6; 5,5 não).
6. Agregações e NULL. COUNT(*) conta as 5 linhas; COUNT(setor_id) conta 4, pois ignora nulos; AVG(anos) = (8+3+5+12+2)/5 = 6; MAX(anos) = 12.
7. Comparar com NULL. WHERE setor_id IS NULL retorna Elisa. WHERE setor_id = NULL não retorna nenhuma linha, porque nulo não é igual a nada, nem a ele mesmo.
Ordem de execução e regras
- Escrita: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.
- Lógica de execução: FROM (e junções), WHERE, GROUP BY, HAVING, SELECT, ORDER BY.
- WHERE filtra linhas antes de agrupar e não aceita função de agregação; HAVING filtra grupos depois do agrupamento.
- Funções de agregação: COUNT, SUM, AVG, MIN, MAX.
Transações e propriedades ACID
Uma transação é uma sequência de operações tratada como unidade lógica.
- Atomicidade: ou tudo é executado, ou nada (ROLLBACK desfaz).
- Consistência: a transação leva o banco de um estado válido a outro.
- Isolamento: transações simultâneas não interferem entre si.
- Durabilidade: após o COMMIT, o resultado persiste, mesmo com falha.
Índices, visões e NoSQL
- Índice: estrutura auxiliar que acelera buscas, ao custo de espaço e de escrita mais lenta.
- Visão (view): consulta armazenada que se comporta como tabela virtual.
- NoSQL: bancos não relacionais, como documentos, chave-valor, colunas e grafos, usados quando o esquema flexível ou a escala horizontal pesam mais que as junções. Não substituem o relacional em todos os casos.
- Ao contratar serviço em nuvem de dados, a segurança passa por controle de acesso e cópias de segurança; veja controle de acesso e medidas de segurança.
Erros comuns
- Achar que a chave estrangeira precisa ser única na tabela em que está: ela pode se repetir (vários servidores no mesmo setor).
- Confundir DELETE, TRUNCATE e DROP.
- Usar função de agregação em WHERE.
- Comparar com NULL usando “=” em vez de IS NULL.
- Pensar que COUNT(coluna) conta nulos.
- Dizer que a 2FN trata de dependência transitiva (isso é a 3FN).
Conferência e orientação
Os conceitos seguem a literatura clássica do modelo relacional e o padrão SQL, que cada SGBD implementa com variações; os dados do exemplo são fictícios, e as consultas foram executadas e conferidas em um banco de teste. Não há norma oficial brasileira específica para este conteúdo, então este guia é orientação prática. Confira o edital: a banca pode usar a sintaxe de um SGBD determinado.
Próximos passos
- Revise o armazenamento em sistema binário, bits e bytes.
- Aprenda cópias de segurança em backup completo, incremental e diferencial.
- Compare com planilhas em funções clássicas, referências e erros.