Por que usar JOIN (recapitulação do modelo relacional)
Recapitule o modelo relacional, as tabelas normalizadas e as chaves estrangeiras, e entenda por que JOIN é a ponte que remonta dados entre tabelas.
Por que usar JOIN (recapitulação do modelo relacional) é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
Normalização em uma imagem
Em vez de duplicar dados, você os divide entre tabelas:
users— id, nome, e-mailorders— id, user_id, total
Cada pedido faz referência a um usuário pelo id, em vez de armazenar novamente o nome e o e-mail do usuário.
Por que normalizar?
Benefícios:
- Sem duplicação — altere o e-mail de um usuário em um único lugar
- Tabelas menores — melhor taxa de acerto da memória cache
- Restrições impõem os relacionamentos
Chaves estrangeiras definem a ligação
A ligação é declarada com uma FOREIGN KEY:
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id),
total NUMERIC(10,2) NOT NULL
);Reunindo dados com JOIN
Para mostrar "o nome do usuário em cada pedido", você reúne as tabelas novamente com JOIN:
SELECT o.id, o.total, u.full_name, u.email
FROM orders o
JOIN users u ON u.id = o.user_id
ORDER BY o.id;O modelo mental: produto cartesiano filtrado
Conceitualmente, uma junção:
- Forma o produto cartesiano de duas tabelas, associando cada linha de A a cada linha de B
- Mantém apenas os pares em que a condição ON é TRUE
Na prática, o banco de dados usa uma junção por dispersão, por mesclagem ou por laços aninhados — mas o resultado é o mesmo.
Um para muitos
Um usuário pode ter muitos pedidos. O lado "muitos" contém a chave estrangeira.
-- Each order row points back to its user:
SELECT u.email, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email;Muitos para muitos por meio de uma tabela de junção
Tags ↔ Posts: introduza uma terceira tabela:
CREATE TABLE posts (id BIGSERIAL PRIMARY KEY, title TEXT);
CREATE TABLE tags (id BIGSERIAL PRIMARY KEY, name TEXT);
CREATE TABLE post_tags (
post_id BIGINT REFERENCES posts(id),
tag_id BIGINT REFERENCES tags(id),
PRIMARY KEY (post_id, tag_id)
);Consultando uma relação muitos para muitos
Duas junções para reunir tudo:
SELECT p.title, t.name
FROM posts p
JOIN post_tags pt ON pt.post_id = p.id
JOIN tags t ON t.id = pt.tag_id
WHERE t.name = 'sql';Quando desnormalizar
A desnormalização, ou duplicação de dados, às vezes é usada para melhorar o desempenho — armazenando totais calculados em cache, colunas de texto completo e visões materializadas. Comece normalizado; desnormalize conforme as medições indicarem.
Junções versus subconsultas
Muitas consultas com JOIN podem ser escritas como subconsultas, e vice-versa. Use a forma mais clara de ler; os planejadores modernos geralmente produzem o mesmo plano.
Chaves estrangeiras não são impostas automaticamente
Você precisa declará-las com REFERENCES. Mesmo com restrições de FK, indexar a coluna de FK é responsabilidade YOUR — declare um índice explicitamente para melhorar o desempenho das junções.
Recapitulação
As junções reúnem dados que foram divididos entre tabelas para preservar a integridade.
- As chaves estrangeiras declaram a ligação
- JOIN desfaz a normalização no momento da consulta
- Um para muitos usa uma FK no lado "muitos"; muitos para muitos usa uma tabela de junção
Verificação rápida
Em um relacionamento de um para muitos entre users e orders, qual tabela contém a coluna de chave estrangeira?
Perguntas Frequentes
A aula “Por que usar JOIN (recapitulação do modelo relacional)” é grátis?
Sim — o texto completo de “Por que usar JOIN (recapitulação do modelo relacional)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Por que usar JOIN (recapitulação do modelo relacional)”?
Recapitule o modelo relacional, as tabelas normalizadas e as chaves estrangeiras, e entenda por que JOIN é a ponte que remonta dados entre tabelas. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Por que usar JOIN (recapitulação do modelo relacional)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar JOIN (recapitulação do modelo relacional)
- Mecânica de INNER JOIN
- LEFT/RIGHT JOIN e junções OUTER
- Junções da tabela consigo mesma e apelidos