0Pricing
SQL Interview Prep · Lezione

Chiavi primarie, chiavi esterne e vincoli

Spiegare chiavi, unicità e integrità referenziale nel modo atteso da chi conduce il colloquio

Chiavi primarie, chiavi esterne e vincoli è una lezione SQL Interview Prep gratuita su CoddyKit. Questa è la lezione 3 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 Interview Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Interview Prep include 4 lezioni in totale.

Perché le chiavi ricorrono sempre

Dopo aver definito SQL, gli intervistatori passano a chiavi e vincoli. Il tema che li collega è l'integrità: regole applicate dal database per impedire l'inserimento di dati non validi.

Che cos'è una chiave primaria

Una chiave primaria identifica in modo univoco ogni riga. È sempre univoca e NOT NULL, e una tabella ne può avere al massimo una. Lo dica in modo chiaro per ottenere punti.

CREATE TABLE customers (
  id INTEGER PRIMARY KEY,
  email VARCHAR(255) NOT NULL,
  name VARCHAR(100)
);

Chiavi naturali e surrogate

Dati reali o un numero generato? Una chiave naturale utilizza dati univoci già esistenti; una chiave surrogata è un identificativo generato. La maggior parte dei team preferisce le chiavi surrogate: sono stabili.

Chiavi primarie composte

Una chiave primaria può comprendere più di una colonna: si parla di chiave composta. Sono comuni nelle tabelle di collegamento, dove due chiavi esterne identificano insieme ogni riga.

CREATE TABLE enrollments (
  student_id INTEGER,
  course_id INTEGER,
  enrolled_on DATE,
  PRIMARY KEY (student_id, course_id)
);

Chiave primaria e vincolo UNIQUE

Una domanda quasi certa: chiave primaria contro vincolo UNIQUE. Entrambi garantiscono l'univocità, ma una tabella ha una sola chiave primaria, che è NOT NULL, e può avere molti vincoli UNIQUE, ognuno dei quali consente un NULL.

CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  email VARCHAR(255) UNIQUE,
  username VARCHAR(50) UNIQUE
);

Che cos'è una chiave esterna

Una chiave esterna fa riferimento alla chiave primaria di un'altra tabella e garantisce l'integrità referenziale: non è possibile aggiungere una riga figlia che punti a una riga padre inesistente.

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  customer_id INTEGER REFERENCES customers(id),
  amount NUMERIC(10,2)
);

Azioni referenziali: ON DELETE / ON UPDATE

"Che cosa succede agli ordini se il cliente viene eliminato?" Questa è un'azione referenziale: RESTRICT blocca l'operazione, ed è il comportamento predefinito; CASCADE elimina le righe figlie; SET NULL cancella il valore della chiave.

CREATE TABLE order_items (
  id INTEGER PRIMARY KEY,
  order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE
);

NOT NULL, CHECK e DEFAULT

Altri tre vincoli completano l'integrità: NOT NULL impedisce i valori mancanti, CHECK applica una regola come stock >= 0 e DEFAULT fornisce un valore alternativo.

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  price NUMERIC(10,2) NOT NULL DEFAULT 0,
  stock INTEGER CHECK (stock >= 0)
);

Esempio svolto: progettare con l'integrità

Progettiamo la tabella dei prestiti di una biblioteca. Il codice seguente usa due chiavi esterne, una data di restituzione NOT NULL e una regola di univocità per impedire che un libro venga dato in prestito due volte contemporaneamente.

CREATE TABLE loans (
  id INTEGER PRIMARY KEY,
  book_id INTEGER NOT NULL REFERENCES books(id),
  member_id INTEGER NOT NULL REFERENCES members(id),
  due_date DATE NOT NULL,
  returned BOOLEAN DEFAULT false
);

Come parlare dell'integrità

Nomini i tre tipi di integrità per dimostrare una conoscenza approfondita: di entità, garantita dalle chiavi primarie; referenziale, garantita dalle chiavi esterne; e di dominio, garantita da NOT NULL, CHECK e dai tipi di dato.

Aggiungere vincoli a una tabella esistente

Le è stato chiesto di aggiungere vincoli a una tabella esistente? Usi ALTER TABLE ... ADD CONSTRAINT. È importante sottolineare una particolarità: l'operazione può fallire se le righe già presenti violano la nuova regola.

ALTER TABLE orders
  ADD CONSTRAINT fk_orders_customer
  FOREIGN KEY (customer_id) REFERENCES customers(id);

Verifica rapida

Distingua una chiave primaria da un vincolo UNIQUE.

Riepilogo

Riepilogo: una chiave primaria è univoca e NOT NULL, ce n'è una per tabella; un vincolo UNIQUE consente un NULL e può essercene più di uno; una chiave esterna garantisce l'integrità referenziale.

Domande Frequenti

La lezione «Chiavi primarie, chiavi esterne e vincoli» è gratuita?

Sì — il testo completo di «Chiavi primarie, chiavi esterne e vincoli» è 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 Interview Prep, passa a CoddyKit PRO. Il corso SQL Interview Prep include 4 lezioni in totale.

Cosa imparerò in «Chiavi primarie, chiavi esterne e vincoli»?

Spiegare chiavi, unicità e integrità referenziale nel modo atteso da chi conduce il colloquio Eserciti SQL Interview Prep 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 Interview Prep?

Non è richiesta alcuna esperienza precedente. SQL Interview Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Chiavi primarie, chiavi esterne e vincoli»?

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 Interview Prep?

Sì. Ogni lezione SQL Interview Prep 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. Che cos'è SQL e perché viene richiesto ai colloqui
  2. Ordine logico di esecuzione delle query
  3. Chiavi primarie, chiavi esterne e vincoli
  4. Leggere uno schema sotto pressione
← Torna a SQL Interview Prep