Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Klucze obce i integralnosc danych

Nasza Biblioteka to sieć odsyłaczy. Zwój książki nie powtarza całego życiorysu autora - zamiast tego wskazuje sygnaturę zwoju z opisem twórcy. W MySQL takim odsyłaczem jest klucz obcy (foreign key).

Czym jest klucz obcy

Kolumna

autor_id
w tabeli
ksiazki
przechowuje
id
autora z tabeli
autorzy
. Klucz obcy formalizuje ten związek i każe Bibliotece pilnować, by każdy
autor_id
wskazywał na istniejącego autora.

1ALTER TABLE ksiazki ADD FOREIGN KEY (autor_id) REFERENCES autorzy(id);

Czytamy: "Kolumna autor_id w ksiazki odwołuje się do kolumny id w autorzy".

Integralność referencyjna

Dzięki kluczowi obcemu baza nie pozwoli:

  • dodać książki, której
    autor_id
    nie istnieje w
    autorzy
    ,
  • usunąć autora, do którego wciąż odwołują się książki (chyba że ustalisz inaczej).

To integralność referencyjna - gwarancja, że odsyłacze w katalogu nigdy nie prowadzą donikąd.

Co zrobić przy usuwaniu?

Możesz określić, co stanie się z książkami, gdy znika ich autor:

1ALTER TABLE ksiazki
2ADD FOREIGN KEY (autor_id) REFERENCES autorzy(id)
3ON DELETE CASCADE;
  • ON DELETE CASCADE - usunięcie autora automatycznie usuwa jego książki (kaskada).
  • ON DELETE SET NULL - usunięcie autora ustawia
    autor_id
    na
    NULL
    (książka zostaje, lecz bez przypisanego autora).

Wybór zależy od tego, jak chcesz dbać o porządek w Bibliotece. Klucze obce to strażnicy spójności - bez nich katalog szybko zapełniłby się martwymi odsyłaczami.

Przejdź do CodeWorlds