UA14 — Conceitos de Banco de Dados
Banco de dados relacional organiza dados em tabelas com linhas e colunas, usando SQL para criar, consultar e manipular esses dados. É a tecnologia mais usada para persistência de dados em aplicações corporativas.
Slides — Da Planta ao Código: Banco de Dados
Por que banco relacional?
Imagine 30 vendas por mês controladas em planilha — funciona. Agora imagine 40 milhões de transações diárias. A planilha estoura. O banco relacional resolve escalabilidade, consistência e consultas complexas que planilhas jamais conseguiriam.
Conceitos fundamentais
Tabela (Relação)
Estrutura bidimensional: linhas (registros/tuplas) e colunas (atributos/campos).
Chave Primária (PK)
Coluna que identifica unicamente cada registro. Nunca nula, nunca duplicada. O “CPF” da linha.
Chave Estrangeira (FK)
Coluna que referencia a PK de outra tabela. Cria o “elo” entre tabelas e garante integridade referencial.
Índice
Estrutura auxiliar que acelera buscas. Pense como o índice de um livro: você não precisa ler tudo para achar o que quer.
SQL — DDL e DML
SQL tem duas sub-linguagens principais:
- DDL (Data Definition Language): define a estrutura. Comandos:
CREATE TABLE,ALTER TABLE,DROP TABLE. - DML (Data Manipulation Language): manipula os dados. Comandos:
SELECT,INSERT,UPDATE,DELETE.
SELECT — anatomia completa
SELECT nome, telefone -- O Quê: colunas desejadas
FROM Cliente -- De Onde: tabela fonte
WHERE mes_aniversario = 'janeiro' -- O Filtro: condição
ORDER BY nome ASC; -- Ordenação
INSERT, UPDATE, DELETE
-- Inserir
INSERT INTO Cliente (nome, email, telefone)
VALUES ('Marcus', 'marcus@email.com', '(47) 99999-0000');
-- Atualizar
UPDATE Produto SET preco = 29.90 WHERE id = 15;
-- Deletar (sempre com WHERE!)
DELETE FROM Pedido WHERE status = 'cancelado' AND data < '2023-01-01';
JOIN — unindo tabelas
SELECT c.nome, p.data, p.status
FROM Cliente c
INNER JOIN Pedido p ON c.id = p.id_cliente
WHERE p.status = 'pendente';
| Tipo de JOIN | Retorna |
|---|---|
| INNER JOIN | Apenas registros com correspondência em ambas as tabelas |
| LEFT JOIN | Todos da esquerda + correspondências da direita (null onde não há) |
| RIGHT JOIN | Todos da direita + correspondências da esquerda |
| FULL JOIN | Todos de ambas as tabelas |
DELETE sem WHERE = catástrofe
Nunca execute DELETE FROM tabela sem uma cláusula WHERE. Você apagará todos os registros da tabela. Em produção, isso pode ser irreversível. Sempre teste um SELECT com o mesmo WHERE antes de executar um DELETE ou UPDATE.
Principais SGBDs e licenças
| Banco de Dados | Licença | Custo de administração | Tamanho do projeto |
|---|---|---|---|
| MySQL | Paga | Baixo | Pequeno a médio |
| MariaDB | Gratuita | Baixo | Pequeno a médio |
| Microsoft SQL Server (Standard/Enterprise) | Paga | Alto | Médio a grande |
| Microsoft SQL Server (Express) | Gratuita | Médio | Pequeno |
| PostgreSQL | Gratuita | Médio | Médio a grande |
| Oracle | Paga | Alto | Grande |
| MongoDB | Gratuita | Alto | Médio a grande (NoSQL) |
MongoDB é não relacional — não usa SQL. Organiza dados em documentos JSON e oferece velocidade de resposta superior a consultas em cenários de alta escala.
Propriedades ACID
Garantem a robustez de transações em banco de dados relacionais:
Atomicidade
A transação é tudo ou nada. Se uma operação falhar no meio, todas as alterações são desfeitas (rollback).
Consistência
O banco sai de um estado válido e chega a outro estado válido. Regras e constraints são respeitadas.
Isolamento
Transações concorrentes não interferem entre si. O resultado é como se fossem executadas em série.
Durabilidade
Uma vez confirmada (commit), a transação persiste mesmo em caso de falha de energia ou crash.
Práticas Modernas — Banco de Dados
- MySQL vs. PostgreSQL: após a aquisição pela Oracle em 2010, PostgreSQL tornou-se a escolha preferida para novos projetos — mais recursos avançados (JSON, window functions, extensões), licença BSD, crescimento acelerado.
- ORMs modernos: Prisma (TypeScript-first), TypeORM, Sequelize e Hibernate abstraem SQL e geram migrações automaticamente. Permitem trabalhar com banco de dados usando objetos e tipos.
- Database migrations como código: Flyway (Java) e Alembic (Python) versionam as mudanças de schema no banco — executadas automaticamente no deploy, auditáveis e reversíveis.
- Banco de dados como serviço (DBaaS): Supabase (PostgreSQL), PlanetScale (MySQL com branching), Neon (PostgreSQL serverless) eliminam a necessidade de administrar servidores de banco.
Dicas para a prova — UA14
- Banco de dados supera planilha em: pesquisa avançada, volume, integridade e automação.
- Chave primária ideal: ISBN para livros (número único mundialmente por edição).
- Tipos de atributos:
VARCHAR=texto,INT=inteiro,DATE=data,BOOLEAN=0 ou 1. - Em SELECT:
SELECTeFROMsão obrigatórios;WHEREé opcional. - Projeto pequeno com orçamento limitado → MariaDB (gratuita, baixo custo de administração).
- MongoDB é não relacional (NoSQL) — não usa SQL.
- ACID: Atomicidade, Consistência, Isolamento, Durabilidade.
Referências bibliográficas desta UA
- Barboza, F. F. M. Modelagem e Desenvolvimento de Banco de Dados. Porto Alegre: SAGAH, 2018.
- Elmasri, R.; Navathe, S. B. Fundamentals of database systems. 4. ed. London: Pearson, 2007.