← Все гайды

ER-диаграмма онлайн по коду: схема базы данных в DBML

· 2 мин чтения

DBML

Как нарисовать ER-диаграмму базы данных кодом: таблицы, связи и перечисления в DBML, расположение таблиц мышью, экспорт в PNG и SVG.

Рисовать ER-диаграмму мышью долго, а поддерживать — ещё дольше. В DBML схема пишется кодом в несколько строк на таблицу, а диаграмма строится автоматически и всегда соответствует коду.

Как нарисовать

  1. Откройте песочницу DBML.
  2. Опишите таблицы и связи:
    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)
    }
  3. Диаграмма справа обновляется по мере ввода. Перетаскивайте таблицы мышью — расположение сохраняется.
  4. Скачайте картинку: Файл → Скачать → Изображение PNG или SVG.
ER-диаграмма, построенная по коду DBML
Таблицы, ключи и связи строятся по коду автоматически

Основы синтаксиса

  • Связи: > — многие к одному, < — один ко многим, - — один к одному, <> — многие ко многим. Внутри колонки — [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 или по типу колонки — переход к определению.
  • Колесо мыши — масштаб, перетаскивание фона — сдвиг диаграммы.

Другие виды той же схемы

Вопросы и ответы

Можно ли рисовать мышью, без кода? Таблицы перетаскиваются мышью, но состав и связи задаются кодом — так модель всегда точна и её легко сравнивать по версиям. Кода немного: таблица — несколько строк.

Как показать связь многие-ко-многим? Ref: orders.id <> tags.id — на диаграмме это связь с «многими» на обоих концах, а при экспорте в SQL создаётся промежуточная таблица.

Где хранить диаграмму? В проекте рядом со спецификациями API и описанием процессов — коллеги увидят актуальную модель, а изменения попадут в историю версий.

Как показать диаграмму тому, у кого нет аккаунта? Ссылкой для просмотра — «Как поделиться диаграммой».