Рисовать ER-диаграмму мышью долго, а поддерживать — ещё дольше. В DBML схема пишется кодом в несколько строк на таблицу, а диаграмма строится автоматически и всегда соответствует коду.
Как нарисовать
- Откройте песочницу DBML.
- Опишите таблицы и связи:
Table users { id uuid [pk] email varchar(255) [unique, not null] } Table orders { id uuid [pk] user_id uuid [ref: > users.id] total numeric(12,2) } - Диаграмма справа обновляется по мере ввода. Перетаскивайте таблицы мышью — расположение сохраняется.
- Скачайте картинку: Файл → Скачать → Изображение PNG или SVG.

Основы синтаксиса
- Связи:
>— многие к одному,<— один ко многим,-— один к одному,<>— многие ко многим. Внутри колонки —[ref: > users.id], отдельно —Ref: orders.user_id > users.id. - Настройки колонки в скобках:
pk,not null,unique,increment,default: …,note: '…'. - Перечисления:
Enum status { new paid }и колонка типаstatus. - Группы:
TableGroup billing { invoices payments }— рамка вокруг таблиц подсистемы. - Цвет заголовка:
Table users [headercolor: #1F3A5F].
Полный синтаксис — в документации по DBML.
Навигация
- Двойной щелчок по таблице на диаграмме — переход к её коду.
- Ctrl+клик по имени таблицы в
refили по типу колонки — переход к определению. - Колесо мыши — масштаб, перетаскивание фона — сдвиг диаграммы.
Другие виды той же схемы
- ER-диаграмма в PlantUML для документации: «DBML в PlantUML».
- SQL для СУБД: «Генератор SQL из DBML».
Вопросы и ответы
Можно ли рисовать мышью, без кода? Таблицы перетаскиваются мышью, но состав и связи задаются кодом — так модель всегда точна и её легко сравнивать по версиям. Кода немного: таблица — несколько строк.
Как показать связь многие-ко-многим? Ref: orders.id <> tags.id — на диаграмме это связь с «многими» на обоих концах, а при экспорте в SQL создаётся промежуточная таблица.
Где хранить диаграмму? В проекте рядом со спецификациями API и описанием процессов — коллеги увидят актуальную модель, а изменения попадут в историю версий.
Как показать диаграмму тому, у кого нет аккаунта? Ссылкой для просмотра — «Как поделиться диаграммой».
