Gymterview
junior

Что такое схемы (schemas) в PostgreSQL?

Схема (schema) — это логическое пространство имён внутри базы данных, позволяющее группировать и изолировать объекты (таблицы, представления, функции, типы).

Ключевые особенности

  • Каждая база данных содержит как минимум схему public, которая используется по умолчанию
  • Разные схемы могут содержать объекты с одинаковыми именами без конфликтов
  • Схемы используются для логического разделения модулей приложения, управления доступом и мультитенантности
Примеры работы со схемами
-- Создание схемы
CREATE SCHEMA payments;

-- Создание таблицы в схеме
CREATE TABLE payments.orders (
    id bigserial PRIMARY KEY,
    amount numeric(15, 2),
    status text DEFAULT 'NEW'
);

-- Обращение к таблице
SELECT * FROM payments.orders;

-- Установка пути поиска схем
SET search_path TO payments, public;
-- Теперь можно без указания схемы:
SELECT * FROM orders;

Параметр search_path определяет порядок, в котором PostgreSQL ищет объекты по неквалифицированному имени. По умолчанию: "$user", public.

Применение для разделения модулей

Пример
CREATE SCHEMA core;       -- основные сущности (клиенты, счета)
CREATE SCHEMA payments;   -- платежи и переводы
CREATE SCHEMA audit;      -- аудит и журналирование
CREATE SCHEMA reports;    -- отчётные представления

-- Можно ограничить права:
GRANT USAGE ON SCHEMA audit TO audit_role;
REVOKE ALL ON SCHEMA core FROM public;

На собеседовании: схемы часто путают с отдельными базами данных. Важно пояснить, что схема — это пространство имён внутри одной БД, и между схемами можно делать JOIN, а между разными базами данных — нельзя (без расширения dblink/postgres_fdw).