Как учиться: инструменты курса, лабы, чтение схем
Моделирование данных нельзя выучить, только читая. Это навык проектирования, а навык ставится практикой: спроектировал схему, реализовал, увидел, где она ломается, исправил. Этот урок — про то, как устроена практическая часть курса и какими инструментами вы будете пользоваться.
Инструменты курса
Курсу не нужна тяжёлая инфраструктура. Достаточно двух вещей.
SQL-движок для практики. Бо́льшая часть курса работает с реляционными базами, и почти все примеры — это SQL: создание таблиц, ограничений, запросы. Подойдёт любая из доступных бесплатно:
- SQLite — самый лёгкий вариант. Это файл, не требует установки сервера, есть в составе Python (
import sqlite3). Идеален, чтобы быстро проверить идею схемы. - PostgreSQL — полноценная промышленная СУБД. Курс берёт её как референс-СУБД: её диалект SQL богат и близок к стандарту. Для большинства лаб удобнее всего.
- DuckDB — аналитическая СУБД, удобная для упражнений из второй половины курса (OLAP). Тоже работает из файла или в памяти.
Выбор не критичен. Различия диалектов в наших примерах минимальны, и где они есть — мы укажем.
Инструмент для рисования диаграмм. Модель сначала рисуют, потом кодируют. Удобные бесплатные варианты:
- dbdiagram.io — рисует ER-диаграммы из простого текстового описания, экспортирует в SQL DDL. Очень удобно для учёбы.
- draw.io (diagrams.net) — универсальный редактор схем, поддерживает нотацию Crow’s Foot.
- Mermaid — диаграммы как текст; поддерживает
erDiagram. Работает прямо в Markdown многих редакторов.
Чем именно рисовать — дело вкуса. Важно завести привычку: новая задача — сначала диаграмма, потом DDL.
Последняя стрелка часто ведёт назад: проверка показывает слабость модели, и цикл повторяется. Это норма. Моделирование — итеративный процесс, и курс отдельно разбирает это в модуле 2.
Как устроены лабы
В курсе есть сквозные лабораторные работы — практические задания, на которых вы строите модели сами. Они идут от простого к сложному и опираются друг на друга:
- Лаба «Нормализация грязной схемы». Дана одна плоская денормализованная таблица. Задача: найти проблемы, продемонстрировать аномалии на конкретных операциях и пошагово привести схему к нормальным формам.
- Лаба «ER-модель и OLTP-схема от требований». Дано текстовое ТЗ. Задача: построить ER-диаграмму, затем логическую модель с ключами, затем физический DDL с ограничениями целостности.
- Лаба «Star schema из аналитических требований». Дана нормализованная схема и список бизнес-вопросов. Задача: спроектировать аналитическую звезду.
- Лаба «Реализация SCD Type 2». Дана таблица измерения и поток изменений. Задача: реализовать хранение истории.
У каждой лабы есть критерий проверки — что именно должно получиться, чтобы считать её сделанной. Например, для лабы по нормализации: финальная схема в BCNF, соединение без потерь, все зависимости учтены. Лабы — это место, где теория становится навыком, поэтому не пропускайте их.
Делайте лабы своими руками, даже если решение кажется очевидным после прочтения теории. Разница между «понял, как читать» и «умею спроектировать» огромна, и обнаруживается она только когда садишься делать сам. Ошиблись в схеме — отлично: исправленная ошибка запоминается лучше любого правила.
Квизы и экзамены
После каждого урока — короткий квиз из четырёх вопросов на понимание. После каждого модуля — экзамен из шести вопросов, объединяющий темы модуля. Вопросы проверяют не память, а понимание: многие сформулированы как небольшие ситуации, где надо выбрать решение и обосновать его.
Относитесь к разбору вопроса серьёзнее, чем к самому выбору варианта. К каждому вопросу есть развёрнутое объяснение — почему верный вариант верен и почему каждый неверный неверен. Часто именно в разборе неверных вариантов прячется самое полезное: типичные заблуждения, на которых легко споткнуться.
Как читать схемы данных
Бо́льшую часть курса вы будете смотреть на диаграммы. Чтобы они приносили пользу, их надо уметь читать. Базовые правила.
Прямоугольник — это сущность (таблица). Внутри обычно перечислены атрибуты (колонки). Имя таблицы — сверху.
Линия между прямоугольниками — это связь. Самое важное в связи — её концы. В нотации Crow’s Foot (она же самая частая в индустрии) символ на конце линии говорит о кардинальности:
- «птичья лапка» (три расходящихся линии) — сторона «многие»;
- одна поперечная чёрточка — сторона «один»;
- кружок — участие необязательное (может быть ноль);
- чёрточка вплотную к сущности — участие обязательное (минимум один).
Эту диаграмму читают так: «один customer связан со многими order; один order принадлежит ровно одному customer». Детально нотации разбираются в модуле 3 — здесь достаточно понимать саму идею «концы линии несут смысл».
Подчёркнутый или помеченный атрибут — это ключ. Primary key (главный идентификатор строки) обычно выделяют. Атрибут со ссылкой на другую таблицу — это foreign key. Ключам посвящён модуль 5.
Главный навык чтения схемы — не разглядывать прямоугольники, а проследить связи: что с чем соединено, какая кардинальность, обязательна ли связь. Именно связи определяют, как данные можно соединять в запросах.
Диаграммы в этом курсе
В уроках курса вы видите диаграммы из простых блоков и стрелок. У каждого блока есть всплывающая подсказка — наведите курсор, и появится пояснение, что это за элемент. Подсказки — часть материала, не пропускайте их: в них вынесены детали, которые в основном тексте загромождали бы изложение.
Эти учебные диаграммы намеренно упрощены, чтобы показать одну идею за раз. «Настоящие» ER-диаграммы со строгой нотацией вы начнёте строить сами с модуля 3.
Типичные ошибки при изучении
Несколько ловушек, в которые попадают начинающие при изучении моделирования — зная их заранее, легче не попасть.
Учить определения наизусть, не понимая. Моделирование — это набор связанных идей, а не словарь терминов. Заученное определение «третьей нормальной формы» бесполезно, если не понимаешь, какую аномалию она устраняет. Всегда добивайтесь, чтобы за термином стояла понятная картина «зачем».
Пропускать диаграммы и подсказки. Диаграмма часто несёт идею компактнее абзаца текста, а подсказки к блокам содержат важные детали. Пробежать урок «по тексту», игнорируя визуальную часть, — значит потерять часть материала.
Не выполнять примеры кода. В уроках много блоков SQL с CREATE TABLE и запросами. Прочитать их глазами и выполнить руками — это два разных уровня усвоения. Активное чтение, когда вы повторяете пример в своей базе и ломаете его, даёт в разы больше.
Считать, что есть «один правильный ответ». Моделирование часто зависит от требований: один и тот же «адрес» в разных системах моделируется по-разному. Курс учит не зубрить рецепты, а принимать решения под задачу. Если урок говорит «зависит от требований» — это не уклончивость, а суть профессии.
Самая дорогая ошибка — бежать вперёд, не закрепив предыдущее. Моделирование кумулятивно: модуль про нормализацию опирается на ключи, ключи — на ER-моделирование. Пробел в раннем модуле не «рассосётся» — он будет мешать во всех последующих. Лучше потратить лишний час на закрепление, чем тащить непонимание дальше.
Как проходить курс
Несколько практических советов:
- Не торопитесь. Лучше один модуль с лабой, чем три модуля бегло. Моделирование требует, чтобы идея «улеглась».
- Держите под рукой SQL-движок. Увидели пример с
CREATE TABLE— выполните его сами, измените, посмотрите на ошибку. Активное чтение даёт в разы больше. - Возвращайтесь к карте курса из прошлого урока, когда теряете контекст.
- Делайте лабы и разбирайте квизы. Это не формальность, а основной механизм превращения чтения в навык.
Курс построен так, что модули опираются друг на друга. Пропустить модуль про ключи и сразу перейти к размерному моделированию не получится — там ключи используются на каждом шагу. Идите по порядку.
Попробуй сам
Подготовьте рабочее окружение прямо сейчас, чтобы не отвлекаться на это потом. Установите PostgreSQL или убедитесь, что у вас есть Python с модулем sqlite3. Создайте пустую базу и выполните в ней простой тест: команду CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT);, затем вставьте пару строк через INSERT и прочитайте их через SELECT. Удалите таблицу командой DROP TABLE test;. Это разминка: если эти четыре команды выполняются без ошибок — окружение готово, и все примеры курса вы сможете проверять руками. Заодно откройте dbdiagram.io и убедитесь, что сайт открывается — он понадобится со следующего модуля.