KWALIFIKACJA INF3 - CZERWIEC 2022 (test 2)

PYTANIE NR 15.
Tworząc tabelę w języku SQL zdefiniowano pole, którego wartości nie mogą się powtarzać. Do jego definicji należy zastosować atrybut
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
UNIQUE to ograniczenie (constraint) w SQL, które wymusza, aby wartości w kolumnie (lub zestawie kolumn) nie powtarzały się.
DEFAULT ustawia wartość domyślną, IDENTITY dotyczy autoinkrementacji w niektórych systemach, a NOT NULL jedynie zabrania wartości NULL, nie eliminuje duplikatów.

Pełne wyjaśnienie:

Jeśli w definicji tabeli w SQL trzeba zapewnić, że wartości w danym polu (kolumnie) nie mogą się powtarzać, stosuje się ograniczenie UNIQUE. Taki constraint powoduje, że baza odrzuci próbę wstawienia lub modyfikacji rekordu, która prowadziłaby do duplikatu w kolumnie (lub w kombinacji kilku kolumn, jeśli unikalność zdefiniowano wielokolumnowo).

Dlaczego pozostałe opcje nie pasują:

  • DEFAULT służy do ustawienia wartości domyślnej, gdy aplikacja nie poda wartości w INSERT. Nie kontroluje powtórzeń; wiele wierszy może mieć tę samą wartość domyślną.
  • IDENTITY to mechanizm spotykany w części systemów baz danych (np. jako sposób autoinkrementacji). Choć w praktyce często prowadzi do różnych wartości, nie jest ogólnym, przenośnym atrybutem SQL definiującym "zakaz duplikatów" i nie zastępuje constraintu unikalności jako reguły biznesowej.
  • NOT NULL oznacza jedynie, że pole nie może być puste (NULL). Nadal można wstawić tę samą wartość wielokrotnie, więc nie spełnia warunku "nie mogą się powtarzać".

W praktyce w projektach webowych UNIQUE stosuje się m.in. dla loginów, e-maili, numerów dokumentów lub innych identyfikatorów, które muszą być niepowtarzalne niezależnie od tego, czy aplikacja ma walidację po stronie serwera. Constraint w bazie jest dodatkowym, pewnym zabezpieczeniem integralności danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
UNIQUE to ograniczenie integralności, które wymusza niepowtarzalność wartości w kolumnie lub w zestawie kolumn. Baza danych nie pozwoli dodać ani zmienić rekordu tak, aby powstał duplikat. To zabezpieczenie działa niezależnie od aplikacji.
Najczęściej używa się UNIQUE do wymuszenia unikalnych loginów lub adresów e-mail. Dzięki temu nawet jeśli aplikacja ma błąd walidacji, baza danych nadal zablokuje duplikat, co chroni spójność danych w systemie.
PRIMARY KEY identyfikuje rekord i zwykle nie dopuszcza NULL oraz musi być jedna na tabelę. UNIQUE może występować wielokrotnie i służy do dodatkowych reguł niepowtarzalności. Oba mechanizmy mogą tworzyć indeks wspierający kontrolę duplikatów.
Nie. NOT NULL jedynie zabrania wartości NULL (pustych). Nadal można wielokrotnie wstawić tę samą wartość, np. dwa razy "admin". Do zakazu powtórzeń służy constraint UNIQUE albo klucz główny.
DEFAULT ustawia wartość domyślną, gdy w INSERT nie podasz wartości kolumny. Nie weryfikuje unikalności, więc wiele wierszy może dostać identyczną wartość domyślną. Kontrolę duplikatów realizują constraints typu UNIQUE.
Mechanizmy autoinkrementacji (np. IDENTITY w niektórych bazach) zwykle generują kolejne liczby, ale to inny cel niż constraint unikalności. Dodatkowo składnia i zachowanie mogą być zależne od silnika bazy. Regułę "bez powtórzeń" definiuje się przez UNIQUE.
Zwykle robi się to poleceniem typu ALTER TABLE, dodając ograniczenie UNIQUE dla kolumny lub kolumn. Dokładna składnia zależy od silnika bazy danych. W praktyce warto też sprawdzić, czy w tabeli nie ma już duplikatów, bo operacja się nie powiedzie.
Gdy unikalna ma być kombinacja wartości, a nie pojedyncze pole. Przykład: w tabeli rezerwacji unikalna może być para (pokój, data) albo w zamówieniach (numer_zamówienia, pozycja). Wtedy definiuje się UNIQUE jako ograniczenie wielokolumnowe.
Częsty błąd to mylenie UNIQUE z NOT NULL oraz zakładanie, że walidacja w aplikacji wystarczy. Inny błąd to projektowanie unikalności na złej kolumnie (np. nazwisko) zamiast na identyfikatorze biznesowym (np. e-mail), co powoduje blokowanie poprawnych danych.
Warto przećwiczyć tworzenie tabel z ograniczeniami: PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL i DEFAULT. Rób krótkie zadania: zaprojektuj tabelę i wskaż, które pola muszą być unikalne. Pomaga też porównanie przykładów błędów INSERT łamiących constraint.
info

To pytanie poprawnie rozwiązuje 78% zdających egzamin. średnio łatwe

Specjaliści zwracają uwagę: "UNIQUE to ograniczenie (constraint) w SQL, które wymusza, aby wartości w kolumnie (lub zestawie kolumn) nie powtarzały się."

Źródła:

  • PostgreSQL Documentation: "CREATE TABLE" / Constraints / UNIQUE - https://www.postgresql.org/docs/current/ddl-constraints.html (dostęp: 2026-02-27)
  • Microsoft Learn: "UNIQUE Constraints" (SQL Server) - https://learn.microsoft.com/en-us/sql/relational-databases/tables/unique-constraints-and-check-constraints?view=sql-server-ver16 (dostęp: 2026-02-27)
  • MySQL 8.0 Reference Manual: "CREATE TABLE" / UNIQUE Indexes - https://dev.mysql.com/doc/refman/8.0/en/create-table.html (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja SQL wybranego silnika bazy (PostgreSQL/MySQL/SQL Server) dotycząca UNIQUE/constraints
  • Materiały o DDL: CREATE TABLE, constraints, indeksy
  • Zadania praktyczne: projekt tabeli Users/Orders z wymaganiami unikalności

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego