Middle
Cos'è l'integrità delle relazioni di riferimento?
sobes.tech AI
Risposta dell'AI
L'integrità referenziale è una proprietà dei dati in un database relazionale che garantisce che i riferimenti tra le tabelle rimangano validi. Previene i seguenti problemi:
- La cancellazione di una riga dalla tabella "genitore" a cui fanno riferimento le righe nella tabella "figlio".
- La modifica della chiave primaria nella tabella "genitore" a cui fanno riferimento le righe nella tabella "figlio" senza aggiornare di conseguenza questi riferimenti.
- L'inserimento di una riga nella tabella "figlio" con un riferimento a una chiave primaria inesistente nella tabella "genitore".
Viene implementata tramite chiavi esterne (FOREIGN KEY).
Esempi di restrizioni per le chiavi esterne:
- ON DELETE CASCADE: Quando si elimina una riga nella tabella genitore, le righe corrispondenti nella tabella figlio vengono eliminate anch'esse.
- ON DELETE SET NULL: Quando si elimina una riga nella tabella genitore, la chiave esterna corrispondente nella tabella figlio viene impostata a NULL.
- ON DELETE RESTRICT: La cancellazione di una riga nella tabella genitore è vietata se ci sono riferimenti a essa nella tabella figlio.
- ON UPDATE CASCADE: Quando si aggiorna la chiave primaria nella tabella genitore, le chiavi esterne corrispondenti nella tabella figlio vengono aggiornate anch'esse.
-- Esempio di tabella "users" (genitore)
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(255) NOT NULL
);
-- Esempio di tabella "orders" (figlio) con chiave esterna
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON DELETE CASCADE /* Esempio di restrizione */
ON UPDATE CASCADE /* Esempio di restrizione */
);