KWALIFIKACJA INF3 - STYCZEŃ 2018

PYTANIE NR 25.
Do poprawnego i spójnego działania bazy danych niezbędne jest umieszczenie w każdej tabeli
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Klucz PRIMARY KEY identyfikuje jednoznacznie każdy rekord w tabeli, dlatego jego wartości muszą być unikalne i niepuste (NOT NULL). Klucz obcy (FOREIGN KEY) służy do budowy relacji między tabelami i nie jest wymagany w każdej tabeli ani nie musi być unikalny.

Pełne wyjaśnienie:

W relacyjnej bazie danych klucz PRIMARY KEY pełni rolę podstawowego identyfikatora wiersza (rekordu) w tabeli. Oznacza to, że dla każdego rekordu musi istnieć wartość, która:

  • nie może być pusta (ograniczenie NOT NULL) – bo brak identyfikatora uniemożliwia jednoznaczne wskazanie wiersza,
  • musi być unikalna (w praktyce zachowuje się jak UNIQUE) – bo dwa rekordy z tym samym identyfikatorem przestają być rozróżnialne.

Dlatego odpowiedź "klucza PRIMARY KEY z wartością NOT NULL i UNIQUE" odpowiada temu, jak działa klucz główny i jakie własności powinien wymuszać, aby zapewnić jednoznaczną identyfikację rekordów.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • "klucza FOREIGN KEY z wartością NOT NULL" – klucz obcy służy do zapewnienia integralności referencyjnej między tabelami (odwołuje się do klucza w innej tabeli). Nie każda tabela musi uczestniczyć w relacji jako "dziecko", więc nie w każdej tabeli musi występować FOREIGN KEY. Dodatkowo klucz obcy może się powtarzać (np. wiele zamówień tego samego klienta), więc sam w sobie nie identyfikuje rekordu.
  • "klucza obcego z wartością NOT NULL i UNIQUE" – wymóg UNIQUE dla klucza obcego jest typowo błędnym założeniem, bo relacje 1:N zakładają powtarzalność wartości FK. Takie ograniczenie mogłoby niepotrzebnie wymusić relację 1:1 i ograniczyć model danych.
  • "kluczy PRIMARY KEY i FOREIGN KEY" – to nadmierne uogólnienie. PRIMARY KEY jest kluczowy dla identyfikacji encji w tabeli, natomiast FOREIGN KEY pojawia się tylko tam, gdzie tabela faktycznie przechowuje odwołania do rekordów w innej tabeli.

W praktyce egzaminacyjnej warto pamiętać: PRIMARY KEY = jednoznaczny identyfikator wiersza, a FOREIGN KEY = odwołanie do innej tabeli. Jeśli pytanie dotyczy "spójnego działania" i identyfikacji rekordów, najczęściej chodzi o klucz główny.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
PRIMARY KEY to ograniczenie, które wskazuje kolumnę lub zestaw kolumn jednoznacznie identyfikujących każdy wiersz w tabeli. Wartości klucza głównego nie mogą się powtarzać i nie powinny być puste, dzięki czemu rekordy da się zawsze jednoznacznie wskazać.
Bo ma identyfikować rekord. Jeśli dwie krotki miałyby tę samą wartość klucza głównego, nie dałoby się odróżnić rekordów przy aktualizacji, usuwaniu czy tworzeniu relacji. Unikalność eliminuje duplikaty identyfikatora.
NULL oznacza "brak wartości", więc rekord bez klucza głównego nie ma identyfikatora. To utrudnia jednoznaczne odwołania do wiersza i łamie zasadę integralności encji. Dlatego klucz główny wymusza istnienie wartości.
FOREIGN KEY (klucz obcy) to ograniczenie, które wymusza, aby wartości w kolumnie (lub kolumnach) odpowiadały wartościom klucza w innej tabeli. Dzięki temu relacje między tabelami są spójne, np. zamówienie wskazuje istniejącego klienta.
Nie. Klucz obcy stosuje się wtedy, gdy tabela przechowuje odwołanie do rekordu w innej tabeli. Tabele słownikowe, tabelki niezależne lub "rodzice" relacji mogą nie mieć żadnego FOREIGN KEY, a nadal być poprawne.
Zwykle nie. W relacji 1:N wiele rekordów może wskazywać ten sam rekord nadrzędny (np. wiele zamówień jednego klienta), więc wartości FOREIGN KEY się powtarzają. Unikalność na FK ma sens głównie w relacjach 1:1.
UNIQUE wymusza niepowtarzalność wartości, ale zwykle dopuszcza NULL (zależnie od silnika i interpretacji). PRIMARY KEY jednocześnie wymusza unikalność oraz brak NULL i wskazuje "główny" identyfikator tabeli, często powiązany z indeksowaniem.
Brak PRIMARY KEY utrudnia jednoznaczną identyfikację wierszy, może komplikować relacje (FOREIGN KEY zwykle odwołuje się do klucza unikalnego/PK), a także utrudnia optymalizację i utrzymanie danych. To częste źródło duplikatów i błędów logicznych.
Najczęściej definiuje się go przy kolumnie lub na końcu definicji tabeli. Przykład: id INT NOT NULL PRIMARY KEY albo jako klucz złożony: PRIMARY KEY (kol1, kol2). Składnia zależy od silnika SQL.
Ćwicz na przykładach: twórz 2–3 tabele (np. klienci, zamówienia), dodawaj PRIMARY KEY, FOREIGN KEY, UNIQUE i NOT NULL, a potem próbuj wstawiać błędne dane. Zrozumienie komunikatów o naruszeniu ograniczeń bardzo pomaga na egzaminie.
info

Statystycznie 60% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Klucz PRIMARY KEY identyfikuje jednoznacznie każdy rekord w tabeli, dlatego jego wartości muszą być unikalne i niepuste (NOT NULL)."

Źródła:

  • PostgreSQL Documentation: "Constraints" (PRIMARY KEY, UNIQUE, NOT NULL, FOREIGN KEY), https://www.postgresql.org/docs/current/ddl-constraints.html - accessed 2026-02-18
  • MySQL 8.0 Reference Manual: "CREATE TABLE" / "PRIMARY KEY" / "FOREIGN KEY" constraints, https://dev.mysql.com/doc/refman/8.0/en/create-table.html - accessed 2026-02-18
  • Silberschatz, Korth, Sudarshan, "Database System Concepts", rozdział o integralności i kluczach (PRIMARY KEY, FOREIGN KEY), wydanie zależne od posiadanego podręcznika

Materiały:

  • Dokumentacja SQL dla używanego silnika (MySQL/PostgreSQL): definicje PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL
  • Podręcznik akademicki do baz danych (rozdziały o integralności i kluczach)
  • Ćwiczenia praktyczne: tworzenie tabel z ograniczeniami i testowanie wstawiania danych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego