0Pricing
SQL Academy · Lekcja

Wybór kluczy i typów

Wybierz klucze główne BIGSERIAL lub UUID, zdecyduj między TEXT i VARCHAR(n) oraz dobierz właściwy typ dla każdej kolumny.

Wybór kluczy i typów to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Wybór klucza głównego

Trzy rzeczywiste możliwości:

  1. BIGSERIAL — 64-bitowa liczba całkowita rosnąca monotonicznie
  2. UUID — globalnie unikatowa wartość 128-bitowa
  3. Klucz naturalny — identyfikator ze świata rzeczywistego (email, ISBN)

Kiedy BIGSERIAL jest lepszy

Domyślny wybór w większości aplikacji:

  • Niewielki (8 bajtów), zapewnia szybki indeks i dobrze wykorzystuje pamięć podręczną
  • Monotoniczny → najnowsze dane są grupowane na końcu indeksu
  • Czytelny w adresach URL (np. /posts/42)

Kiedy UUID jest lepszy

Wybierz UUID, gdy:

  • Potrzebujesz globalnie unikatowych identyfikatorów (wiele centrów danych, aplikacje offline-first)
  • Nie chcesz ujawniać skali działalności za pomocą identyfikatorów w adresach URL
  • Chcesz wygenerować identyfikator po stronie klienta przed wykonaniem INSERT

Koszt: 16 bajtów (w porównaniu z 8 bajtami dla BIGINT), a identyfikatory UUID v4 losowo rozmieszczają wpisy w indeksie.

Dlaczego klucze naturalne są ryzykowne

Adresy email się zmieniają. Nazwy SKU są zmieniane. Kody państw są dzielone. Użyj klucza zastępczego jako PK i ograniczenia UNIQUE dla klucza naturalnego.

Typy kolumn: ciągi znaków

W przypadku większości kolumn tekstowych:

  • VARCHAR(n) — gdy istnieje ściszne ograniczenie z góry (adresy email, kody)
  • TEXT — dla długiej, dowolnej treści
  • CITEXT — gdy porównywanie zawsze powinno ignorować wielkość liter (adresy email!)

Typy kolumn: liczby

W przypadku kolumn liczbowych:

  • BIGINT dla identyfikatorów i liczników
  • NUMERIC(p, s) dla wartości pieniężnych
  • REAL/DOUBLE PRECISION wyłącznie do zastosowań naukowych

Typy kolumn: czas

W przypadku kolumn przechowujących czas:

  • TIMESTAMPTZ dla zdarzeń (domyślnie)
  • DATE dla dni kalendarzowych (daty urodzenia, święta)
  • TIME dla pory dnia bez daty (godziny otwarcia)

Boolean a status

Jeśli kolumna może w przyszłości przyjmować więcej niż dwa stany, zamiast typu boolean lepiej użyć tekstowego statusu + CHECK:

-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))

-- vs the trap of "is_published BOOLEAN" when you later need a third state.

Ograniczenia dla każdej kolumny

Każda kolumna powinna mieć:

  • Najwęższy pasujący typ
  • NOT NULL, chyba że NULL ma znaczenie
  • DEFAULT, jeśli kolumna zwykle ma tę samą wartość
  • CHECK, jeśli obowiązuje reguła domenowa
  • Indeks, jeśli jest używana w WHERE/JOIN/ORDER

Wpływ na przechowywanie danych

Węższe typy = mniejsze wiersze = więcej wierszy na stronie = lepszy współczynnik trafień pamięci podręcznej. Zmiana TEXT na VARCHAR(20) nie oszczędza miejsca (magazynowanie jest takie samo). Zmiana BIGINT na INT zmniejsza szerokość kolumny o połowę.

Typy kluczy obcych muszą być zgodne

Typy kolumn klucza obcego muszą dokładnie odpowiadać typowi referencjonowanego klucza głównego:

-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id)   -- where users.id is BIGINT

-- Right:
user_id BIGINT REFERENCES users(id)

Podsumowanie

Wybór typu jest decyzją projektową.

  • BIGSERIAL lub UUID dla PK
  • NUMERIC dla wartości pieniężnych
  • TIMESTAMPTZ dla zdarzeń
  • TEXT z CHECK dla statusu, który może się zmieniać
  • NOT NULL jako wartość domyślna

Szybkie sprawdzenie

Przechowujesz znaczniki czasu zdarzeń użytkowników znajdujących się w wielu strefach czasowych. Który typ wybierzesz?

Często zadawane pytania

Czy lekcja „Wybór kluczy i typów” jest bezpłatna?

Tak — pełny tekst „Wybór kluczy i typów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wybór kluczy i typów”?

Wybierz klucze główne BIGSERIAL lub UUID, zdecyduj między TEXT i VARCHAR(n) oraz dobierz właściwy typ dla każdej kolumny. Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Wybór kluczy i typów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Modelowanie bloga: użytkownicy, posty, komentarze
  2. Wybór kluczy i typów
  3. Indeksy dla typowych zapytań
  4. Zasilanie bazy danych danymi testowymi
← Powrót do SQL Academy