Fragment definicji FOREIGN KEY (imie) REFERENCES obiekty (imiona) opisuje zależność pomiędzy dwiema tabelami w relacyjnej bazie danych.
Najważniejsza zasada czytania tej składni jest taka:
- lista po FOREIGN KEY (...) to kolumna (lub kolumny) w tabeli, w której zdefiniowano ograniczenie (czyli "kolumna lokalna");
- po REFERENCES podaje się tabelę docelową oraz w nawiasie kolumnę docelową, do której następuje odwołanie.
Dlatego tutaj kolumna imie (lokalna) ma wartości, które muszą odpowiadać istniejącym wartościom w tabeli obiekty w kolumnie imiona. W praktyce oznacza to wymuszenie integralności referencyjnej: nie można zapisać wiersza z wartością, która nie istnieje po stronie tabeli referencjonowanej (chyba że dopuszczono NULL i wpisano NULL).
Dlaczego pozostałe odpowiedzi są błędne?
- Stwierdzenie, że klucz obcy "znajduje się w tabeli obiekty" wynika z pomylenia miejsca referencji z miejscem definicji. Tabela po REFERENCES jest celem, ale samo ograniczenie FOREIGN KEY jest definiowane w tabeli, w której zapis występuje.
- Teza, że jest to "referencja do samego siebie", byłaby prawdziwa tylko wtedy, gdyby REFERENCES wskazywało tę samą tabelę, co tabela definiująca klucz obcy (tzw. self-reference). W pokazanym fragmencie nie ma takiej informacji.
- Sformułowanie, że klucz obcy jest "ustawiony na kolumnie obiekty" jest nieprecyzyjne: klucz obcy dotyczy kolumny (tu: imie), a "obiekty" jest nazwą tabeli, nie kolumny.
Wskazówka egzaminacyjna: gdy widzisz FOREIGN KEY (X) REFERENCES T (Y), czytaj to jako: "X w tej tabeli musi wskazywać na Y w tabeli T".