Архитектура и системы
Схема базы данных онлайн
«Схема БД» показывает физическую схему: реальные таблицы с SQL-типами, ограничениями, индексами и внешними ключами, проведёнными от колонки к колонке. Это то, что смотрят на ревью миграции, — а не разговор о предметной области.
Когда использовать
- Ревью миграции базы данных
- Документация таблиц одной подсистемы
- Разбор каскадного удаления и связей между таблицами
- Схема для нового разработчика: где лежат данные и как связаны
Как с ней работать в Dele
- До 5 таблиц с полным именем «schema.table». У колонки — имя, настоящий SQL-тип и чипы pk, unique, notNull; чип FK ставится автоматически.
- Показывается до 8 строк; скрытые колонки отмечайте полем more («+ N ещё») — ничего не обрезается молча. Индексы — только важные.
- Внешние ключи (до 6): дочерняя таблица и колонка → родительская таблица и колонка (по умолчанию id). Всегда указывайте onDelete — это первое, что ищет ревьюер.
- Таблицы не из схемы по умолчанию (public) группируются пунктирной рамкой схемы.
- Акцент — только на разрушительном ключе ON DELETE CASCADE и таблице, в которую идёт каскад. Нет каскада — нет акцента.
- Не рисуйте все колонки всех таблиц и не ставьте чипы на каждую строку.
Три способа собрать диаграмму
Словами. Откройте ИИ-ассистента в редакторе или подключите своего агента по MCP и опишите задачу, например:
«Нарисуй схему БД заказов в Postgres: customers, orders, order_items, products с типами колонок и внешними ключами. Удаление заказа каскадно удаляет позиции.»
В редакторе. Создайте диаграмму из шаблона «Схема БД», меняйте элементы на холсте и в панели справа — раскладка пересчитывается сама.
Кодом. Диаграмма — это JSON-спецификация. Её можно править в панели «Спецификация», генерировать скриптом и хранить в git.
Спецификация примера (JSON)
{
"type": "db-schema",
"title": "Схема магазина: public и billing",
"description": "Физическая схема магазина: заказы, позиции, товары и клиенты в public, счета в billing; удаление заказа каскадно удаляет его позиции.",
"defaultSchema": "public",
"tables": [
{
"id": "customers",
"name": "public.customers",
"columns": [
{
"name": "id",
"type": "uuid",
"pk": true
},
{
"name": "email",
"type": "text",
"unique": true,
"notNull": true
},
{
"name": "created_at",
"type": "timestamptz",
"notNull": true
}
]
},
{
"id": "orders",
"name": "public.orders",
"columns": [
{
"name": "id",
"type": "uuid",
"pk": true
},
{
"name": "customer_id",
"type": "uuid",
"notNull": true
},
{
"name": "status",
"type": "text",
"notNull": true
},
{
"name": "total",
"type": "numeric(12,2)",
"notNull": true
},
{
"name": "placed_at",
"type": "timestamptz",
"notNull": true
}
],
"indexes": [
"idx_orders_customer_id",
"idx_orders_status"
]
},
{
"id": "products",
"name": "public.products",
"columns": [
{
"name": "id",
"type": "uuid",
"pk": true
},
{
"name": "sku",
"type": "text",
"unique": true,
"notNull": true
},
{
"name": "name",
"type": "text",
"notNull": true
},
{
"name": "price",
"type": "numeric(12,2)",
"notNull": true
}
],
"more": 3,
"indexes": [
"uq_products_sku"
]
},
{
"id": "items",
"name": "public.order_items",
"focal": true,
"columns": [
{
"name": "id",
"type": "uuid",
"pk": true
},
{
"name": "order_id",
"type": "uuid",
"notNull": true
},
{
"name": "product_id",
"type": "uuid",
"notNull": true
},
{
"name": "qty",
"type": "integer",
"notNull": true
},
{
"name": "unit_price",
"type": "numeric(12,2)",
"notNull": true
}
]
},
{
"id": "invoices",
"name": "billing.invoices",
"columns": [
{
"name": "id",
"type": "uuid",
"pk": true
},
{
"name": "order_id",
"type": "uuid",
"notNull": true
},
{
"name": "issued_at",
"type": "timestamptz",
"notNull": true
}
]
}
],
"fks": [
{
"from": "orders",
"column": "customer_id",
"to": "customers",
"onDelete": "restrict"
},
{
"from": "items",
"column": "order_id",
"to": "orders",
"onDelete": "cascade",
"focal": true
},
{
"from": "items",
"column": "product_id",
"to": "products",
"onDelete": "restrict"
},
{
"from": "invoices",
"column": "order_id",
"to": "orders",
"onDelete": "restrict"
}
]
}Когда выбрать другой формат
- Обсуждение предметной области без SQL-деталей → ER-диаграмма
- Перемещение данных между системами и хранилищами → Поток данных по ролям
- Слои хранилища данных bronze, silver, gold → Медальон
Вопросы о формате
Чем схема БД отличается от ER-диаграммы?
Схема БД — физический уровень: реальные таблицы, SQL-типы, индексы и правила ON DELETE. ER-диаграмма описывает сущности и кратность связей без деталей реализации.
Что делать, если в таблице много колонок?
Показывается до восьми строк, а остальные отмечаются счётчиком «+ N». Выбирайте колонки, которые объясняют ключи и ограничения.
Поддерживаются ли несколько схем Postgres?
Да. Таблицы не из схемы по умолчанию объединяются пунктирной рамкой своей схемы, например billing.