Этап 5 из 15 · ≈ 6 ч

Моделирование данных

Основа с Junior

Таблицы и связи, нормализация, ключи и ограничения, миграции схемы.

Что важно знать

  • Связи: один ко многим — внешний ключ, многие ко многим — таблица связи.
  • Нормализация убирает дублирование; денормализация — осознанно ради чтения.
  • Ограничения в базе надёжнее проверок в коде: NOT NULL, UNIQUE, FOREIGN KEY, CHECK.
  • Ключи: суррогатные (bigint, UUIDv7) против естественных.
  • Миграции — версионированные скрипты (Flyway, Liquibase, Alembic); изменения схемы — по шагам, совместимым со старым кодом.
  • Деньги — в целых копейках или decimal, не в float.

Критерии освоения

Junior ≈ 6 ч

  • Проектирует схему со связями один ко многим и многие ко многим и внешними ключами
  • Использует ограничения NOT NULL, UNIQUE, CHECK для целостности

Практика. Спроектировать схему интернет-магазина (пользователи, товары, заказы, позиции, оплаты) с ограничениями.

Middle ≈ 6 ч

  • Осознанно денормализует данные под нагрузку чтения
  • Пишет миграции схемы, совместимые с выкаткой без простоя

Практика. Переименовать колонку и разделить таблицу в работающей системе по схеме expand–contract без простоя.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Какой JOIN вернёт все строки левой таблицы и совпавшие из правой (NULL там, где совпадений нет)?Junior

LEFT JOIN возвращает все строки левой таблицы и совпавшие из правой; где совпадений нет — в колонках правой NULL.

Полный разбор
Что такое нормализация и когда оправдана денормализация?Middle

Нормализация — каждый факт хранится в одном месте: нет дублей, а значит нет аномалий обновления. Денормализация — сознательное дублирование ради быстрого чтения.

Полный разбор
Чем HAVING отличается от WHERE?Junior

WHERE фильтрует строки до группировки, HAVING — группы после агрегации. Условие на count() или sum() — только в HAVING.

Полный разбор
Что требуют первые три нормальные формы?Middle

1НФ — атомарные значения, нет списков в ячейке. 2НФ — нет частичной зависимости неключевых полей от части составного ключа. 3НФ — нет транзитивных зависимостей (неключевое поле не зависит от другого неключевого).

Полный разбор
Что вернёт INNER JOIN?Junior

INNER JOIN возвращает только пары строк, удовлетворяющие условию ON. Строки без пары в результат не попадают.

Полный разбор
Чем опасно объявление внешнего ключа с ON DELETE CASCADE?Middle

Удаление одной строки может рекурсивно удалить тысячи связанных строк по цепочке внешних ключей — и это не видно из кода приложения.

Полный разбор
Чем primary key отличается от unique-ограничения?Junior

Первичный ключ — главный идентификатор строки: уникален, NOT NULL, один на таблицу, на него ссылаются внешние ключи. UNIQUE — дополнительная гарантия уникальности, таких может быть много.

Полный разбор
Что обеспечивает foreign key?Junior

Внешний ключ гарантирует ссылочную целостность: нельзя сослаться на несуществующую строку и нельзя удалить строку, на которую ссылаются (если не задано иное).

Полный разбор

Разборы темы

← Вся карта «Backend-разработчик»

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования