← Все практикумы

02 · Данные

Данные приложения

Заказчик
мебельная фабрика «Спинка»
Вы делаете
слой данных для учёта заказов

Проектируете слой данных внутреннего приложения: схему PostgreSQL, запросы и миграции, которые меняют структуру базы без потери накопленного.

Маршрут

10 заданий

Время

30–40 ч

Бесплатно

первые 4

около 12 ч работы с проверкой и рецензией

Уровень: от junior. Нужно уметь: писать небольшие приложения на Python, простые SQL-запросы, запускать Docker

Начать бесплатно · Python

Чему научитесь

  • Выражать предметную модель схемой и ограничениями
  • Писать запросы с соединениями и оценивать их стоимость
  • Выпускать изменение схемы по фазам

Что будет к концу практикума

Слой данных приложения заказов на PostgreSQL в вашем Git-репозитории: таблицы с проверками, отчёты, миграции, которые меняли базу с уже накопленными данными, и план поэтапного выпуска. Плюс отдельный проект, где вы сами меняете базу работающей программы.

Задания по порядку

Задания развивают один Git-репозиторий: следующее приходит через softpractice update поверх вашего принятого решения. Отдельный проект получает только задание с пометкой «новый проект». Код вы пишете локально, в своём редакторе. Под названием каждого задания — навык, который оно тренирует.

Задания 1–4 — бесплатно

Без подписки: каждое решение проходит тесты и получает рецензию по вашему коду.

  1. 1Модель заказаПроектировать таблицы для заказов: что получает свой ключ, как таблицы связаны и почему цена в заказе не должна меняться вместе с каталогом.5 ч
  2. 2Допустимые данныеРешать, какие проверки данных делает сама база — NOT NULL, CHECK, внешние ключи, — а какие код приложения, и объяснять свой выбор.3 ч
  3. 3Заказ целикомСохранять заказ со всеми позициями в одной транзакции — целиком или никак — и при этом сообщать понятную причину отказа.2 ч
  4. 4Правильный отчётПисать SQL-отчёты с JOIN и GROUP BY, которые не задваивают числа и не теряют строки без связанных записей.2 ч

Дальше — по подписке

Подписка открывает остальные задания и весь каталог практикумов.

  1. 5Рабочий списокДелать постраничный список, в котором заказы не повторяются и не пропадают, даже если у них одинаковое время создания.2 ч
  2. 6Стоимость запросаЧитать план запроса PostgreSQL, ускорять медленный запрос индексом и понимать, чем приходится платить за этот индекс.2,5 ч
  3. 7Плановая дата отгрузкиДобавлять поле в базу, где уже есть данные, не придумывая значений для старых записей, и проверять миграцию и на новой, и на заполненной базе.2,5 ч
  4. 8Частичные отгрузкиМенять структуру таблиц вместе с накопленными данными: переносить старые записи так, чтобы перенос можно было безопасно запустить повторно.4 ч
  5. 9Выпуск по фазамВыпускать изменение базы по шагам, пока старая и новая версии приложения работают одновременно, и заранее продумывать, как восстановиться при сбое.4 ч
  6. 10Перенос навыка: история приоритета обращенийновый проектСамостоятельно добавить историю изменений в работающую программу: перенести старые данные без выдуманного прошлого и посчитать отчёт без двойного счёта.4,5 ч

Начните с первых 4 заданий бесплатно

Зарегистрируйтесь, установите CLI и скачайте starter-проект. Если формат подойдёт, подписка откроет продолжение.

Начать бесплатно · Python