Схема базы и ER-диаграмма в pgAdmin 4

В pgAdmin 4 можно посмотреть схему базы данных, открыть таблицы, колонки, индексы, ограничения и сгенерировать ER-диаграмму PostgreSQL. Важно понимать: pgAdmin показывает реальные объекты базы. Если внешние ключи не созданы в PostgreSQL, на ER-диаграмме не появятся связи между таблицами.

PostgreSQL база знаний: перейти в рубрику с уроками на русском языке

Где в pgAdmin лежит схема базы данных

После подключения к серверу раскройте дерево объектов слева. В PostgreSQL схема — это пространство имен внутри базы данных. По умолчанию большинство учебных таблиц попадает в схему public.

Servers
└── Local PostgreSQL
    └── Databases
        └── shop
            └── Schemas
                └── public
                    ├── Tables
                    ├── Views
                    ├── Materialized Views
                    ├── Functions
                    └── Sequences

Если пользователь спрашивает, как в pgAdmin посмотреть схему базы данных, чаще всего он имеет в виду одно из двух: открыть список таблиц в public или увидеть визуальную диаграмму связей. Это разные действия.

Как посмотреть структуру таблицы

  1. Раскройте Databases -> нужная база.
  2. Откройте Schemas -> public.
  3. Откройте Tables.
  4. Раскройте нужную таблицу.
  5. Откройте Columns, Constraints и Indexes.

В разделе Columns видны имена колонок и типы данных. В Constraints находятся primary key, foreign key, unique и check-ограничения. В Indexes отображаются индексы. Через правый клик по таблице и пункт Properties можно открыть подробное окно свойств.

SQL-эквивалент списка таблиц в схеме public:

SELECT tablename
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY tablename;

Минимальная схема для проверки ER-диаграммы

Чтобы ER-диаграмма была полезной, в базе должны быть таблицы и внешние ключи. Создайте простой пример в Query Tool:

CREATE TABLE customers (
  id SERIAL PRIMARY KEY,
  email TEXT UNIQUE NOT NULL
);

CREATE TABLE orders (
  id SERIAL PRIMARY KEY,
  customer_id INTEGER NOT NULL REFERENCES customers(id),
  total NUMERIC(10, 2) NOT NULL,
  created_at TIMESTAMP DEFAULT now()
);

Связь между orders.customer_id и customers.id задана через REFERENCES customers(id). Именно такую связь pgAdmin сможет отобразить на ERD.

Как создать ER-диаграмму в pgAdmin 4

  1. Раскройте сервер и нужную базу данных.
  2. Нажмите правой кнопкой по базе данных.
  3. Выберите пункт Generate ERD.
  4. Дождитесь построения диаграммы.
  5. Разместите таблицы на полотне так, чтобы связи было удобно читать.
  6. При необходимости экспортируйте диаграмму как изображение.

ERD в pgAdmin удобна для быстрого просмотра структуры небольшой и средней базы. Для больших схем диаграмму лучше строить по частям: сначала открыть ключевые таблицы, затем добавлять соседние объекты.

Почему связи не отображаются

Нет FOREIGN KEY. Самая частая причина. Если разработчик хранит customer_id как обычное число без ограничения REFERENCES, pgAdmin не узнает, что это связь.

Таблицы лежат в другой схеме. Например, часть таблиц находится в public, а часть в crm. Проверьте дерево Schemas и убедитесь, что вы смотрите нужные объекты.

Не хватает прав. Пользователь может подключиться к базе, но не иметь прав на просмотр некоторых таблиц или ограничений. В таком случае диаграмма будет неполной.

База пустая. Если таблицы еще не созданы, ERD не из чего строить. Сначала создайте таблицы и ограничения, затем обновите дерево объектов.

Как проверить связи через SQL

Если в интерфейсе не видно связей, проверьте внешние ключи запросом:

SELECT
  conname AS constraint_name,
  conrelid::regclass AS table_name,
  confrelid::regclass AS referenced_table
FROM pg_constraint
WHERE contype = 'f'
ORDER BY table_name::text, constraint_name;

Если запрос ничего не вернул, в базе нет внешних ключей. Значит, сначала нужно добавить ограничения, и только потом строить осмысленную ER-диаграмму.

Schema и diagram — не одно и то же

В PostgreSQL schema — это часть структуры базы данных, пространство имен для таблиц, функций и других объектов. Diagram в pgAdmin — визуальная схема, картинка поверх этих объектов. Схема существует в базе всегда, а диаграмма создается интерфейсом для удобного просмотра.

Поэтому вопрос «как посмотреть схему» лучше уточнять: если нужен список объектов, открывайте Schemas. Если нужна визуальная карта связей, используйте Generate ERD.

Как быстро найти нужную таблицу

В реальной базе таблиц может быть много. Если дерево объектов длинное, используйте поиск по имени или SQL-запрос к information_schema. Это быстрее, чем вручную раскрывать каждую схему.

SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
  AND table_name ILIKE '%order%'
ORDER BY table_schema, table_name;

Такой запрос помогает понять, где лежит нужная таблица: в public, crm, analytics или другой схеме. После этого можно открыть ее в дереве pgAdmin и посмотреть колонки, ограничения и индексы.

Как читать Constraints и Indexes

Раздел Constraints отвечает за правила целостности данных. Primary key определяет уникальную строку. Foreign key связывает таблицу с другой таблицей. Unique запрещает дубли. Check проверяет условие, например что сумма заказа больше нуля.

Раздел Indexes отвечает за ускорение поиска и сортировки. Индекс может быть создан автоматически для primary key или unique-ограничения, а может быть добавлен вручную под частый запрос. На ER-диаграмме индексы не всегда являются главным объектом внимания, но при разборе структуры таблицы их стоит проверять отдельно.

SELECT
  indexname,
  indexdef
FROM pg_indexes
WHERE schemaname = 'public'
  AND tablename = 'orders'
ORDER BY indexname;

Когда ERD не заменяет документацию

ER-диаграмма хорошо показывает связи, но не объясняет бизнес-смысл таблиц. Например, диаграмма покажет, что orders.customer_id ссылается на customers.id, но не объяснит правила отмены заказа, статусы оплаты или логику архивирования. Поэтому для рабочей системы ERD лучше дополнять короткими комментариями: что хранит таблица, кто ее обновляет и какие запросы считаются ключевыми.

Если база большая, сделайте несколько диаграмм по зонам: пользователи, заказы, платежи, справочники, аналитика. Одна огромная диаграмма обычно выглядит внушительно, но плохо помогает в работе.

Что еще видно в дереве объектов

Кроме таблиц, в схеме могут быть Views, Materialized Views, Functions и Sequences. Views показывают сохраненные запросы, materialized views хранят результат запроса как объект, functions содержат серверную логику, sequences часто используются для генерации идентификаторов. При разборе незнакомой базы не ограничивайтесь только Tables.

SELECT sequence_schema, sequence_name
FROM information_schema.sequences
WHERE sequence_schema = 'public'
ORDER BY sequence_name;

Если таблица использует SERIAL или identity-колонку, рядом часто будет sequence. Это нормально: PostgreSQL использует sequence, чтобы выдавать новые значения идентификатора.

Как экспортировать результат для команды

ERD можно сохранить как изображение и приложить к документации, задаче или onboarding-материалу. Перед экспортом разложите таблицы вручную: центральные сущности в центре, справочники сбоку, слабосвязанные таблицы отдельно. Так диаграмма будет не просто картинкой, а рабочей подсказкой.

Для публикации или учебного материала лучше использовать маленькую диаграмму на 2-5 таблиц. Большая схема плохо читается на мобильном экране и в WordPress. Если нужно показать большую систему, сделайте несколько картинок по сценариям.

Практический чек-лист разбора схемы

  • Найти нужную базу и схему.
  • Открыть список таблиц.
  • Проверить колонки ключевых таблиц.
  • Проверить primary key у каждой основной таблицы.
  • Проверить foreign key между связанными таблицами.
  • Открыть индексы у таблиц, по которым часто ищут данные.
  • Сгенерировать ERD и убедиться, что связи видны.
  • Если связи не видны, проверить pg_constraint.

После чек-листа полезно сделать короткое резюме по базе: какие таблицы главные, какие связи обязательные, где лежат справочники, какие объекты выглядят устаревшими. Это превращает просмотр схемы из пассивного клика по дереву в понятный аудит структуры.

Как документировать схему после просмотра

После просмотра схемы в pgAdmin сделайте короткую текстовую заметку. В ней достаточно указать назначение базы, главные таблицы, ключевые связи и спорные места. Это помогает следующему человеку быстрее понять структуру, а не повторять тот же ручной осмотр заново.

Краткая карта базы:
- customers — клиенты, primary key id
- orders — заказы, связана с customers через customer_id
- products — товары
- order_items — строки заказа, связана с orders и products
- справочники лежат в схеме public
- ERD проверена по FOREIGN KEY

Если база меняется часто, не пытайтесь хранить одну вечную картинку. Лучше обновлять ERD перед релизом или после крупных миграций. Устаревшая диаграмма опаснее, чем отсутствие диаграммы: она создает уверенность там, где структура уже изменилась.

Для учебной публикации можно приложить дату создания диаграммы и имя базы или стенда. Тогда читатель понимает, что скриншот показывает конкретное состояние схемы, а не вечное описание PostgreSQL.

Что читать дальше

Связанные материалы из базы:

pgAdmin 4 — подключение и базовая настройка.

Foreign Key в PostgreSQL — как задаются связи таблиц.

CREATE TABLE в PostgreSQL — таблицы, типы данных и ограничения.

VIEW и Materialized View — как устроены представления.

Часто задаваемые вопросы

Можно ли нарисовать связь вручную в ERD?

Для учебного просмотра удобнее создать настоящий FOREIGN KEY в PostgreSQL. Тогда связь будет не только на картинке, но и в самой базе, а PostgreSQL сможет контролировать целостность данных.

Почему в ER-диаграмме слишком много таблиц?

Большие базы лучше смотреть частями. Начните с основной бизнес-таблицы и связанных с ней объектов. Если открыть всю схему сразу, диаграмма может стать нечитаемой.

Как быстро понять, в какой схеме находится таблица?

Выполните запрос к information_schema.tables или используйте поиск по дереву объектов в pgAdmin. Для SQL-проверки подойдет: SELECT table_schema, table_name FROM information_schema.tables WHERE table_name = 'orders';

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x