Klucz obcy w SQL

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

Klucz obcy (FOREIGN KEY) to kolumna lub zestaw kolumn w jednej tabeli, które odwołują się do klucza głównego albo unikalnego w innej tabeli. Służy do tworzenia relacji między tabelami i zapewniania integralności referencyjnej.

Infografika przedstawiająca działanie klucza obcego w SQL: po lewej tabela klienci z kluczem głównym id, po prawej tabela zamowienia z kluczem obcym klient_id wskazującym na klucz główny w tabeli klienci.

Przykład relacji

Tabela klienci:

CREATE TABLE klienci (
    id_klienta INT PRIMARY KEY,
    imie VARCHAR(50)
);

Tabela zamowienia:

CREATE TABLE zamowienia (
    id_zamowienia INT PRIMARY KEY,
    id_klienta INT,
    FOREIGN KEY (id_klienta) REFERENCES klienci(id_klienta)
);

Kolumna id_klienta w tabeli zamowienia jest kluczem obcym. Oznacza to, że zamówienie może być przypisane tylko do klienta istniejącego w tabeli klienci.

Klucz obcy a klucz główny

Klucz główny identyfikuje rekord w swojej tabeli. Klucz obcy wskazuje rekord w innej tabeli.

Nie jest prawdą, że każdy klucz główny musi mieć odpowiadający klucz obcy w innej tabeli. Tabela może mieć klucz główny i nie być wskazywana przez żadną inną tabelę.

Znaczenie w bazie danych

Klucze obce pomagają unikać błędów, takich jak zamówienie przypisane do nieistniejącego klienta. Dotyczą jednak głównie integralności referencyjnej, a nie integralności encji.