← На главную

Агент и работа
с данными

Модуль 4 — SQL-схемы, ER-диаграммы, миграции, профилирование   70% практика

Программа обучения системных аналитиков работе с ИИ-агентами
Практика на DigitalWallet + Banking-App

Что умеет агент с данными

🗄️
SQL-схемы
Читает EF Core, Room, Exposed — восстанавливает полную картину данных
📊
ER-диаграммы
Строит Mermaid/PlantUML: связи, кардинальности, индексы
🔍
Профилирование
Анализ качества: NULL, распределения, аномалии, дубликаты
📝
Миграции
Описание на языке → миграционный скрипт SQL, EF Core, Flyway
🤝
Data-контракты
Сверка моделей между сервисами — типы, поля, семантика

Как агент «видит» модель данных

От ORM-кода до полной картины связей и ограничений

📄
Entity-классы
Wallet, Transaction,
Currency, User
+
⚙️
DbContext
OnModelCreating,
Fluent API
+
📋
Миграции
Индексы, ограничения,
seed data
=
📊
Полная модель
Сущности, связи,
типы, ограничения

Агент собирает информацию из всех источников сразу — то, на что аналитику нужно несколько часов ручного анализа

Сценарий: ER-диаграмма из кода

C#
DigitalWallet: ER из EF Core моделей
В проекте нет ER-диаграммы — только EF Core entities и DbContext
«Найди все EF Core entity-классы и DbContext. Проанализируй: сущности, свойства (имя, тип, nullable), связи (FK, навигационные свойства), индексы и ограничения из Fluent API. Построй ER-диаграмму в Mermaid. Для каждой связи — кардинальность. Сохрани в er-diagram.md»
↻ Итерация: «Добавь к каждой сущности бизнес-комментарий и выдели поля денежных сумм — какой тип данных?»
✓ Mermaid ER с 4 сущностями, 6 связями, типами и бизнес-комментариями. Суммы — decimal(18,2) ✓. Выявлено: нет soft-delete, нет аудит-полей (CreatedAt, UpdatedAt) у транзакций.

Результат: ER-диаграмма

👤 User
Id PK int
FullName string
Email string
Владелец кошельков
👛 Wallet
Id PK int
UserId FK int
CurrencyId FK int
Balance decimal(18,2)
Счёт в определённой валюте
💱 Currency
Id PK int
Code string(3)
Name string
Справочник валют
💸 Transaction
Id PK int
WalletId FK int
Amount decimal(18,2)
Type enum
Операция пополнения/списания
User 1 ——→ N Wallet Currency 1 ——→ N Wallet Wallet 1 ——→ N Transaction
Пробелы:
  • Нет soft-delete (IsDeleted) — физическое удаление
  • Нет аудит-полей CreatedAt, UpdatedAt у транзакций
  • Balance без оптимистичной блокировки (concurrency token)

Миграции и профилирование

📝 Генерация миграций

Описание на естественном языке → готовый скрипт

-- Запрос: «Добавь аудит-поля ко всем таблицам»
ALTER TABLE Transactions
  ADD CreatedAt datetime2 NOT NULL
    DEFAULT GETUTCDATE();
ALTER TABLE Transactions
  ADD UpdatedAt datetime2 NULL;

🔍 Профилирование данных

Агент подключается к БД и анализирует качество:

  • NULL-заполненность по полям
  • Транзакции с нулевыми суммами?
  • Кошельки без владельцев?
  • Дубликаты валют в справочнике?
  • Распределение сумм (аномалии)

Через MCP-сервер или CLI: sqlcmd, psql

Data-контракты между системами

Сверка моделей: DigitalWallet (EF Core) ↔ Banking-App (Room)

DigitalWallet (backend)

Balance decimal
Currency enum
TxType enum
CreatedAt datetime2
—
✓ → ⚠ → ⚠ → ✓ → ✕

Banking-App (mobile)

balance MoneyAmount
currency String
type sealed class
timestamp Long
qrPayment QrData

✓ Прямое соответствие   ⚠ Конвертация типа   ✕ Нет аналога в API

Практика

3 задания на двух проектах

📊 ER + миграция

Построить ER-диаграмму DigitalWallet из EF Core моделей (по сценарию). Дополнительно: сгенерировать миграцию для добавления аудит-полей CreatedAt, UpdatedAt ко всем сущностям.

⏱ 30 мин · DigitalWallet

🔄 ER + сравнение

Построить ER-диаграмму Banking-App из Room-сущностей. Сравнить модель данных мобильного приложения с серверной (DigitalWallet) — выявить расхождения в гранулярности.

⏱ 30 мин · Banking-App

🔍 Профилирование

Если доступна тестовая БД — попросить агента проанализировать качество данных: нулевые суммы, сиротские записи, дубликаты в справочниках.

⏱ 20 мин · Опционально

Обсуждение результатов

  • Какие пробелы в модели данных нашёл агент?
  • Совпала ли ER-диаграмма с вашим пониманием проекта?
  • Где были расхождения между DigitalWallet и Banking-App?
  • Насколько корректной была сгенерированная миграция?
  • Какие типы данных в финтехе требуют особого внимания?

Итоги Модуля 4

  • ORM-анализ: агент читает EF Core, Room, Exposed — восстанавливает полную картину данных
  • ER-диаграммы: один промпт = Mermaid-диаграмма с сущностями, связями, типами и пробелами
  • Миграции: описание словами → готовый SQL/EF Core скрипт
  • Профилирование: анализ качества данных — NULL, аномалии, дубликаты
  • Data-контракты: сверка моделей между системами — несовместимости типов, пропущенные поля
Далее → Модуль 5: Создание собственных агентов, скилов и команд — Agents, Skills, Commands, проектный онбордер

Домашнее задание

Применить навыки модуля 4 на своём рабочем проекте

1
ER-диаграмма своего сервиса ⏱ 30 мин
Выбрать сервис или модуль, где ER-диаграмма устарела или отсутствует. Попросить агента построить ER в Mermaid из ORM-моделей. Проверить: все ли сущности найдены, верны ли связи и кардинальности.
Например: сервис платежей, модуль заказов, справочники
2
Сгенерировать и проверить миграцию ⏱ 25 мин
Описать словами планируемое изменение в модели данных. Попросить агента сгенерировать миграционный скрипт. Проверить: учёл ли DEFAULT-значения, nullable, существующие данные, обратимость.
Например: «добавить статус к заказам» или «разделить ФИО на три поля»
3
Найти проблемы в модели данных ⏱ 20 мин
Попросить агента проанализировать модель данных и выявить архитектурные проблемы: нет soft-delete, нет аудит-полей, денежные суммы не в decimal, нет индексов на FK. Зафиксировать: что нашёл → что реально актуально → что ложное срабатывание.
Применяем навык верификации из модуля 3 — не верим агенту на слово

Если рабочий проект недоступен — используйте DigitalWallet или Banking-App из занятия