Perché usare le join (ripasso del modello relazionale)
Ripassi il modello relazionale, le tabelle normalizzate e le chiavi esterne e scopra perché JOIN è il ponte che ricompone i dati tra le tabelle
Perché usare le join (ripasso del modello relazionale) è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
La normalizzazione in un'immagine
Anziché duplicare i dati, li distribuisce su più tabelle:
users— id, name, emailorders— id, user_id, total
Ogni ordine fa riferimento a un utente tramite il suo id, invece di memorizzarne nuovamente nome ed email.
Perché normalizzare?
Vantaggi:
- Nessuna duplicazione: l'email di un utente si modifica in un solo punto
- Tabelle più piccole: migliore percentuale di riscontri nella cache
- I vincoli impongono il rispetto delle relazioni
Le chiavi esterne definiscono il collegamento
Il collegamento viene dichiarato con una FOREIGN KEY:
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id),
total NUMERIC(10,2) NOT NULL
);Ricostruire i dati con JOIN
Per mostrare "il nome dell'utente per ogni ordine", esegua un JOIN tra le tabelle:
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;Il modello mentale: prodotto cartesiano filtrato
Concettualmente, un JOIN:
- Forma il prodotto cartesiano di due tabelle, associando ogni riga di A a ogni riga di B
- Mantiene solo le coppie per cui la condizione ON è TRUE
Nella pratica, il database utilizza un join hash, merge o nested-loop, ma il risultato è lo stesso.
Uno-a-molti
Un utente può avere molti ordini. Il lato "molti" contiene la chiave esterna.
-- 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;Molti-a-molti tramite una tabella di collegamento
Tags ↔ Posts: introduca una terza tabella:
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)
);Interrogare una relazione molti-a-molti
Due join per riunire tutti i dati:
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 denormalizzare
La denormalizzazione, cioè la duplicazione dei dati, viene talvolta utilizzata per migliorare le prestazioni, ad esempio per memorizzare nella cache i totali calcolati, usare colonne full-text o creare viste materializzate. Inizi con un modello normalizzato e denormalizzi in base alle misurazioni.
Join e sottoquery
Molte query con JOIN possono essere scritte come sottoquery e viceversa. Utilizzi la forma più leggibile: i pianificatori moderni spesso producono lo stesso piano.
Le chiavi esterne non vengono applicate automaticamente
Deve dichiararle con REFERENCES. Anche con i vincoli FK, spetta a Lei indicizzare la colonna FK: dichiari esplicitamente un indice per migliorare le prestazioni dei join.
Riepilogo
I join ricostruiscono i dati suddivisi tra più tabelle per garantire l'integrità.
- Le chiavi esterne dichiarano il collegamento
- JOIN annulla la normalizzazione al momento della query
- Le relazioni uno-a-molti usano una FK sul lato "molti", mentre quelle molti-a-molti usano una tabella di collegamento
Verifica rapida
In una relazione uno-a-molti tra users e orders, quale tabella contiene la colonna della chiave esterna?
Domande Frequenti
La lezione «Perché usare le join (ripasso del modello relazionale)» è gratuita?
Sì — il testo completo di «Perché usare le join (ripasso del modello relazionale)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Perché usare le join (ripasso del modello relazionale)»?
Ripassi il modello relazionale, le tabelle normalizzate e le chiavi esterne e scopra perché JOIN è il ponte che ricompone i dati tra le tabelle Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Perché usare le join (ripasso del modello relazionale)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché usare le join (ripasso del modello relazionale)
- Meccanismi di INNER JOIN
- LEFT/RIGHT JOIN e join OUTER
- Self-join e alias