Kolumna pełniąca rolę klucza głównego w tabeli musi
A. być innego typu niż pozostałe kolumny.
B. zawierać unikalne wartości.
C. zawierać wartości liczbowe.
D. zawierać ciągłą numerację.
Pytanie z egzaminu CKE, styczeń 2021 (arkusz EE.09-SG-21.01).
Kolumna pełniąca rolę klucza głównego musi zawierać unikalne wartości, bo jej zadaniem jest jednoznaczna identyfikacja każdego rekordu w tabeli. W relacyjnych bazach danych klucz główny, czyli PRIMARY KEY, działa trochę jak numer PESEL dla osoby albo numer faktury w systemie sprzedaży: po tej wartości baza ma bez pomyłki znaleźć dokładnie jeden wiersz. Dodatkowo w praktyce klucz główny nie może przyjmować wartości NULL, bo brak wartości nie identyfikuje niczego konkretnego. Moim zdaniem to jedna z najważniejszych zasad przy projektowaniu tabel, bo od niej zależy później poprawne tworzenie relacji, kluczy obcych i zapytań SQL. Klucz nie musi mieć ciągłej numeracji, bo po usunięciu rekordu mogą zostać luki, i to jest normalne. Nie musi też być liczbą — może być np. kodem tekstowym, o ile jest stabilny i unikalny. Dobra praktyka branżowa często polega na używaniu sztucznego identyfikatora, np. id z autoinkrementacją, ale istotą nadal jest unikalność, nie sam typ danych.
W tym pytaniu łatwo pomylić cechy często spotykane w kluczach głównych z cechami obowiązkowymi. Klucz główny nie musi mieć ciągłej numeracji. W wielu tabelach identyfikatory wyglądają jak 1, 2, 3, 4, ale po usunięciu rekordu numer 3 może zniknąć i baza danych nadal jest poprawnie zaprojektowana. Ciągłość numerów nie jest wymagana przez model relacyjny ani przez SQL. Ważne jest tylko to, żeby każdy istniejący rekord dało się rozpoznać jednoznacznie. Podobnie wartości liczbowe są bardzo popularne, szczególnie przy polach typu INT z autoinkrementacją, ale to tylko wygodna praktyka, a nie twardy warunek. Kluczem głównym może być także tekst, na przykład symbol produktu, kod kraju albo login użytkownika, jeśli spełnia warunek unikalności i nie jest pusty. Nie ma też zasady, że kolumna klucza głównego musi mieć inny typ niż pozostałe kolumny. Typ danych dobiera się do sensu przechowywanej informacji, a nie po to, żeby wyróżnić kolumnę na siłę. Typowy błąd myślowy polega na tym, że ktoś widzi w przykładach pole id jako liczbę automatycznie zwiększaną i uznaje, że tak musi być zawsze. W rzeczywistości standardowa rola PRIMARY KEY polega na zapewnieniu unikalnej, niepustej identyfikacji wierszy oraz na umożliwieniu bezpiecznego tworzenia relacji między tabelami, np. przez klucze obce.