DOMAIN (Postgres)
Возможность PostgreSQL создать собственный тип со встроенным ограничением. CREATE DOMAIN email AS TEXT CHECK (VALUE ~ '^[^@]+@[^@]+$'). Используется как тип столбца — ограничение применяется автоматически.
Применение: не повторять один и тот же CHECK в 20 таблицах. CREATE DOMAIN positive_int AS INTEGER CHECK (VALUE >= 0). Отличается от CREATE TYPE, который нужен для составных типов. Миграция: ALTER DOMAIN меняет все таблицы, где домен используется. Компромисс: логика прячется в системе типов, и в схеме таблицы её труднее увидеть. Функция не слишком популярна — многие просто пишут CHECK прямо в таблице. ENUM занимает ту же нишу «ограничений типа», но для фиксированных списков значений.