KWALIFIKACJA INF3 - CZERWIEC 2017

PYTANIE NR 15.
W języku SQL wykorzystywanym przez bazę danych MySQL atrybut UNIQUE polecenia CREATE TABLE
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
UNIQUE w definicji tabeli wymusza, aby wszystkie nie-NULL wartości w danej kolumnie (lub zestawie kolumn) były różne. Dzięki temu baza odrzuci INSERT/UPDATE, który wprowadza duplikat. UNIQUE nie zabrania NULL (zależnie od silnika może dopuścić wiele NULL).

Pełne wyjaśnienie:

Ograniczenie UNIQUE w poleceniu CREATE TABLE służy do zapewnienia, że wartości w danej kolumnie (albo w zdefiniowanej kombinacji kilku kolumn) nie będą się powtarzać. W praktyce oznacza to, że przy próbie wykonania INSERT lub UPDATE baza danych sprawdza, czy nowa wartość nie tworzy duplikatu względem już zapisanych rekordów. Jeśli duplikat powstaje, operacja zostanie odrzucona błędem naruszenia unikalności.

Dlatego poprawna jest odpowiedź: "jest stosowany, jeśli wartości w kolumnie nie mogą się powtarzać."

Dlaczego pozostałe odpowiedzi są błędne?

  • "blokuje możliwość wpisania wartości NULL." – za blokowanie NULL odpowiada ograniczenie NOT NULL. UNIQUE dotyczy unikalności, a nie samej dopuszczalności wartości pustej. W wielu implementacjach SQL dopuszczalne są wartości NULL mimo UNIQUE (często nawet wielokrotnie), bo NULL nie jest traktowany jak "konkretna wartość" do porównania.
  • "jest stosowany tylko w przypadku pól liczbowych." – to fałsz. UNIQUE można stosować dla różnych typów danych (np. tekst, liczby, daty), o ile da się je porównywać i indeksować zgodnie z zasadami bazy.
  • "wymusza unikatowe nazwy pól tabeli." – nazwy kolumn w tabeli i tak muszą być unikalne z samej składni definicji tabeli; UNIQUE nie służy do kontroli nazw, tylko wartości w wierszach.

Wskazówka egzaminacyjna: gdy w odpowiedziach pojawia się "NULL", najczęściej chodzi o rozróżnienie UNIQUE (unikalność wartości) i NOT NULL (zakaz wartości pustej). To są dwa różne mechanizmy, często stosowane razem, ale nie są tym samym.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
UNIQUE to ograniczenie integralności, które wymusza niepowtarzalność wartości w kolumnie (lub w zestawie kilku kolumn). Gdy próbujesz dodać lub zmienić rekord tak, aby powstał duplikat, MySQL odrzuci operację błędem naruszenia unikalności.
UNIQUE stosuje się, gdy pewna cecha ma identyfikować rekord bez duplikatów, np. e-mail użytkownika, numer dokumentu, kod produktu. To ogranicza błędy aplikacji i poprawia jakość danych, bo duplikaty są blokowane już na poziomie bazy.
Nie. Za zakaz wartości NULL odpowiada ograniczenie NOT NULL. UNIQUE kontroluje powtarzanie się wartości, a nie samą dopuszczalność pustej wartości. W praktyce zachowanie NULL z UNIQUE może zależeć od implementacji, ale nie jest to to samo co NOT NULL.
PRIMARY KEY identyfikuje rekord i zwykle oznacza: unikalność oraz brak NULL (w typowym użyciu). UNIQUE zapewnia unikalność, ale nie musi pełnić roli głównego identyfikatora rekordu. W tabeli może być wiele ograniczeń UNIQUE, ale tylko jeden PRIMARY KEY.
Nie. UNIQUE można stosować do wielu typów danych, np. VARCHAR (tekst), INT (liczby), DATE (daty). Ważne jest, aby baza potrafiła porównać wartości i (zwykle) utworzyć odpowiedni indeks wspierający kontrolę duplikatów.
Unikalność nazw kolumn wynika z samej definicji tabeli: w jednej tabeli nie możesz mieć dwóch kolumn o tej samej nazwie. UNIQUE działa na danych w wierszach (wartościach), a nie na metadanych (nazwach pól).
Stosuje się tzw. unikalność złożoną (composite). Definiujesz UNIQUE dla pary/zestawu kolumn, aby unikalna była kombinacja wartości, np. (id_ucznia, id_przedmiotu). Wtedy duplikat tej samej pary zostanie zablokowany.
Zawsze, gdy reguła ma być bezwzględna i niezależna od błędów kodu aplikacji. Walidacja po stronie aplikacji jest przydatna dla komunikatów, ale dopiero UNIQUE w bazie daje gwarancję, że równoległe zapisy (np. wiele żądań) nie utworzą duplikatów.
Częsty błąd to utożsamienie UNIQUE z NOT NULL. Uczniowie zakładają, że "unikalność" automatycznie zabrania NULL, co nie jest regułą. Drugi błąd to pomijanie tego, że UNIQUE może dotyczyć kilku kolumn jednocześnie, nie tylko jednej.
Możesz podejrzeć definicję tabeli poleceniem typu SHOW CREATE TABLE lub sprawdzić indeksy. UNIQUE zwykle jest realizowane jako indeks unikalny, więc w informacjach o indeksach zobaczysz, że dany indeks ma własność unikalności.
info

Około 60% zdających odpowiada poprawnie na to pytanie. średnie

Według specjalistów z branży: "UNIQUE w definicji tabeli wymusza, aby wszystkie nie-NULL wartości w danej kolumnie (lub zestawie kolumn) były różne."

Źródła:

  • MySQL 8.0 Reference Manual: "CREATE TABLE Statement" (sekcja o constraints/UNIQUE) – https://dev.mysql.com/doc/refman/8.0/en/create-table.html (dostęp: 2026-02-07)
  • MySQL 8.0 Reference Manual: "CREATE Index Statement" (informacje o indeksie UNIQUE) – https://dev.mysql.com/doc/refman/8.0/en/create-index.html (dostęp: 2026-02-07)
  • MySQL 8.0 Reference Manual: "Constraint" / "UNIQUE Constraints and NULL" (opis zachowania unikalności i NULL w MySQL) – https://dev.mysql.com/doc/refman/8.0/en/constraint-invalid-data.html (dostęp: 2026-02-07)

Materiały:

  • Dokumentacja MySQL: CREATE TABLE oraz constraints
  • Ćwiczenia: projektowanie tabel z UNIQUE/PRIMARY KEY/FOREIGN KEY
  • Porównanie UNIQUE vs PRIMARY KEY vs NOT NULL (tabela różnic)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego