Przejdź do treści głównej
INF.03Bazy Danych

Klucz obcy (FOREIGN KEY)

Kolumna lub zestaw kolumn w tabeli odwołujący się do klucza głównego lub unikalnego w innej tabeli w celu utworzenia powiązania (relacji).

Co to jest klucz obcy?

Klucz obcy (FOREIGN KEY) to więz spójności logicznej w relacyjnych bazach danych. Wskazuje na klucz główny (PRIMARY KEY) lub unikatowy w innej tabeli (tabeli nadrzędnej), gwarantując integralność referencyjną.

SQL
CREATE TABLE zamowienia (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_klienta INT NOT NULL,
    kwota DECIMAL(10,2),
    FOREIGN KEY (id_klienta) REFERENCES klienci(id)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);

Czy klucz obcy może przyjmować wartość NULL?

Tak, o ile na kolumnę nie nałożono ograniczenia NOT NULL. Oznacza to, że rekord podrzędny może chwilowo nie być przypisany do żadnego rekordu nadrzędnego.

Klauzule ON DELETE i ON UPDATE:

  • CASCADE – usunięcie/zmiana rekordu nadrzędnego automatycznie usuwa/zmienia powiązane rekordy w tabeli potomnej.
  • RESTRICT / NO ACTION – blokuje usunięcie rekordu nadrzędnego, dopóki istnieją powiązane rekordy podrzędne.
  • SET NULL – ustawia wartość klucza obcego na NULL po usunięciu rekordu nadrzędnego.

Najczęstsze pułapki na egzaminie INF.03:

  • Aby utworzyć klucz obcy, kolumny w obu tabelach muszą mieć dokładnie ten sam typ danych i zgodne atrybuty (np. INT UNSIGNED).
  • W MySQL klucze obce są w pełni obsługiwane przez silnik InnoDB, natomiast silnik MyISAM ignoruje deklarację FOREIGN KEY.

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Klucz obcy (FOREIGN KEY) lub rozpocznij trening.