Одной из частых задач документирования является документирование баз данных. Это может быть документирование PostgreSQL, Clickhouse, MongoDB и других баз данных. Их все объединяет один простой факт — такую документацию сложно делать вручную. В этой статье я разберу, как создать описание базы данных PostgreSQL с помощью утилиты tbls.
Что войдет в документацию
Посмотреть пример документации можно по ссылке. Хоть генерацию документации можно настроить с помощью шаблонов, на самом деле, базовый шаблон покрывает всю основную информацию.
В базовом шаблоне создается общий файл README.md с названием всех таблиц и ER-диаграммой в формате SVG. А также к каждой таблице создается markdown-файл с более подробным описанием и SVG-файл с изображением таблицы и ее связей.
В описании таблицы можно найти:
Viewpoints — предопределенный контекст для просмотра схемы данных.
Contrains — ограничения, например, PRIMARY KEY.
Indexes — индексы для оптимального поиска по базе данных.
Relations — связи между таблицами в виде ER-диаграммы.
Шаг 1. Установить нужные утилиты
Чтобы создать тестовую базу данных на своем компьютере, установите psql и mock-data.
Чтобы сгенерировать документацию к базе данных, установите tbls.
Шаг 2. (опционально) Создать базу данных
Если у вас уже есть база данных, к которой вы хотите создать документацию, пропустите этот шаг.
При установке psql была создана база данных и пользователь по умолчанию, оба с именем
postgres. Эту базу данных и суперпользователя мы будем использовать для документации.
После установки psql и mock-data:
Откройте командную строку.
Откройте терминал psql для работы с помощью команды
psql -d postgres -U postgresилиsudo -u postgres psqlдля MacOS и Linux.Создайте в терминале psql две таблицы с помощью команды
CREATE TABLE films (code char(5) CONSTRAINT firstkey PRIMARY KEY, title varchar(40) NOT NULL,mdid integer NOT NULL, date_prod date, kind varchar(10), len interval hour to minute); CREATE TABLE distributors (did integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, name varchar(40) NOT NULL CHECK (name <> ''));.Закройте терминал psql с помощью
\q.Продолжайте работать в командной строке и заполните пустые таблицы данными с помощью команды
mock d -c -f -d postgres -u postgres -p 5432 -a localhost -w <пароль_суперпользователя>. Пароль суперпользователя вы задавали во время установки psql.
Готово, вы создали базу данных с двумя таблицами данных.
Шаг 3. Сгенерировать документацию для базы данных
Введите в командной строке: tbls doc postgres://postgres:<пароль_суперпользователя>@localhost:5432/postgres. В команде используется ссылка на базу данных, которая была создана локально на прошлом шаге. Пароль суперпользователя вы задавали во время установки psql.
Если вы хотите сделать описание к другой базе данных, то ссылка обычно составляется по шаблону — postgres://<имя пользователя>:<пароль пользователя>@<имя хоста>:5432/<название базы данных>. Посмотреть ссылки для других типов баз данных можно в документации tbls.
Заключение
После выполнения команды вы получили папку с файлами Markdown и SVG с техническим описанием базы данных.
С помощью tbls мы быстро и удобно создали описание базы данных и связей между таблицами. Причем эту команду можно использовать не один раз, но и в рамках CI/CD, который будет автоматически запускаться при обновлении базы данных.
Конечно, созданная утилитой документация необязательно будет являться полным описанием, но вы можете использовать его и улучшать позже в тех аспектах, в которых нужно.
Комментарии (2)

aggromarus
27.01.2026 10:54-
Если нужна ERD при проектировании БД, то можно просто обойтись инструментом DBdiagram, связка простого dbml + рендеринг моментальный весьма прост и удобен, там и интерактив есть.
Из минусов: в рамках бесплатной версии весьма урезанный функционал, но его все еще будет хватать, для отображения.
Для просмотра AS IS (без изменения или проектирования) то лучше наверное просто Dbeaver использовать или же связку плагина database в intelijidea (особенно если в гите документы храните). Там очень удобная и информативная ERD, которую можно сохранить\экспортировать в разные форматы
все альтернативы на plantuml\tbls возможны, но больно уж страшненькие после dbdiagram
p.s. или что-то свое изобрести на стеке reactFlow
-
manyakRus
1) ERD-диаграмма в гитхабе образец выглядит неплохо,
лучше бы сюда тоже приложили такой образец сразу
2) есть ещё лучше автоматическая ERD-диаграмма,
которая: создаётся автоматически, красивее, можно изменять вручную, двигать элементы, можно обновлять после изменений (изменения сохранятся) и др.:
https://github.com/ManyakRus/image_database