KWALIFIKACJA INF3 - CZERWIEC 2020

PYTANIE NR 28.
W bazie danych samochodów pole kolor z tabeli samochody przyjmuje wartości kolorów jedynie ze słownika lakier. Aby połączyć tabele samochody i lakier relacją należy, zastosować kwerendę
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Klucz obcy tworzy się w tabeli, która przechowuje odwołanie do słownika. Dlatego w tabeli samochody należy dodać ograniczenie FOREIGN KEY dla kolumny kolor, wskazując kolumnę klucza w tabeli lakier przez REFERENCES. Pozostałe propozycje mają błędną składnię lub odwracają kierunek referencji.

Pełne wyjaśnienie:

Jeżeli pole kolor w tabeli samochody ma przyjmować tylko wartości "ze słownika" lakier, to w praktyce oznacza to wymuszenie integralności referencyjnej: każda wartość w samochody.kolor musi odpowiadać istniejącemu rekordowi w tabeli lakier.

Do tego służy klucz obcy (FOREIGN KEY). Klucz obcy definiuje się w tabeli "dziecka" (tu: samochody), która przechowuje odwołanie, i wskazuje tabelę "rodzica" (tu: lakier) oraz jej kolumnę klucza (np. lakierId). Poprawne polecenie ma więc postać: modyfikacja tabeli samochody i dodanie FOREIGN KEY na kolumnie kolor z klauzulą REFERENCES do tabeli lakier.

Dlaczego pozostałe odpowiedzi są błędne?

  • Wariant bez nawiasów i bez wskazania kolumny referencyjnej jest niepoprawny składniowo w typowych silnikach SQL oraz nie określa jednoznacznie, do czego ma prowadzić więz.
  • Wariant odwołujący się do innej kolumny (np. barwa) lub do konstrukcji w stylu "samochody.lakier" miesza nazwy tabel i kolumn, przez co nie tworzy poprawnego ograniczenia FOREIGN KEY.
  • Wariant dodający klucz obcy w tabeli lakier do tabeli samochody odwraca logikę: słownik nie powinien zależeć od tabeli z danymi. To samochody mają wskazywać wybrany lakier, a nie odwrotnie.

Wskazówka egzaminacyjna: szukaj odpowiedzi, w której ALTER TABLE dotyczy tabeli przechowującej odwołanie oraz występuje pełna konstrukcja FOREIGN KEY (kolumna) REFERENCES tabela(kolumna).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klucz obcy (FOREIGN KEY) to ograniczenie, które wymusza, aby wartość w kolumnie jednej tabeli istniała jako klucz (zwykle PRIMARY KEY) w innej tabeli. Dzięki temu dane są spójne, np. samochód nie może mieć koloru, którego nie ma w tabeli słownikowej.
Najczęściej tworzy się relację przez dodanie klucza obcego w tabeli z danymi. W praktyce: ALTER TABLE na tabeli głównej i ADD FOREIGN KEY na kolumnie, która przechowuje identyfikator ze słownika, plus REFERENCES do tabeli słownika.
Bo to rekord samochodu "wybiera" jedną pozycję ze słownika lakierów. Tabela słownikowa ma być niezależna i zawierać definicje wartości, a tabela danych przechowuje odwołanie. Odwrócenie relacji powoduje nielogiczną zależność słownika od danych.
Kolumna w tabeli referencyjnej powinna jednoznacznie identyfikować rekord, najczęściej jest to PRIMARY KEY lub kolumna z ograniczeniem UNIQUE. Dodatkowo typ danych kolumny klucza obcego i klucza referencyjnego musi być zgodny, aby więzy mogły działać poprawnie.
Technicznie bywa to możliwe, jeśli nazwa koloru jest unikalna i ma odpowiednie ograniczenie (np. UNIQUE). W praktyce częściej wskazuje się ID (liczbowe), bo jest stabilniejsze, krótsze i mniej podatne na zmiany. Egzaminy zwykle preferują model z identyfikatorem.
Najczęstsze pomyłki to: brak nawiasów przy nazwie kolumny, niewskazanie kolumny w tabeli referencyjnej po REFERENCES, używanie złych nazw kolumn (np. barwa zamiast kolor) oraz wpisywanie samej nazwy tabeli bez kolumny klucza. To powoduje błąd lub niejednoznaczność.
W języku potocznym czasem tak się mówi, ale precyzyjnie "kwerenda" kojarzy się z SELECT, czyli zapytaniem odczytującym dane. ALTER TABLE to polecenie DDL zmieniające strukturę bazy. Na egzaminie warto rozpoznać, że tu chodzi o DDL tworzące relację.
Możesz spróbować wstawić do tabeli samochody rekord z wartością koloru, której nie ma w tabeli lakier. Jeśli więzy działają, baza odrzuci taki INSERT/UPDATE. Dodatkowo wiele silników pozwala podejrzeć ograniczenia w metadanych lub narzędziu administracyjnym.
Tabela słownikowa przechowuje dozwolone wartości (np. lista lakierów) jako osobne rekordy, zwykle z kolumną ID i nazwą. Inne tabele przechowują tylko odwołanie (ID), co eliminuje literówki i ułatwia zmiany nazw bez modyfikowania wielu rekordów w tabelach danych.
Najczęściej: rozpoznanie poprawnej składni DDL, projektowanie relacji 1..n, normalizacja z użyciem słowników, a także tworzenie zapytań JOIN do raportów. Warto ćwiczyć zarówno dodawanie więzów, jak i pisanie SELECT z połączeniem tabel po kluczu obcym.
info

Około 54% zdających odpowiada poprawnie na to pytanie. trudne

Specjaliści zwracają uwagę: "Klucz obcy tworzy się w tabeli, która przechowuje odwołanie do słownika."

Źródła:

  • MySQL 8.0 Reference Manual: "ALTER TABLE Statement" oraz składnia "FOREIGN KEY" (sekcje o constraints) - https://dev.mysql.com/doc/refman/8.0/en/alter-table.html - dostęp 2026-02-27
  • PostgreSQL Documentation: "ALTER TABLE" oraz "FOREIGN KEY Constraints" - https://www.postgresql.org/docs/current/sql-altertable.html - dostęp 2026-02-27
  • MariaDB Knowledge Base: "ALTER TABLE" i "FOREIGN KEY" (InnoDB) - https://mariadb.com/kb/en/alter-table/ - dostęp 2026-02-27

Materiały:

  • Dokumentacja SQL dla używanego silnika bazy (MySQL/MariaDB/PostgreSQL): ALTER TABLE, FOREIGN KEY
  • Materiały o normalizacji (1NF–3NF) i tabelach słownikowych
  • Ćwiczenia z projektowania ERD i implementacji relacji 1..n

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego