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).