I vincoli di integrità sono un insieme di regole che il DBMS applica automaticamente per garantire che i dati siano sempre corretti e coerenti. Si dividono in due categorie.
Sono vincoli che coinvolgono attributi di una sola tabella.
Vincoli sugli attributi:
| Vincolo | Descrizione | Esempio SQL |
|---|---|---|
NOT NULL |
Il campo non può essere vuoto | nome VARCHAR(50) NOT NULL |
UNIQUE |
Tutti i valori nella colonna devono essere diversi | email VARCHAR(100) UNIQUE |
CHECK |
Il valore deve soddisfare una condizione logica | CHECK (età >= 0 AND età <= 120) |
DEFAULT |
Valore assegnato automaticamente se non specificato | stato VARCHAR(10) DEFAULT 'attivo' |
PRIMARY KEY |
Combina UNIQUE + NOT NULL. Identifica la riga. | id INT PRIMARY KEY |
Vincoli statici vs. dinamici:
Riguardano le chiavi esterne (FOREIGN KEY) e definiscono il comportamento quando si inseriscono, modificano o eliminano dati in tabelle collegate.
Si definiscono due ruoli:
| Regola | Comportamento |
|---|---|
| Dipendente (standard) | Inserimento permesso solo se il valore FK esiste già nel Padre |
| Automatica | Se il Padre non esiste, viene creato automaticamente prima di inserire il Figlio |
| Nulla | Se il Padre non esiste, la FK nel Figlio viene impostata a NULL |
| Default | Se il Padre non esiste, la FK viene impostata al valore di default |
| Nessun effetto | Nessun controllo di esistenza (sconsigliato) |
RESTRICT / NO ACTION: blocca la cancellazione se esistono figli collegati. Protezione massima.CASCADE: elimina automaticamente tutti i figli quando si elimina il padre.SET NULL: il padre viene eliminato e la FK nei figli viene impostata a NULL.SET DEFAULT: il padre viene eliminato e la FK nei figli viene impostata al valore di default.