KWALIFIKACJA INF3 - STYCZEŃ 2015

PYTANIE NR 21.
Aby podczas tworzenia tabeli utworzyć klucz obcy na wielu kolumnach, należy użyć polecenia
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Klucz obcy wielokolumnowy definiuje się przez FOREIGN KEY z listą kolumn w nawiasie, a następnie REFERENCES z odpowiadającą listą kolumn tabeli nadrzędnej. W poprawnej składni kolejność kolumn musi być zgodna po obu stronach, a nazwa po CONSTRAINT może, ale nie musi wystąpić.

Pełne wyjaśnienie:

Klucz obcy (FOREIGN KEY) jest ograniczeniem integralności referencyjnej, które pilnuje, aby wartości w kolumnach tabeli podrzędnej wskazywały na istniejące wartości w tabeli nadrzędnej. Gdy relacja ma opierać się na więcej niż jednej kolumnie (klucz złożony), klucz obcy również musi obejmować wiele kolumn.

Poprawna składnia definicji klucza obcego wielokolumnowego w DDL polega na podaniu:

  • opcjonalnego nazwania ograniczenia po słowie CONSTRAINT,
  • słów kluczowych FOREIGN KEY, po których występuje lista kolumn bieżącej tabeli w nawiasie,
  • klauzuli REFERENCES z nazwą tabeli nadrzędnej oraz listą kolumn referencyjnych w nawiasie.

Dlatego poprawne jest rozwiązanie, które ma postać: CONSTRAINT nazwa FOREIGN KEY(kol1, kol2) REFERENCES tabela(kol1, kol2). Taki zapis jednoznacznie tworzy klucz obcy złożony i wskazuje, które kolumny w tabeli podrzędnej odnoszą się do których kolumn w tabeli nadrzędnej.

Pozostałe odpowiedzi są błędne, bo zawierają typowe pułapki składniowe:

  • Przestawienie słów kluczowych (np. umieszczenie REFERENCES w środku frazy lub rozbicie FOREIGN KEY) powoduje, że parser SQL nie rozpozna definicji ograniczenia.
  • Pomijanie listy kolumn po FOREIGN KEY jest niedopuszczalne przy kluczu złożonym, bo baza nie wie, które kolumny mają tworzyć referencję.
  • Wstawienie słowa ON przed listą kolumn w definicji klucza obcego jest niepoprawne w tej konstrukcji; ON pojawia się w innych kontekstach (np. w złączeniach), ale nie w standardowym zapisie listy kolumn klucza obcego.

W praktyce warto pamiętać o dwóch dodatkowych zasadach: (1) liczba oraz typy danych kolumn po obu stronach muszą być zgodne, (2) kolumny w tabeli nadrzędnej muszą tworzyć klucz główny albo być objęte ograniczeniem unikalności. To gwarantuje jednoznaczność i spójność powiązania.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klucz obcy to ograniczenie, które wymusza integralność referencyjną: wartości w kolumnie/kolumnach tabeli podrzędnej muszą odpowiadać istniejącym wartościom w tabeli nadrzędnej. Dzięki temu nie da się "osierocić" rekordu, np. wskazać ucznia na nieistniejącą osobę.
Stosuje się zapis: CONSTRAINT nazwa FOREIGN KEY (kol1, kol2, ...) REFERENCES tabela (kol1, kol2, ...). Kluczowe są dwie listy kolumn w nawiasach oraz poprawna kolejność słów kluczowych.
Baza mapuje kolumny "po pozycji" w liście: pierwsza z pierwszą, druga z drugą itd. Jeśli zamienisz kolejność, tworzysz inne powiązanie logiczne (albo dostaniesz błąd zgodności typów). Na egzaminie to częsta pułapka w zadaniach o kluczach złożonych.
Zwykle nie jest obowiązkowa, ale jest bardzo zalecana. Nazwane ograniczenie łatwiej później znaleźć, wyłączyć lub usunąć (np. w migracjach i podczas administracji). W testach poprawna odpowiedź często zawiera nazwę, bo pokazuje pełny, czytelny zapis DDL.
Gdy kolumny w tabeli nadrzędnej mają ograniczenie UNIQUE, są tak samo jednoznaczne jak klucz główny. Wtedy można do nich referencjonować kluczem obcym. Warunek: zestaw kolumn musi być unikalny w tabeli nadrzędnej, inaczej referencja nie byłaby jednoznaczna.
Najczęstsze to: przestawienie słów (FOREIGN REFERENCES KEY), pominięcie listy kolumn po FOREIGN KEY, dodanie niepasującego ON przed nawiasem z kolumnami oraz brak nawiasów. Na egzaminie wystarczy drobny błąd, by opcja była niepoprawna.
Tak, zwykle można go dodać poleceniem ALTER TABLE z częścią ADD CONSTRAINT. Składnia klucza obcego (FOREIGN KEY (...) REFERENCES ...) pozostaje analogiczna. To przydatne w praktyce, gdy najpierw tworzysz tabele, a dopiero potem dopinasz relacje.
Musi się zgadzać liczba kolumn, ich kolejność oraz kompatybilność typów danych. Dodatkowo kolumny referencjonowane muszą być kluczem głównym lub mieć unikalność. Jeśli którykolwiek warunek nie jest spełniony, baza zwykle odrzuci definicję ograniczenia.
Szukaj pełnego wzorca: FOREIGN KEY + nawias z kolumnami + REFERENCES + tabela + nawias z kolumnami. Jeśli brakuje choć jednego z tych elementów albo słowa kluczowe są w dziwnej kolejności, to najpewniej dystraktor.
W standardowej definicji ograniczenia klucza obcego lista kolumn występuje bezpośrednio po FOREIGN KEY w nawiasie. Słowo ON kojarzy się z innymi konstrukcjami (np. JOIN), więc jego wstawienie tutaj jest typowym "błędem z przyzwyczajenia" i prowadzi do niepoprawnej składni.
info

To pytanie poprawnie rozwiązuje 41% zdających egzamin. trudne

Według specjalistów z branży: "Klucz obcy wielokolumnowy definiuje się przez FOREIGN KEY z listą kolumn w nawiasie, a następnie REFERENCES z odpowiadającą listą kolumn tabeli nadrzędnej."

Źródła:

  • ISO/IEC 9075-2:2016 (SQL — Part 2: Foundation), rozdziały dot. CREATE TABLE i ograniczeń referencyjnych FOREIGN KEY/REFERENCES, 2016
  • PostgreSQL Documentation: CREATE TABLE / Constraints / FOREIGN KEY, https://www.postgresql.org/docs/current/sql-createtable.html - dostęp 2026-02-27
  • MySQL 8.0 Reference Manual: FOREIGN KEY Constraints, https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html - dostęp 2026-02-27

Materiały:

  • Dokumentacja wybranego RDBMS: sekcja CREATE TABLE oraz FOREIGN KEY
  • Materiały o normalizacji i projektowaniu kluczy złożonych w relacyjnych bazach danych
  • Ćwiczenia DDL: tworzenie tabel z PRIMARY KEY/UNIQUE i FOREIGN KEY (1- i wielokolumnowym)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego