ErdDocs

Вставьте SQL, получите ER-диаграмму и словарь данных

ErdDocs строит ER-диаграмму по схеме, которая у вас уже есть. Вставьте SQL-дамп, схему Prisma или миграции фреймворка. Вы получите интерактивную диаграмму и словарь данных для печати, где описаны все таблицы, колонки, типы и связи. Регистрация и установка не нужны. Схема разбирается в вашем браузере и никуда не отправляется.

Ваша схема

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

Как это работает

Чтобы получить из SQL-дампа ER-диаграмму и словарь данных:

  1. 01Выгрузите схему. Для PostgreSQL – pg_dump --schema-only, для MySQL – mysqldump --no-data.
  2. 02Вставьте её выше или перетащите .sql-файл прямо на панель.
  3. 03Читайте диаграмму. Наведите курсор на таблицу, и её связи подсветятся. Клик закрепляет подсветку.
  4. 04Откройте вкладку «Словарь данных». Там собраны колонки, типы, значения по умолчанию, индексы и связи. Словарь можно распечатать в PDF.

Сделано для настоящих дампов

Рабочая схема – это не аккуратный список инструкций CREATE TABLE. Поэтому разбор проверен на настоящих схемах: pagila, sakila, GitLab, Discourse, WordPress, PrestaShop. Насколько хорошо читается каждый формат, измерено на 89 открытых схемах.

ER-диаграмма схемы интернет-магазина: таблицы customers, orders, products и order_items, соединённые линиями связей в нотации Мартина (crow’s foot), построена по SQLER-диаграмма схемы интернет-магазина: таблицы customers, orders, products и order_items, соединённые линиями связей в нотации Мартина (crow’s foot), построена по SQL
Схема магазина выше, ровно такая, какой её рисует экспорт.
  • Секционированная таблица остаётся одной таблицей. Дамп с 55 месячными партициями таблицы payment даёт одну карточку payment, а не 56.
  • Недостающие внешние ключи восстанавливаются. В проектах на Rails и Django в базе их часто не объявляют вовсе. Но имена колонок всё равно говорят, что на что ссылается, и такие связи рисуются пунктиром.
  • Одна плохая инструкция не губит весь файл. Всё, что не удалось прочитать, пропускается и попадает в отчёт, а остальная схема всё равно рисуется.
  • Большие схемы не обрезаются. Всё вставленное разбирается и раскладывается на диаграмме, даже если в схеме сотни таблиц.

Почему ErdDocs

  • Документация, а не только картинка. Словарь данных – это то, что на самом деле просят преподаватели, аудиторы, заказчики и новые коллеги.
  • Без регистрации и установки. Не нужен аккаунт, чтобы увидеть результат, и не нужно ничего устанавливать в проект.
  • Оплата один раз. Разовый платёж вместо подписки, которую забываешь отменить.
  • Схема не покидает компьютер. Разбор идёт прямо в браузере, на сервер она не отправляется. Рабочую схему можно вставлять, не беспокоясь об утечке структуры базы данных.

Конвертация между форматами

ErdDocs читает десять форматов и экспортирует в восемь, всё это в панели выше. Каждая страница ниже посвящена одному направлению конвертации, и на ней уже загружен пример. Страницы на английском:

Частые вопросы

Что такое словарь данных?

Это справочный документ по базе данных. В нём в одном месте описаны все таблицы и колонки: тип данных, допустим ли NULL, значение по умолчанию, индексы и связи. Его просят в курсовых и дипломах, при аудите и при сдаче проекта. ErdDocs строит его по вставленной схеме, сразу в виде, готовом для печати.

Моя схема куда-нибудь загружается?

Нет. Разбор и отрисовка идут целиком в вашем браузере. SQL не покидает компьютер, и аккаунта нет вовсе. К работающей базе ErdDocs намеренно не подключается, так что доступ к ней давать не нужно. Просмотры страниц сайт считает аналитикой без cookie. Она видит, какую страницу вы открыли, и не видит ничего из того, что на ней.

Какие базы данных и форматы поддерживаются?

SQL из PostgreSQL, MySQL, SQL Server и SQLite. Это может быть вывод pg_dump с инструкциями ALTER TABLE ONLY ... ADD CONSTRAINT, mysqldump, скрипт, созданный в SSMS, с его пакетами GO и именами в квадратных скобках, или вывод команды .schema в SQLite. Ещё девять форматов читаются как есть: схемы Prisma, DBML, Mermaid erDiagram, PlantUML, модели Django, SQLAlchemy и Sequelize, сущности TypeORM и миграции Laravel. В Prisma имена из @map, поля связей и неявные промежуточные таблицы для «многие ко многим» превращаются в те таблицы, которые на самом деле появятся в базе. Формат определяется по вставленному тексту, а если он определился неверно, его можно выбрать вручную.

В базе нет внешних ключей. Диаграмма будет пустой?

Нет. В проектах на Rails, Django и Laravel связи часто описаны только в коде приложения. ErdDocs читает и соглашение об именах: колонка user_id связывается с таблицей users. Такие связи рисуются пунктиром, чтобы их не спутать с объявленными в базе.

Чем это отличается от dbdiagram, drawSQL или sqltoerdiagram?

За ErdDocs платят один раз. У dbdiagram и drawSQL платные тарифы только по подписке. ErdDocs читает Prisma, модели Django, SQLAlchemy, Sequelize и TypeORM и миграции Laravel, а они ничего из этого не читают. Выгрузки в Mermaid и PlantUML нет ни там, ни там. В drawSQL без аккаунта не выгрузить даже картинку, а DBML туда можно только загрузить. В dbdiagram связи без внешних ключей ищет ИИ, и только на платном тарифе. ErdDocs находит их по именам колонок бесплатно. У sqltoerdiagram нет словаря данных для печати. Партиции из дампа он рисует отдельными таблицами, а ErdDocs сворачивает их в родительскую. Миграции Laravel sqltoerdiagram не читает, а для Django и TypeORM просит сначала сгенерировать из моделей SQL.

Сколько это стоит?

Диаграммы и экспорт картинок бесплатны, аккаунт не нужен. Схемы до 25 таблиц показываются целиком. Большие схемы тоже разбираются полностью, но таблицы сверх лимита остаются закрытыми. Их открывает разовый платёж $9, в него входит и полный словарь данных. Налоги, где они положены, Paddle добавляет при оплате.

Можно построить ER-диаграмму онлайн по коду SQL?

Да, для этого инструмент и сделан. Вставьте CREATE TABLE из PostgreSQL, MySQL, SQL Server или SQLite. Можно вставить дамп целиком, со всеми ALTER TABLE и индексами. Также читаются Prisma, DBML, Mermaid, PlantUML, модели Django, SQLAlchemy, Sequelize, TypeORM и миграции Laravel.

Ещё