Learning Platform
Глоссарий Troubleshooting
Урок 01.03 · 16 мин
Начальный
learning-methodtoolsdiagrams

Как учиться: инструменты курса, лабы, чтение схем

Моделирование данных нельзя выучить, только читая. Это навык проектирования, а навык ставится практикой: спроектировал схему, реализовал, увидел, где она ломается, исправил. Этот урок — про то, как устроена практическая часть курса и какими инструментами вы будете пользоваться.

Инструменты курса

Курсу не нужна тяжёлая инфраструктура. Достаточно двух вещей.

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.

Рабочий цикл моделирования
ТребованияТекстовое описание задачи: что за система, какие данные, какие вопросы к ним. Откуда вообще берётся модель.
рисуем
ДиаграммаER-диаграмма в dbdiagram.io или draw.io: сущности, атрибуты, связи. Чертёж до кода.
кодируем
DDL и данныеSQL: CREATE TABLE с ключами и ограничениями, тестовые INSERT в SQLite или PostgreSQL.
проверяем
ЗапросыSQL-запросы, отвечающие на исходные вопросы. Если ответить тяжело — модель надо доработать.

Последняя стрелка часто ведёт назад: проверка показывает слабость модели, и цикл повторяется. Это норма. Моделирование — итеративный процесс, и курс отдельно разбирает это в модуле 2.

Как устроены лабы

В курсе есть сквозные лабораторные работы — практические задания, на которых вы строите модели сами. Они идут от простого к сложному и опираются друг на друга:

  • Лаба «Нормализация грязной схемы». Дана одна плоская денормализованная таблица. Задача: найти проблемы, продемонстрировать аномалии на конкретных операциях и пошагово привести схему к нормальным формам.
  • Лаба «ER-модель и OLTP-схема от требований». Дано текстовое ТЗ. Задача: построить ER-диаграмму, затем логическую модель с ключами, затем физический DDL с ограничениями целостности.
  • Лаба «Star schema из аналитических требований». Дана нормализованная схема и список бизнес-вопросов. Задача: спроектировать аналитическую звезду.
  • Лаба «Реализация SCD Type 2». Дана таблица измерения и поток изменений. Задача: реализовать хранение истории.

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

TIP

Делайте лабы своими руками, даже если решение кажется очевидным после прочтения теории. Разница между «понял, как читать» и «умею спроектировать» огромна, и обнаруживается она только когда садишься делать сам. Ошиблись в схеме — отлично: исправленная ошибка запоминается лучше любого правила.

Квизы и экзамены

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

Относитесь к разбору вопроса серьёзнее, чем к самому выбору варианта. К каждому вопросу есть развёрнутое объяснение — почему верный вариант верен и почему каждый неверный неверен. Часто именно в разборе неверных вариантов прячется самое полезное: типичные заблуждения, на которых легко споткнуться.

Как читать схемы данных

Бо́льшую часть курса вы будете смотреть на диаграммы. Чтобы они приносили пользу, их надо уметь читать. Базовые правила.

Прямоугольник — это сущность (таблица). Внутри обычно перечислены атрибуты (колонки). Имя таблицы — сверху.

Линия между прямоугольниками — это связь. Самое важное в связи — её концы. В нотации Crow’s Foot (она же самая частая в индустрии) символ на конце линии говорит о кардинальности:

  • «птичья лапка» (три расходящихся линии) — сторона «многие»;
  • одна поперечная чёрточка — сторона «один»;
  • кружок — участие необязательное (может быть ноль);
  • чёрточка вплотную к сущности — участие обязательное (минимум один).
Как читать связь один-ко-многим
customer (один)Сторона «один»: один клиент. На конце линии у этой сущности в нотации Crow's Foot стоит одна поперечная чёрточка.
1 : N
order (многие)Сторона «многие»: у одного клиента может быть много заказов. На конце линии у этой сущности стоит «птичья лапка».

Эту диаграмму читают так: «один customer связан со многими order; один order принадлежит ровно одному customer». Детально нотации разбираются в модуле 3 — здесь достаточно понимать саму идею «концы линии несут смысл».

Подчёркнутый или помеченный атрибут — это ключ. Primary key (главный идентификатор строки) обычно выделяют. Атрибут со ссылкой на другую таблицу — это foreign key. Ключам посвящён модуль 5.

Главный навык чтения схемы — не разглядывать прямоугольники, а проследить связи: что с чем соединено, какая кардинальность, обязательна ли связь. Именно связи определяют, как данные можно соединять в запросах.

Диаграммы в этом курсе

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

Эти учебные диаграммы намеренно упрощены, чтобы показать одну идею за раз. «Настоящие» ER-диаграммы со строгой нотацией вы начнёте строить сами с модуля 3.

Типичные ошибки при изучении

Несколько ловушек, в которые попадают начинающие при изучении моделирования — зная их заранее, легче не попасть.

Учить определения наизусть, не понимая. Моделирование — это набор связанных идей, а не словарь терминов. Заученное определение «третьей нормальной формы» бесполезно, если не понимаешь, какую аномалию она устраняет. Всегда добивайтесь, чтобы за термином стояла понятная картина «зачем».

Пропускать диаграммы и подсказки. Диаграмма часто несёт идею компактнее абзаца текста, а подсказки к блокам содержат важные детали. Пробежать урок «по тексту», игнорируя визуальную часть, — значит потерять часть материала.

Не выполнять примеры кода. В уроках много блоков SQL с CREATE TABLE и запросами. Прочитать их глазами и выполнить руками — это два разных уровня усвоения. Активное чтение, когда вы повторяете пример в своей базе и ломаете его, даёт в разы больше.

Считать, что есть «один правильный ответ». Моделирование часто зависит от требований: один и тот же «адрес» в разных системах моделируется по-разному. Курс учит не зубрить рецепты, а принимать решения под задачу. Если урок говорит «зависит от требований» — это не уклончивость, а суть профессии.

WARNING

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

Как проходить курс

Несколько практических советов:

  • Не торопитесь. Лучше один модуль с лабой, чем три модуля бегло. Моделирование требует, чтобы идея «улеглась».
  • Держите под рукой SQL-движок. Увидели пример с CREATE TABLE — выполните его сами, измените, посмотрите на ошибку. Активное чтение даёт в разы больше.
  • Возвращайтесь к карте курса из прошлого урока, когда теряете контекст.
  • Делайте лабы и разбирайте квизы. Это не формальность, а основной механизм превращения чтения в навык.
NOTE

Курс построен так, что модули опираются друг на друга. Пропустить модуль про ключи и сразу перейти к размерному моделированию не получится — там ключи используются на каждом шагу. Идите по порядку.

Попробуй сам

Подготовьте рабочее окружение прямо сейчас, чтобы не отвлекаться на это потом. Установите PostgreSQL или убедитесь, что у вас есть Python с модулем sqlite3. Создайте пустую базу и выполните в ней простой тест: команду CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT);, затем вставьте пару строк через INSERT и прочитайте их через SELECT. Удалите таблицу командой DROP TABLE test;. Это разминка: если эти четыре команды выполняются без ошибок — окружение готово, и все примеры курса вы сможете проверять руками. Заодно откройте dbdiagram.io и убедитесь, что сайт открывается — он понадобится со следующего модуля.


Проверка знанийKnowledge check
Почему в курсе подчёркивается, что моделирование надо изучать через лабы и практику, а не только чтением, и какой рабочий цикл предлагается для каждой задачи моделирования?
ОтветAnswer
Моделирование данных — это навык проектирования, а навык ставится только практикой: его нельзя получить пассивным чтением. Разница между «понимаю, как читать схему» и «умею спроектировать схему» большая, и обнаруживается она лишь когда садишься делать сам — поэтому в курсе есть сквозные лабы, и их нельзя пропускать. Предлагаемый рабочий цикл состоит из четырёх шагов: сначала разобрать требования (что за система, какие данные, какие вопросы), затем нарисовать ER-диаграмму (чертёж до кода), затем закодировать её в DDL с ключами и ограничениями плюс тестовые данные, и наконец проверить запросами, отвечающими на исходные вопросы. Последний шаг часто ведёт назад: если ответить на вопрос тяжело, модель дорабатывают. Этот цикл итеративен — несколько проходов это норма, а не признак ошибки.

Проверьте понимание

Результат: 0 из 0
Прикладной
Вопрос 1 из 5. Какой набор инструментов является минимально необходимым для прохождения практической части курса?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3