Claude/ChatGPT
Универсальный вариант для проектирования схем, написания SQL, оптимизации запросов. Просто вставляй код и объясняй проблему.

Базы данных — одно из самых болезненных мест в разработке. Нормализация, индексы, миграции, N+1 запросы, explain plan… Всё это можно делать руками и тратить часы, или делегировать AI и тратить минуты.
В 2026 году AI умеет:
EXPLAIN ANALYZE и предлагать индексыЭто не замена понимания БД — это суперзарядка для тех, кто понимает.
Самое мощное применение AI в базах — это трансформация бизнес-требований в готовую схему. Не нужно держать в голове синтаксис — просто описываешь что нужно.
Спроектируй Prisma schema для SaaS-платформы управления задачами.
Требования:- Пользователи могут состоять в нескольких организациях (разные роли)- Организации имеют проекты, проекты — задачи- Задачи: название, описание, статус, приоритет, дедлайн, исполнитель- Комментарии к задачам с поддержкой вложенности (replies)- Вложения к задачам (URL + метаданные)- Теги и лейблы- Аудит-лог всех изменений- Подписки/тарифы для организаций
Стек: PostgreSQL, Prisma ORM, TypeScript.Используй best practices: createdAt/updatedAt везде, soft delete через deletedAt, UUID как primary keys.Claude или ChatGPT выдадут полную Prisma schema с отношениями, индексами и перечислениями. Дальше уточняешь итеративно:
Добавь поддержку подзадач (subtasks). Задача может быть дочерней для другой задачи — неограниченная вложенность.Добавь таблицу для webhook-подписок организации на события (task.created, comment.added и т.д.)Drizzle — альтернатива Prisma с другим подходом. AI отлично справляется с обоими:
Перепиши эту Prisma schema на Drizzle ORM с PostgreSQL.Используй Drizzle Kit для миграций.Типы должны быть полностью TypeScript-safe.
[вставить Prisma schema]Сгенерируй CREATE TABLE statements для PostgreSQL.Нужны таблицы: users, organizations, projects, tasks.Включи: foreign keys, индексы на часто фильтруемые поля, CHECK constraints для статусов/приоритетов.Добавь комментарии к каждой таблице и колонке.ERD (Entity-Relationship Diagram) — схема базы данных в виде диаграммы. Раньше нужно было вручную рисовать в Lucidchart или draw.io. Сейчас:
Нарисуй ERD для схемы выше в формате Mermaid erDiagram.Покажи все связи: один-ко-многим, многие-ко-многим.Результат — Mermaid-код, который рендерится прямо в GitHub, Notion, Obsidian:
erDiagram User { uuid id PK string email UK string name timestamp createdAt } Organization { uuid id PK string name string slug UK timestamp createdAt } OrganizationMember { uuid userId FK uuid organizationId FK enum role } Project { uuid id PK uuid organizationId FK string name timestamp createdAt } Task { uuid id PK uuid projectId FK uuid assigneeId FK string title enum status enum priority timestamp deadline timestamp createdAt }
User ||--o{ OrganizationMember : "состоит в" Organization ||--o{ OrganizationMember : "имеет" Organization ||--o{ Project : "содержит" Project ||--o{ Task : "имеет" User ||--o{ Task : "назначен на"Сервис dbdiagram.io использует свой DBML синтаксис. AI генерирует его:
Напиши DBML код для dbdiagram.io для следующей схемы: [описание]Вставляешь в dbdiagram.io — получаешь красивую интерактивную диаграмму, которую можно экспортировать в PDF, PNG или SQL.
После изменения schema.prisma скажи AI:
У меня изменилась Prisma schema — добавил таблицу Webhook и поле metadata к Task.Какую команду запустить для создания миграции?Напиши имя миграции в snake_case.Ответ: npx prisma migrate dev --name add_webhooks_and_task_metadata
Но AI может сделать больше — проверить, нет ли проблем с миграцией:
Вот SQL который сгенерировал Prisma для миграции: [вставить SQL]
Проверь:1. Нет ли потенциальной потери данных2. Правильно ли настроены CASCADE на foreign keys3. Есть ли необходимые индексы4. Нужны ли дополнительные DEFAULT значения для существующих строкИногда Prisma Migrate недостаточно. Скажи AI что нужно:
Напиши SQL-миграцию для PostgreSQL:1. Переименовать колонку user_id в author_id в таблице comments2. Не потерять данные3. Не блокировать таблицу на prod (используй concurrent where возможно)4. Добавить rollback-скриптSeed data — одна из самых нудных вещей. AI справляется за секунды:
Напиши seed.ts для Prisma с реалистичными тестовыми данными:- 3 организации (разные тарифы: free, pro, enterprise)- По 5-10 пользователей в каждой- По 3-5 проектов на организацию- По 10-30 задач на проект (разные статусы и приоритеты)- Комментарии к части задач- Используй @faker-js/faker для реалистичных имён и текстов- Пароли захешируй через bcrypt (пароль: "password123" для всех)Дополнение:
Добавь детерминированный seed (фиксированный randomSeed в faker) чтобы данные были одинаковые при каждом запуске.Это один из самых ценных сценариев. У тебя есть медленный запрос — AI помогает его починить.
EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)SELECT t.*, u.name as assignee_name, p.name as project_nameFROM tasks tLEFT JOIN users u ON t.assignee_id = u.idLEFT JOIN projects p ON t.project_id = p.idWHERE t.organization_id = '...' AND t.status != 'done' AND t.deadline < NOW() + INTERVAL '7 days'ORDER BY t.priority DESC, t.deadline ASCLIMIT 50;Вот запрос и его EXPLAIN ANALYZE output. Время выполнения: 847ms.Таблица tasks: ~500k строк. users: ~50k. projects: ~10k.
[вставить запрос][вставить EXPLAIN ANALYZE JSON]
Что замедляет запрос? Какие индексы добавить? Можно ли переписать запрос эффективнее?AI проанализирует plan, найдёт Sequential Scan там где должен быть Index Scan, и предложит:
CREATE INDEX командыЧастая боль в ORM. AI умеет её находить и чинить:
Вот мой Prisma запрос. Есть подозрение на N+1.Как переписать через include/select чтобы данные тянулись одним запросом?
const tasks = await prisma.task.findMany({ where: { projectId },});
// Потом в цикле:for (const task of tasks) { const comments = await prisma.comment.findMany({ where: { taskId: task.id }, });}Claude/ChatGPT
Универсальный вариант для проектирования схем, написания SQL, оптимизации запросов. Просто вставляй код и объясняй проблему.
Cursor
AI прямо в редакторе. Понимает контекст твоей schema.prisma и генерирует запросы под неё. Отличен для написания репозиторного слоя.
Drizzle Studio + AI
Drizzle Kit имеет встроенный Studio (веб-интерфейс для БД). В связке с Cursor — мощный дуэт: видишь данные и пишешь запросы с AI.
PgAdmin + AI
Вставляй медленные запросы в чат AI прямо из PgAdmin. Или используй расширение для VS Code — Database Client.
Chat2DB — IDE для баз данных с встроенным AI. Пишешь запрос на естественном языке, он конвертирует в SQL. Поддерживает PostgreSQL, MySQL, MongoDB, Redis.
DataGrip + AI Assistant — JetBrains IDE для БД с AI-автодополнением SQL. Платный, но мощный.
Outerbase — веб-интерфейс для БД с AI-чатом. Спрашиваешь “покажи топ-10 пользователей по количеству задач” — получаешь результат и SQL.
Создадим полноценную схему для task-management SaaS с нуля через диалог с AI.
Промпт:
Я строю SaaS для управления проектами (аналог Jira/Linear).
Основные сущности:- Workspace (организация) с подпиской (free/pro/enterprise)- Пользователи с ролями внутри workspace (owner, admin, member, viewer)- Проекты внутри workspace- Issues (задачи) с кастомными статусами на уровне проекта- Labels, Milestones, Sprints- Комментарии с @mentions- Интеграции (GitHub, Slack — хранить OAuth токены)
Спроектируй Prisma schema для PostgreSQL.Best practices: UUID PKs, timestamps, soft delete там где нужно, индексы.Добавь:1. Activity log — каждое изменение issue пишется в лог (какое поле, старое значение, новое)2. Уведомления — пользователь подписывается на issue или проект3. Кастомные поля для issues (тип: text, number, date, select, multiselect)
Не ломай существующую схему — только добавляй.Просмотри схему и найди потенциальные проблемы:1. Где могут быть проблемы с производительностью при большом объёме данных?2. Какие индексы обязательно нужны для типичных запросов?3. Есть ли риск циклических зависимостей в foreign keys?4. Где нужен CASCADE DELETE, а где SET NULL?Напиши prisma/seed.ts:- 2 workspace (free и pro)- 5 пользователей, распределённых по workspace- 3 проекта в pro workspace, 1 в free- 50 issues с реалистичными данными- 20 комментариев- Используй @faker-js/fakerНапиши Prisma-запросы для:1. Dashboard: все открытые issues назначенные на меня, сгруппированные по проекту2. Inbox: непрочитанные уведомления с пагинацией3. Activity feed: последние 50 событий в workspace с деталями
Оптимизируй: не должно быть N+1 запросов.Напиши SQL/Prisma запрос для:
Получить статистику по workspace за последние 30 дней:- Количество созданных issues по дням- Топ-5 пользователей по закрытым issues- Среднее время закрытия issue (от создания до статуса done)- Количество issue по приоритетам
БД: PostgreSQL, ORM: PrismaЗапрос выполняется 2.3 секунды. Оптимизируй.
Схема: [вставить relevent таблицы]Запрос: [вставить]EXPLAIN ANALYZE: [вставить output]
Данные: issues ~1M строк, users ~100k, workspaces ~10kНапиши безопасную миграцию PostgreSQL:
Нужно: добавить полнотекстовый поиск к таблице issues(поля: title, description)
Требования:- Не блокировать таблицу (CONCURRENTLY где возможно)- Использовать GIN индекс с tsvector- Добавить rollback скрипт- Миграция должна быть идемпотентной (IF NOT EXISTS)Мой Prisma запрос возвращает дубликаты. Разберись почему.
[вставить запрос][вставить пример данных с дубликатами]
Схема отношений:Task hasMany Labels (many-to-many через _TaskLabels)Task hasMany CommentsДавай схему контекстом. Всегда вставляй relevent части Prisma schema или CREATE TABLE — AI строит точный запрос под твою структуру, не угадывает.
Итерируй, не пиши огромные промпты. Начни с базовой схемы, потом добавляй фичи. Огромный промпт = размытый результат.
Проверяй индексы. AI часто добавляет индексы на foreign keys — это правильно. Но иногда забывает composite индексы для запросов с несколькими WHERE условиями. Спроси отдельно.
Используй EXPLAIN для проверки. После AI-оптимизации запускай EXPLAIN ANALYZE снова — убедись что план изменился. Иногда AI предлагает индекс который PostgreSQL всё равно не использует.
Не доверяй слепо. AI может предложить правильный индекс, но неверный тип (B-tree vs GIN для массивов и full-text). Всегда читай что он объясняет, а не только копируй код.