Одной из частых задач документирования является документирование баз данных. Это может быть документирование 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, который будет автоматически запускаться при обновлении базы данных.
Конечно, созданная утилитой документация необязательно будет являться полным описанием, но вы можете использовать его и улучшать позже в тех аспектах, в которых нужно.
