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 naNULLpo 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.