Scegliere chiavi e tipi
Scelga tra chiavi primarie BIGSERIAL e UUID, decida tra TEXT e VARCHAR(n) e selezioni il tipo giusto per ogni colonna
Scegliere chiavi e tipi è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 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.
Scegliere una chiave primaria
Tre opzioni concrete:
- BIGSERIAL — intero a 64 bit a incremento monotono
- UUID — univoco a livello globale su 128 bit
- Chiave naturale — un identificatore del mondo reale (email, ISBN)
Quando conviene BIGSERIAL
Scelta predefinita per la maggior parte delle applicazioni:
- Compatto (8 byte), indice veloce, favorisce la cache
- Monotono → i dati recenti si concentrano alla fine dell'indice
- Leggibile negli URL (ad esempio
/posts/42)
Quando conviene UUID
Scelga UUID quando:
- Servono ID univoci a livello globale (più data center, applicazioni offline-first)
- Non vuole che gli ID rivelino nei URL il volume dell'attività aziendale
- Vuole generare l'ID lato client prima dell'inserimento
Costo: 16 byte (contro 8 per BIGINT) e gli UUID v4 distribuiscono casualmente gli inserimenti nell'indice.
Perché le chiavi naturali sono rischiose
Gli indirizzi email cambiano. Gli SKU vengono rinominati. I codici paese possono essere suddivisi. Usi una chiave surrogata come PK e un vincolo UNIQUE sulla chiave naturale.
Tipi di colonna: stringhe
Per la maggior parte delle colonne di testo:
VARCHAR(n)— quando esiste un limite massimo rigido (email, codici)TEXT— per contenuti liberi e lunghiCITEXT— quando il confronto deve sempre ignorare maiuscole e minuscole (email!)
Tipi di colonna: numeri
Per le colonne numeriche:
BIGINTper ID e contatoriNUMERIC(p, s)per gli importi monetariREAL/DOUBLE PRECISIONsolo per i calcoli scientifici
Tipi di colonna: tempo
Per le colonne temporali:
TIMESTAMPTZper gli eventi (impostazione predefinita)DATEper i giorni di calendario (date di nascita, festività)TIMEper l'ora del giorno senza data (orari di apertura)
Booleano vs stato
Se una colonna può assumere in futuro più di due stati, preferisca un testo di stato + CHECK a un booleano:
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.Vincoli consigliati
Ogni colonna dovrebbe avere:
- Il tipo più ristretto compatibile con i dati
NOT NULL, a meno che NULL non abbia un significato- Un
DEFAULTse la colonna contiene quasi sempre lo stesso valore - Un
CHECKse esiste una regola di dominio - Un indice se viene usata in WHERE/JOIN/ORDER
Implicazioni dello storage
Tipi più compatti = righe più piccole = più righe per pagina = miglior tasso di utilizzo della cache. Passare da TEXT a VARCHAR(20) non fa risparmiare spazio (lo storage è lo stesso). Passare da BIGINT a INT dimezza la larghezza della colonna.
I tipi delle chiavi esterne devono corrispondere
I tipi delle colonne FK devono corrispondere esattamente al tipo della PK referenziata:
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)Riepilogo
La scelta dei tipi fa parte della progettazione.
- BIGSERIAL o UUID per la PK
- NUMERIC per gli importi monetari
- TIMESTAMPTZ per gli eventi
- TEXT con CHECK per gli stati destinati a evolvere
- NOT NULL per impostazione predefinita
Verifica rapida
Sta memorizzando i timestamp degli eventi per utenti in molti fusi orari. Quale tipo sceglie?
Domande Frequenti
La lezione «Scegliere chiavi e tipi» è gratuita?
Sì — il testo completo di «Scegliere chiavi e tipi» è 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 «Scegliere chiavi e tipi»?
Scelga tra chiavi primarie BIGSERIAL e UUID, decida tra TEXT e VARCHAR(n) e selezioni il tipo giusto per ogni colonna 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 2 di 4.
Quanto tempo richiede la lezione «Scegliere chiavi e tipi»?
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
- Modellare un blog: utenti, post e commenti
- Scegliere chiavi e tipi
- Indici per le query più comuni
- Popolare il database con dati di test