Vamos para a parte avançada de banco de dados?
Se você já sabe criar tabelas, inserir e consultar dados, chegou a hora de dar um passo importante: estruturar bancos mais inteligentes, eficientes e escaláveis.
📚 Relacionamentos entre tabelas
Quando seu sistema cresce, uma única tabela já não dá conta do recado. É aí que entram os relacionamentos, que evitam dados repetidos e melhoram a organização.
Exemplo prático: clientes
e pedidos
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100)
);
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
cliente_id INT,
produto VARCHAR(100),
FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);
🧠 O que acontece aqui?
Cada pedido está ligado a um cliente. Esse é um relacionamento 1:N (um cliente → muitos pedidos).
(Você aprenderá mais a frente dos posts)
🎯 Normalização
A normalização ajuda a evitar redundância e garantir integridade.
Exemplo de má prática (sem normalização):
nome_cliente | nome_produto | preco |
---|---|---|
João | Notebook Acer | 3200 |
João | Mouse Logitech | 150 |
🔁 Nome do cliente se repete! Isso é ruim.
Corrigido com tabelas separadas (normalizado):
clientes
: armazena dados dos clientesprodutos
: armazena os produtospedidos
: relaciona os dois
🔐 Resultado: menos repetição, mais performance e controle.
⚙️ Procedures e Views
🔧 Procedure (procedimento armazenado):
Trechos de SQL que ficam salvos no banco e são reutilizáveis.
DELIMITER //
CREATE PROCEDURE listar_pedidos()
BEGIN
SELECT * FROM pedidos;
END //
DELIMITER ;
CALL listar_pedidos();
👀 View (visão):
Uma consulta salva, como se fosse uma “tabela virtual”.
CREATE VIEW resumo_pedidos AS
SELECT c.nome, p.produto
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id;
🔚 Conclusão
Se você chegou até aqui, parabéns: já entende como bancos de dados funcionam de forma profissional. Agora você pode:
- Modelar relacionamentos complexos
- Garantir integridade e performance
- Automatizar e otimizar processos