Klucz obcy w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Klucz obcy w SQL

Klucz obcy (FOREIGN KEY) to ograniczenie w bazie danych, które tworzy powiązanie między kolumną w jednej tabeli a kluczem głównym lub unikalnym w innej tabeli. Służy do pilnowania poprawności relacji między tabelami.

Składnia

Typowy zapis wygląda tak:

FOREIGN KEY (kolumna_w_tej_tabeli)
REFERENCES tabela_docelowa(kolumna_docelowa)

Oznacza to, że wartości wpisywane do kolumna_w_tej_tabeli muszą istnieć w kolumna_docelowa tabeli wskazanej po REFERENCES.

Jak czytać fragment kodu?

Dla przykładu:

FOREIGN KEY (imie) REFERENCES obiekty(imiona)

Należy odczytać to tak:

  • klucz obcy jest ustawiony na kolumnie imie w bieżącej tabeli,
  • odwołuje się do tabeli obiekty,
  • wskazuje w niej kolumnę imiona.

W pytaniach egzaminacyjnych trzeba szczególnie uważać na nawiasy. Kolumna podana po FOREIGN KEY to kolumna, na której zdefiniowano klucz obcy. Kolumna podana po REFERENCES tabela(...) to kolumna, do której następuje odwołanie.

Po co stosuje się klucze obce?

Klucze obce zapewniają integralność referencyjną, czyli zapobiegają tworzeniu błędnych powiązań między rekordami. Na przykład nie powinno być możliwe przypisanie zamówienia do klienta, który nie istnieje w tabeli klientów.

Przykład

CREATE TABLE zamowienia (
    id INT PRIMARY KEY,
    klient_id INT,
    FOREIGN KEY (klient_id) REFERENCES klienci(id)
);

Tutaj klient_id w tabeli zamowienia jest kluczem obcym i wskazuje na kolumnę id w tabeli klienci.