0Pricing
SQL Academy · Lezione

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:

  1. BIGSERIAL — intero a 64 bit a incremento monotono
  2. UUID — univoco a livello globale su 128 bit
  3. 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 lunghi
  • CITEXT — quando il confronto deve sempre ignorare maiuscole e minuscole (email!)

Tipi di colonna: numeri

Per le colonne numeriche:

  • BIGINT per ID e contatori
  • NUMERIC(p, s) per gli importi monetari
  • REAL/DOUBLE PRECISION solo per i calcoli scientifici

Tipi di colonna: tempo

Per le colonne temporali:

  • TIMESTAMPTZ per gli eventi (impostazione predefinita)
  • DATE per i giorni di calendario (date di nascita, festività)
  • TIME per 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 DEFAULT se la colonna contiene quasi sempre lo stesso valore
  • Un CHECK se 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

  1. Modellare un blog: utenti, post e commenti
  2. Scegliere chiavi e tipi
  3. Indici per le query più comuni
  4. Popolare il database con dati di test
← Torna a SQL Academy