Sobes.tech
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 */
);