Содержание
  1. Холст, текст и диаграмма: роли трёх слоёв
  2. Тип диаграммы и формат правки: два разных выбора
  3. Freeform и Code (DSL) для flowchart и architecture
  4. Полный вход ERD и ручной редактируемый код
  5. Имена атрибутов и направления двух связей
  6. Кардинальность на двух учебных строках
  7. Одна ручная правка и новый эталон
  8. Отрицательные пробы и проверка результата
  9. Частые вопросы
Обзоры

Обзор Eraser AI: схемы и диаграммы из описания

10 ноября 2026 · 8 минут чтения

Обзор Eraser AI: схемы и диаграммы из описания строятся на одном холсте, где текст описания превращается в редактируемую диаграмму. Документация проекта описывает три способа правки: промпты ИИ, исходный код diagram-as-code и графический интерфейс. Ниже — разбор режимов, полный учебный вход ERD и проверка результата.

Холст, текст и диаграмма: роли трёх слоёв

На странице продукта eraser.io/ai заявлена генерация диаграмм на бесконечном холсте: облачная архитектура, схемы баз данных и другое создаются по описанию или вставленному коду. Там же перечислены три действия: создать диаграмму, итерировать правки с ИИ, оформить конспект технического документа. Документация quickstart уточняет порядок: вставьте меню через /, выберите пункт, опишите систему обычным языком, нажмите генерацию. Пример из quickstart — веб-приложение за API-шлюзом, где Lambda пишет в Postgres и публикует события в очередь, которую читают три воркера.

В нашем упражнении текст задаёт users, courses и enrollments, а ручной DSL фиксирует их имена и связи. Холст при фактическом открытии покажет схему; результат рендера в этой статье не наблюдался.

Практический вывод: описание задаёт структуру, холст даёт быструю правку расположения, а исходный код фиксирует точные имена сущностей и связей. В учебном примере ниже генерация и рендер не запускались; код и ожидаемая структура заданы редакцией вручную. Для проверяемой схемы данных важнее всего третий слой, поскольку он читается построчно.

Тип диаграммы и формат правки: два разных выбора

Документация ai-diagrams перечисляет доступные типы: sequence, entity relationship, cloud architecture и flow chart. Тип можно выбрать вручную, а при пропуске Eraser AI подберёт подходящий по входу. Этот выбор отвечает на вопрос «что изображено».

Формат правки отвечает на другой вопрос — «чем я это меняю». Документация ai-diagrams прямо разделяет: архитектурные диаграммы и блок-схемы относятся к freeform, если формат диаграммы команды не выставлен в Code (DSL); остальные типы относятся к diagram-as-code. То есть один и тот же flowchart может существовать в двух режимах, и от режима зависит, получите вы текстовый исходник или свободную композицию.

Вопрос Что выбирает Где задаётся
Что изображено Тип диаграммы Меню типа при генерации
Чем править Формат: freeform или Code (DSL) Настройки формата команды
Как хранить Исходный код или картинка Решение читателя при экспорте

Для нашего упражнения выбран ERD. Дальше проверяем текстовый код по исходной схеме, без предположений о результате конкретного вызова генератора.

Freeform и Code (DSL) для flowchart и architecture

Перед началом работы определите, какой артефакт нужно передать коллеге: редактируемый холст, текстовый код или изображение. Для примера ниже выбран ERD с исходным DSL; сравнивать версии будем по тексту сущностей и связей.

Для нашей версии схемы сохраните отдельный текст до добавления started_at. Тогда сравнение покажет одну новую строку внутри enrollments. Переименование users или новая связь означали бы дополнительное изменение, которое нужно разобрать.

Доступность DSL для flowchart и architecture проверяйте по формату команды. Наш ручной ERD-код приведён ниже целиком.

Полный вход ERD и ручной редактируемый код

Учебный вход описывает схему записи на курсы. Сущность users: id — первичный ключ, name — имя. Сущность courses: id — первичный ключ, title — название. Сущность enrollments: id — первичный ключ, user_id — ссылка на users.id, course_id — ссылка на courses.id. Каждая запись enrollments относится ровно к одному пользователю и одному курсу; пользователь и курс могут встречаться в нескольких записях. Полей оплаты, оценок и электронной почты нет.

Промпт для генерации:

ТЕКСТ2 строки
Исходная схема: users содержит id (первичный ключ) и name; courses содержит id (первичный ключ) и title; enrollments содержит id (первичный ключ), user_id (ссылка на users.id) и course_id (ссылка на courses.id). Каждая запись enrollments относится ровно к одному пользователю и одному курсу. Пользователь и курс могут иметь несколько записей. Полей оплаты, оценок и электронной почты нет.
Построй Entity Relationship Diagram в Eraser DSL строго по этой схеме. Сохрани три сущности, семь перечисленных атрибутов и две связи на уровне атрибутов many-to-one. Не добавляй поля и таблицы по догадке. Покажи редактируемый код. Подписи pk и fk служат метаданными диаграммы; исполнение ограничений базы данных в этой задаче не происходит.

Ручной эталон в синтаксисе Eraser DSL:

ТЕКСТ15 строк
users {
  id string pk
  name string
}
courses {
  id string pk
  title string
}
enrollments {
  id string pk
  user_id string fk
  course_id string fk
}
enrollments.user_id > users.id
enrollments.course_id > courses.id

Документация erd-syntax объясняет устройство этого текста: сущности соответствуют таблицам и содержат атрибуты, имя сущности уникально, определение состоит из имени и фигурных скобок. Атрибут задаётся именем, необязательным типом и необязательными метаданными через пробел. Связи показывают отношения на уровне атрибутов, а запись вида users.teamId > teams.id читается как ссылка атрибута на атрибут другой сущности.

Имена атрибутов и направления двух связей

Проверка начинается с имён. В эталоне семь атрибутов: users.id, users.name, courses.id, courses.title, enrollments.id, enrollments.user_id, enrollments.course_id. Каждое имя встречается в исходном описании. Ссылочные атрибуты названы по целевой сущности: user_id ведёт к users, course_id ведёт к courses.

Направление связи задаётся знаком. Документация erd-syntax приводит таблицу соединителей: < означает one-to-many, > означает many-to-one, - означает one-to-one, <> означает many-to-many. В эталоне обе строки используют >: enrollments.user_id > users.id и enrollments.course_id > courses.id. Читается это так: много записей enrollments ссылаются на одну запись users и на одну запись courses.

Строка связи Знак Кардинальность Смысл
enrollments.user_id > users.id > many-to-one Много записей на одного пользователя
enrollments.course_id > courses.id > many-to-one Много записей на один курс

Ошибка направления ломает модель: запись users.id > enrollments.user_id описывает обратное отношение и меняет кардинальность. Документация erd-syntax предупреждает и о другом: имя, не определённое ранее как сущность или атрибут, приводит к созданию новой сущности или атрибута с этим именем. Опечатка в имени цели порождает лишний объект.

Кардинальность на двух учебных строках

Учебные данные: users — одна строка U1 с именем Оля. courses — две строки, C1 «Зима» и C2 «Лето». enrollments — две строки: E1 связывает U1 с C1, E2 связывает U1 с C2.

Из этих строк видно, почему связь не one-to-one. Один пользователь U1 встречается в двух записях enrollments, значит со стороны users отношение «один ко многим». Со стороны enrollments каждая запись ссылается ровно на одного пользователя, значит many-to-one. Знак > в эталоне описывает именно это направление.

Второй вывод касается курса. Курс C1 встречается в записи E1, курс C2 — в записи E2. Один курс может собирать несколько записей, и структура это допускает. Проверка заданной структуры показывает соответствие входу; качество нормализации конкретной базы она не доказывает.

Третий вывод — про отсутствующие поля. В описании нет оплаты, оценок и электронной почты, и в эталоне их нет. Если генерация добавила такие атрибуты, модель разошлась с входом.

Одна ручная правка и новый эталон

Правка: добавить started_at string только в сущность enrollments. Новый эталон — три сущности, восемь атрибутов, те же две связи. Остальные сущности не меняются, новые связи не появляются.

Порядок действий после правки:

  1. Внесите строку started_at string внутрь блока enrollments.
  2. Пересчитайте атрибуты: было семь, стало восемь.
  3. Проверьте, что обе строки связей сохранили знак > и имена целей.
  4. Убедитесь, что число сущностей осталось равным трём.
  5. Сохраните исходный код отдельно от экспортированной картинки.

Последний пункт важен по существу. Исходный код и картинка — разные артефакты: код можно править и сравнивать, изображение фиксирует один снимок состояния. Документация erd-syntax добавляет деталь про метаданные: всё после типа показывается как написано, включая pk, fk и unique not null. Эти подписи остаются метаданными диаграммы и не исполняют ограничения базы данных.

Отрицательные пробы и проверка результата

Отрицательные пробы показывают, что модель разошлась с входом.

Первая: связь enrollments.id > users.id вместо enrollments.user_id > users.id. Картинка может выглядеть аккуратно, а ссылка ведёт не тем атрибутом. Проверка — сверка имени атрибута в строке связи с описанием.

Вторая: добавленные сущности payments или атрибуты email. Вход их не содержит, значит модель расширена по догадке. Проверка — пересчёт сущностей и атрибутов против исходного списка.

Третья: опечатка userss.id. Документация erd-syntax допускает автоматическое создание неописанной сущности из связи, поэтому четвёртая сущность в результате означает отказ в проверке. Итоговый чек-лист: три сущности, семь атрибутов до правки, восемь после, две связи со знаком >, имена целей совпадают с описанием, лишних полей нет.

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

Что такое Eraser AI и для чего он нужен?
Это среда для технических диаграмм и документации. В нашем упражнении она используется для схемы записи на курсы с тремя сущностями и двумя связями.

Чем freeform отличается от Code (DSL)?
Freeform редактируют на холсте, Code (DSL) предоставляет текстовый исходник. Для flowchart и architecture формат зависит от настройки команды.

Как получить редактируемый код для блок-схемы?
Проверьте формат команды: для текстового исходника нужен Code (DSL). Сохраните исходник отдельно от изображения.

Как проверить кардинальность связи в ERD?
В нашем примере enrollments.user_id > users.id. Две записи E1/E2 принадлежат U1, а каждая запись ссылается на одного пользователя. Проверьте знак и оба имени атрибутов.

Что делать, если генерация добавила лишние сущности?
Сверьте имена с исходной схемой. В нашем примере userss нужно исправить на users, а добавленную payments удалить. После правки пересчитайте сущности, атрибуты и связи.

Читайте также

3 материала