Middle
Czym jest integralność relacji referencyjnych?
sobes.tech AI
Odpowiedź od AI
Integralność referencyjna jest właściwością danych w relacyjnej bazie danych, która gwarantuje, że odwołania między tabelami pozostają ważne. Zapobiega następującym problemom:
- Usunięciu wiersza z "tabeli rodzica", na którą odwołują się wiersze w "tabeli dziecka".
- Zmianie klucza głównego w "tabeli rodzica", na który odwołują się wiersze w "tabeli dziecka", bez odpowiedniej aktualizacji tych odwołań.
- Wstawieniu wiersza do "tabeli dziecka" z odwołaniem do nieistniejącego klucza głównego w "tabeli rodzica".
Implementuje się to za pomocą kluczy obcych (FOREIGN KEY).
Przykłady ograniczeń dla kluczy obcych:
- ON DELETE CASCADE: Przy usunięciu wiersza z tabeli rodzica, odpowiadające wiersze w tabeli dziecka również są usuwane.
- ON DELETE SET NULL: Przy usunięciu wiersza z tabeli rodzica, odpowiadający klucz obcy w tabeli dziecka jest ustawiany na NULL.
- ON DELETE RESTRICT: Usunięcie wiersza z tabeli rodzica jest zabronione, jeśli istnieją odwołania do niego w tabeli dziecka.
- ON UPDATE CASCADE: Przy aktualizacji klucza głównego w tabeli rodzica, odpowiadające klucze obce w tabeli dziecka również są aktualizowane.
-- Przykład tabeli "users" (tabela rodzica)
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(255) NOT NULL
);
-- Przykład tabeli "orders" (tabela dziecka) z kluczem obcym
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 /* Przykład ograniczenia */
ON UPDATE CASCADE /* Przykład ograniczenia */
);