Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Bazy danych
Bazy danycheasy

Primary key vs unique constraint vs index — jaka jest różnica?

Tagi
#primary-key#unique#index#constraints
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Primary key jednoznacznie identyfikuje wiersz (i może być referencjonowany przez FK). Unique constraint też wymusza unikalność, ale nie musi być „tożsamością” wiersza. Indeks to struktura przyspieszająca odczyty; może być unikalny lub nie.

Odpowiedź zaawansowana

Głębiej

To pojęcia powiązane, ale różne:

  • **Primary key (PK)**: wybrany identyfikator wiersza w tabeli. Implikuje **unikalność** i zwykle **NOT NULL**. PK może być tylko jeden na tabelę, a inne tabele typowo referencjonują go przez foreign key.
  • **Unique constraint**: reguła, że kolumna (lub zestaw kolumn) ma być unikalny. Unique constraintów może być wiele i często odpowiadają identyfikatorom biznesowym (email, externalId itd.).
  • **Indeks**: fizyczna struktura danych (często B-tree), która przyspiesza odczyty (wyszukiwanie, joiny, sortowanie). Indeks może być unikalny lub nie.

Ważny niuans

W wielu bazach PK i unique constraint są egzekwowane przez **unikalny indeks**, ale *constraint* to reguła semantyczna, a *indeks* to ścieżka dostępu używana przez planner.

Praktyczne wskazówki

  • PK trzymaj jako stabilną tożsamość (często stosuje się surrogate id).
  • Unique constraint do reguł biznesowych (np. unikalność `(tenantId, email)`).
  • Indeksy dobieraj pod wzorce zapytań (filtry + kolumny join + sortowanie).

Typowe pułapki

  • Dodawanie indeksów „na wszelki wypadek” (wolniejsze zapisy, większy storage).
  • Pominięcie unikalności złożonej w multi-tenant.
  • Założenie, że constraint automatycznie optymalizuje wszystkie zapytania (projekt indeksów nadal ma znaczenie).

Powiązane pytania

Bazy danych
Primary key vs unique constraint: jaka jest różnica?
#database#constraints#primary-key
Bazy danych
Constrainty vs triggery — jaka jest różnica i co preferować dla integralności?
#constraints#triggers#integrity
Bazy danych
Co to jest indeks złożony (wielokolumnowy) i kiedy pomaga?
#index#composite-index#performance
Bazy danych
Co to jest covering index?
#index#covering-index#performance
Bazy danych
Co to jest klucz obcy (foreign key) i co wymusza?
#foreign-key#constraints#integrity
Bazy danych
Co daje indeks i jaki jest główny trade-off?
#index#performance#tradeoffs