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
- Che cos'è SQL e perché viene richiesto ai colloqui
- Ordine logico di esecuzione delle query
- Chiavi primarie, chiavi esterne e vincoli
- Leggere uno schema sotto pressione