Você já sabe criar uma tabela e inserir dados nela.
Mas sistemas reais nunca têm só uma tabela.
Um sistema de estoque tem produtos, categorias, entradas e saídas. Um sistema de tarefas tem usuários e tarefas. Uma loja tem clientes, pedidos e produtos.
Neste módulo você vai aprender a:
✅ Criar tabelas que se relacionam corretamente ✅ Inserir dados respeitando as relações ✅ Buscar dados de múltiplas tabelas com JOIN ✅ Gerar relatórios com GROUP BY e agregações ✅ Criar Views para consultas reutilizáveis
Tudo no pgAdmin, no Query Tool, igual ao dia da prova.
Imagine que você tem uma tabela de produtos assim:
CREATE TABLE produtos (
id SERIAL PRIMARY KEY,
nome VARCHAR(100),
categoria VARCHAR(50),
preco DECIMAL(10,2)
);
INSERT INTO produtos (nome, categoria, preco) VALUES
('Detergente', 'Limpeza', 3.50),
('Vassoura', 'Limpeza', 15.00),
('Sabão em pó', 'Limpeza', 8.90),
('Caneta azul', 'Escritório', 2.00),
('Caneta preta', 'Escritório', 2.00),
('Papel A4', 'Escritório', 25.00);
Parece ok. Mas agora a empresa quer mudar o nome da categoria "Limpeza" para "Higiene e Limpeza".
Você teria que fazer:
UPDATE produtos SET categoria = 'Higiene e Limpeza'
WHERE categoria = 'Limpeza';
Funciona — mas imagine com 500 produtos. E se alguém digitar errado em um registro? A categoria fica inconsistente.
A solução é criar uma tabela só para categorias e referenciar ela na tabela de produtos:
-- Tabela de categorias (tabela PAI)
CREATE TABLE categorias (
id SERIAL PRIMARY KEY,
nome VARCHAR(50) NOT NULL
);
-- Tabela de produtos (tabela FILHA)
CREATE TABLE produtos (
id SERIAL PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
preco DECIMAL(10,2) NOT NULL,
quantidade INTEGER DEFAULT 0,
categoria_id INTEGER REFERENCES categorias(id)
);
Agora para mudar o nome da categoria basta uma linha:
UPDATE categorias SET nome = 'Higiene e Limpeza' WHERE id = 1;
Todos os produtos que referenciam essa categoria refletem automaticamente.