Co to jest integralność referencyjna?
Integralność referencyjna to zasada w relacyjnych bazach danych, która zapewnia poprawność powiązań między tabelami. Polega na tym, że wartość klucza obcego w jednej tabeli musi wskazywać na istniejącą wartość klucza głównego w innej tabeli albo być pusta, jeśli dopuszczono NULL.
Inaczej: baza danych pilnuje, aby rekord nie odwoływał się do nieistniejącego rekordu w tabeli nadrzędnej.
Przykład
Tabela klienci:
CREATE TABLE klienci (
id INT PRIMARY KEY,
imie VARCHAR(30)
);
Tabela zamowienia:
CREATE TABLE zamowienia (
id INT PRIMARY KEY,
klient_id INT,
FOREIGN KEY (klient_id) REFERENCES klienci(id)
);
Kolumna zamowienia.klient_id jest kluczem obcym i wskazuje na klienci.id, czyli klucz główny tabeli klienci.
Co zapewnia integralność referencyjna?
- nie można dodać zamówienia dla klienta, który nie istnieje,
- nie można usunąć klienta, jeśli istnieją powiązane z nim zamówienia, chyba że ustawiono odpowiednią akcję, np.
ON DELETE CASCADE, - powiązania między tabelami pozostają spójne.
Typowe akcje przy usuwaniu lub aktualizacji
FOREIGN KEY (klient_id) REFERENCES klienci(id)
ON DELETE CASCADE
ON UPDATE CASCADE;
Najczęstsze opcje:
CASCADE- automatycznie usuwa lub aktualizuje rekordy zależne,RESTRICT/NO ACTION- blokuje operację naruszającą powiązanie,SET NULL- ustawia klucz obcy naNULL.
W pytaniach egzaminacyjnych
Jeśli definicja mówi o utrzymaniu powiązań między tabelami, kluczu głównym i kluczu obcym, chodzi o integralność referencyjną.