Wartość pola tabeli pełniącego rolę klucza podstawowego
Pytanie z egzaminu CKE, wrzesień 2015 (arkusz E.14-X-15.08).
Klucz podstawowy (PRIMARY KEY) jednoznacznie identyfikuje każdy wiersz tabeli, więc jego wartość musi być unikalna: dwa rekordy nie mogą mieć tego samego klucza. Baza danych sama tego pilnuje i odrzuca polecenie INSERT, które próbuje wstawić powtórzoną wartość.
Druga cecha klucza podstawowego to brak wartości pustych - kolumna klucza ma automatycznie ograniczenie NOT NULL. Typowy zapis w MySQL: id INT AUTO_INCREMENT PRIMARY KEY, dzięki któremu serwer sam nadaje kolejne numery. Na kluczu podstawowym opierają się relacje: klucz obcy w innej tabeli wskazuje właśnie wartość klucza podstawowego.
Gdy pojedyncza kolumna nie wystarcza, klucz może się składać z kilku kolumn (klucz złożony) - wtedy unikalna musi być ich kombinacja.
Szyfrowanie nie ma z kluczem podstawowym nic wspólnego. Słowo „klucz” kojarzy się z kryptografią, ale w bazach danych oznacza pole identyfikujące rekord. Szyfrowaniem zajmują się osobne mechanizmy, na przykład funkcje szyfrujące albo szyfrowanie połączenia z serwerem.
Klucz zwykle jest liczbą z autonumeracją, stąd przekonanie, że zawsze jest numeryczny. Kluczem może jednak być także napis, na przykład numer PESEL zapisany jako tekst, kod produktu albo login użytkownika - liczy się unikalność, nie typ danych.
Wartość pusta (NULL) jest w kluczu podstawowym zabroniona, bo rekord bez identyfikatora nie dałby się jednoznacznie wskazać. Właściwa cecha to unikalność wartości, uzupełniona zakazem NULL.
Łatwo to sprawdzić w phpMyAdmin: próba dodania dwóch wierszy z tym samym kluczem kończy się błędem „Duplicate entry”, a pusty klucz - komunikatem, że kolumna nie może przyjąć NULL.