Typ ENUM
Typ SQL dla stałych list wartości: CREATE TYPE status AS ENUM ('active','pending','closed'). Bezpieczny typologicznie i oszczędny (przechowywany jako 4-bajtowy OID, nie pełny napis).
W PostgreSQL kolejność jest zachowana (sortowanie po ENUM działa tak, jak go zdefiniowano). ENUM w MySQL jest znacznie starszy i działa nieco inaczej. Cena: zmiana wartości wymaga ALTER TYPE, co na dużych tabelach bywa kosztowne. Wielu doświadczonych programistów woli VARCHAR + ograniczenie CHECK (większa elastyczność, mniej kłopotów z migracjami). Klasyczna pułapka: „draft” jako ENUM, a po czasie chcemy dodać „scheduled” — i trzeba zrobić ALTER na produkcyjnej bazie. Nowoczesna alternatywa: tabela słownikowa z kluczem obcym, dająca pełną elastyczność.