🗄️ Banco de Dados
Modelagem Relacional • SQL • Consultas • Fundamentos Essenciais
📊 Modelagem de Dados
Processo de estruturar dados em entidades, atributos e relacionamentos.
- Entidade: objeto do mundo real (Cliente, Produto)
- Atributo: propriedade da entidade (nome, preço)
- Chave Primária (PK): identifica unicamente cada registro
- Chave Estrangeira (FK): referência a outra tabela
🔗 Tipos de Relacionamento
- 1:1 (Um para Um) – Pessoa → CPF
- 1:N (Um para Muitos) – Cliente → Pedidos
- N:N (Muitos para Muitos) – Aluno ↔ Curso (tabela associativa)
📐 Normalização
Processo de organizar dados para reduzir redundância e evitar anomalias.
- 1NF: valores atômicos, sem grupos repetitivos
- 2NF: depende totalmente da chave primária
- 3NF: sem dependências transitivas
📝 DDL - Data Definition Language
Comandos para definir a estrutura do banco de dados.
✏️ DML - Data Manipulation Language
Comandos para manipular os dados.
🔍 DQL - Data Query Language
SELECT - o coração das consultas SQL.
🔄 JOINs - Combinando Tabelas
📊 Funções de Agregação
📝 Subconsultas
Consultas dentro de outras consultas.
⚖️ Comparativo: SQL vs NoSQL
| Característica | SQL (Relacional) | NoSQL (Não Relacional) |
|---|---|---|
| Esquema | Fixos, pré-definido | Flexível, dinâmico |
| Escalabilidade | Vertical (mais hardware) | Horizontal (mais nós) |
| Consistência | ACID (forte) | Eventual (BASE) |
| Linguagem | SQL padrão | Cada banco tem sua API |
| Casos de uso | Transações, relatórios | Big data, tempo real |
| Exemplos | MySQL, PostgreSQL | MongoDB, Redis, Cassandra |
📝 Exercícios de Fixação
Modele um sistema de biblioteca com as entidades: LIVRO, USUÁRIO, EMPRÉSTIMO. Defina atributos e relacionamentos.
Escreva uma consulta para listar todos os pedidos com nome do cliente e valor total, ordenados por data decrescente.
Calcule o valor total de vendas por categoria de produto, mostrando apenas categorias com vendas acima de R$ 10.000.
Encontre os clientes que já fizeram mais de 3 pedidos.
Crie as tabelas para um sistema de e-commerce simples (Produto, Cliente, Pedido, ItemPedido) e escreva consultas para: a) listar produtos com estoque abaixo de 10, b) total gasto por cliente.
✅ Boas Práticas em SQL
- ✔️ Use nomes descritivos e consistentes (snake_case)
- ✔️ Sempre defina PRIMARY KEY e FOREIGN KEY
- ✔️ Utilize índices em colunas usadas em WHERE/JOIN
- ✔️ Evite SELECT * em produção
- ✔️ Use transações quando necessário (BEGIN, COMMIT, ROLLBACK)
- ✔️ Documente consultas complexas
- ✔️ Faça backup regularmente
🚀 Dicas de Performance
- 📌 Índices: aceleram SELECT, mas diminuem INSERT/UPDATE
- 📌 EXPLAIN: analisa plano de execução da consulta
- 📌 Evite funções em colunas indexadas no WHERE
- 📌 Use LIMIT para limitar resultados
- 📌 Normalize, mas não exagere (desnormalize para performance)
📚 Referências e Ferramentas
- SGBDs: MySQL, PostgreSQL, SQLite, SQL Server, Oracle
- Ferramentas: DBeaver, DataGrip, pgAdmin, MySQL Workbench
- Documentação: PostgreSQL Docs, MySQL Reference Manual
- Prática: SQLZoo, HackerRank SQL, LeetCode Database
Post a Comment