Klucz obcy (foreign key) to jeden z podstawowych elementów baz danych, który służy do definiowania relacji między tabelami. Jego główną funkcją jest zapewnienie integralności referencyjnej, co oznacza, że wartość klucza obcego w jednej tabeli musi odpowiadać wartości klucza podstawowego w innej tabeli. Definiując klucz obcy, tworzymy relację 1..n, co oznacza, że jeden rekord w tabeli rodzica (tabela z kluczem podstawowym) może być powiązany z wieloma rekordami w tabeli dziecka (tabela z kluczem obcym). Przykładem może być tabela klientów i tabela zamówień, gdzie jeden klient może mieć wiele zamówień. W praktyce, klucz obcy jest często używany w systemach zarządzania bazą danych, takich jak MySQL, PostgreSQL czy Oracle, zgodnie z normami SQL, które definiują relacje między tabelami. Właściwe wykorzystanie kluczy obcych jest kluczowe dla prawidłowego modelowania baz danych oraz zapewnienia spójności danych podczas operacji takich jak aktualizacja czy usuwanie rekordów.
Zdefiniowanie klucza obcego nie jest związane z tworzeniem transakcji. Transakcje w bazach danych dotyczą grupy operacji, które są wykonane jako jedna jednostka. Klucz obcy odpowiada za relacje między danymi a nie za sposób ich przetwarzania. Nie można również zdefiniować klucza obcego w kontekście relacji 1..1, ponieważ klucz obcy pokazuje powiązanie, gdzie jeden rekord może być związany z wieloma rekordami w innej tabeli. W relacjach 1..1, każdy rekord w jednej tabeli ma dokładnie jeden odpowiadający rekord w drugiej tabeli, co nie wymaga użycia klucza obcego. Ponadto, klucz obcy nie ma nic wspólnego z kluczem podstawowym. Klucz podstawowy (primary key) jest unikalnym identyfikatorem rekordu w tabeli, podczas gdy klucz obcy wskazuje na klucz podstawowy w innej tabeli. W związku z tym, zdefiniowanie klucza obcego ma na celu ustanowienie relacji między różnymi tabelami, a nie transakcji czy relacji 1..1, ani klucza podstawowego.