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