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.