Klucz obcy (FOREIGN KEY) to ograniczenie, które łączy kolumnę (lub zestaw kolumn) w tabeli podrzędnej z kluczem podstawowym (lub innym kluczem unikalnym) w tabeli nadrzędnej. Jego główną rolą jest wymuszenie integralności referencyjnej, czyli zasady: nie można wstawić wartości odwołującej się do rekordu, który nie istnieje w tabeli nadrzędnej.
W praktyce klucz obcy jest podstawowym mechanizmem implementacji relacji 1..n: jeden rekord "po stronie 1" (np. klient) może być wskazywany przez wiele rekordów "po stronie n" (np. zamówienia). Tabela "zamówienia" zawiera wtedy kolumnę z identyfikatorem klienta jako klucz obcy.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- "transakcji" – transakcja to mechanizm kontroli spójności wykonywania operacji (COMMIT/ROLLBACK). Nie wymaga istnienia klucza obcego; można wykonywać transakcje w bazie bez jakichkolwiek relacji między tabelami.
- "relacji 1..1" – relację 1..1 również da się zrealizować przy pomocy klucza obcego, ale zwykle trzeba dodać dodatkowy warunek (np. unikalność po stronie podrzędnej). Sam fakt "zdefiniowania klucza obcego" nie jest jedynym elementem odróżniającym 1..1 od 1..n, dlatego ta opcja nie jest najlepszą odpowiedzią w ujęciu egzaminacyjnym.
- "klucza podstawowego" – klucz podstawowy (PRIMARY KEY) definiuje unikalność rekordu w tabeli. Do utworzenia klucza podstawowego nie potrzeba klucza obcego; to niezależne ograniczenie.
Wskazówka egzaminacyjna: gdy pytanie dotyczy "połączenia tabel" i "wskazywania na rekord w innej tabeli", najczęściej chodzi o klucz obcy i integralność referencyjną. Krotność 1..n rozpoznasz po tym, że wiele rekordów w jednej tabeli może wskazywać na jeden rekord w drugiej.