Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

id int NOT NULL AUTO_INCREMENT W bazie MySQL zdefiniowano podczas tworzenia tabeli pole id. Wpis AUTO_INCREMENT oznacza, że

id int NOT NULL AUTO_INCREMENT
W bazie MySQL zdefiniowano podczas tworzenia tabeli pole id. Wpis AUTO_INCREMENT oznacza, że
A. pole id będzie mogło przyjmować wartości: NULL, 1, 2, 3, 4 i tak dalej.
B. wartość pola id zostanie automatycznie nadana przez bazę i będzie to wygenerowana losowo liczba całkowita.
C. dozwolone jest dodawanie rekordu z dowolną wartością pola id.
D. wartości pola będą automatycznie generowane podczas dodawania nowego rekordu do bazy.

Pytanie z egzaminu CKE, styczeń 2022 (arkusz EE.09-SG-22.01).

AUTO_INCREMENT w MySQL oznacza, że baza danych sama nada wartość temu polu podczas wstawiania nowego rekordu, o ile nie podasz jej ręcznie w instrukcji INSERT. W praktyce takie pole bardzo często pełni rolę klucza głównego, np. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY. Dzięki temu każdy nowy wiersz dostaje kolejną wartość liczbową, najczęściej 1, 2, 3, 4 itd. Nie jest to liczba losowa, tylko wartość wyznaczana przez licznik tabeli. To bardzo wygodne przy identyfikowaniu rekordów, np. użytkowników, produktów, zamówień czy wpisów bloga. Z mojego doświadczenia to jedna z podstawowych dobrych praktyk w projektowaniu tabel: sztuczny identyfikator liczbowy jako prosty, stabilny klucz. Warto też pamiętać, że AUTO_INCREMENT zwykle łączy się z NOT NULL oraz indeksem PRIMARY KEY albo UNIQUE, bo identyfikator powinien być jednoznaczny. Jeżeli usuniesz rekord o id 5, MySQL normalnie nie musi ponownie używać tej wartości, więc mogą pojawić się przerwy w numeracji. I to jest okej, id ma identyfikować rekord, a nie zawsze tworzyć idealnie ciągłą listę numerów.
W tym zapisie najważniejsze jest zrozumienie, że AUTO_INCREMENT nie oznacza pełnej dowolności przy wpisywaniu wartości do kolumny id. Owszem, w MySQL czasem technicznie da się podać własną wartość dla takiej kolumny, jeśli nie łamie ona ograniczeń klucza i typu danych, ale nie to jest sensem tej właściwości. Jej głównym zadaniem jest automatyczne nadawanie kolejnych identyfikatorów przy dodawaniu rekordów, bez ręcznego pilnowania numeracji przez programistę. Częsty błąd polega na myleniu AUTO_INCREMENT z możliwością wpisania czegokolwiek albo z mechanizmem losowania liczb. MySQL nie generuje tu przypadkowej liczby całkowitej, tylko korzysta z wewnętrznego licznika tabeli. Dlatego po rekordzie z id 10 następny zwykle otrzyma id 11, a nie np. 43821. Nie należy też zakładać, że pole będzie przyjmowało NULL jako normalną wartość, bo w definicji występuje NOT NULL. Gdy podczas INSERT pominiemy id albo podamy NULL w typowym użyciu, baza potraktuje to jako sygnał do wygenerowania następnej wartości, ale zapisany w tabeli identyfikator nie będzie NULL. Moim zdaniem tu najłatwiej pomylić opis działania z listą możliwych wartości. AUTO_INCREMENT mówi o mechanizmie automatycznego przydzielania wartości, a nie o tym, że kolumna ma specjalnie przechowywać NULL, wartości losowe albo dowolne identyfikatory według uznania użytkownika. W projektowaniu baz danych taki identyfikator stosuje się po to, żeby rekordy były łatwe do jednoznacznego wskazania, łączenia w relacjach i obsługi w aplikacji.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.