Развернутый сценарий учебного занятия

ОП.08 Основы проектирования баз данных | Тема 2. Взаимосвязи в моделях и реляционный подход к построению моделей
Тема по программе (§2.2 с.7): Реляционная алгебра: выборка и проекция
Регламент: 80 минут (основной) / 60 минут (сокращенный) с точной адаптацией прямой речи преподавателя.

Этап 1. Организационный момент и мотивация к деятельности

Тайминг: 80 минут — 5 минут | 60 минут — 4 минуты
Методическая цель: быстро переключить внимание студентов на учебный предмет, зафиксировать явку и поставить фундаментальную проблему: откуда берутся правила, по которым СУБД строит ответы на запросы.

Регламент 80 минут (полный сценарий)

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

Вспомните: на прошлых парах мы проектировали таблицы, определяли первичные ключи и внешние связи. Мы смотрели на базу данных как на статичный шкаф с упорядоченными папками. Но база данных создается ради одного — быстрого и безошибочного извлечения нужной информации. Каждый из вас уже сталкивался с SQL или хотя бы слышал о командах SELECT и WHERE.

А теперь главный вопрос: как процессор СУБД понимает, ЧТО именно вы от него хотите? Почему результат любого запроса — это снова аккуратная двумерная таблица, которую можно немедленно отдать другому запросу? Ответ на этот вопрос дал в 1970 году создатель всей нашей индустрии Эдгар Кодд. Тема сегодняшнего занятия — «Реляционная алгебра: выборка и проекция». Мы научимся математически точно вычислять запросы вручную, чтобы в будущем писать безупречно эффективный код на SQL».

Регламент 60 минут (сжатый сценарий)

Прямая речь преподавателя:
«Здравствуйте! Включаем рабочие места и открываем тетради. Сегодня мы открываем манипуляционную часть реляционной модели — реляционную алгебру Кодда.

До этого мы создавали структуру таблиц, а сегодня разберем математический механизм запросов. Наша тема — «Реляционная алгебра: выборка и проекция». Мы разберем, как СУБД режет таблицы по горизонтали и по вертикали, почему проекция обязана удалять повторяющиеся строки и как эти операции транслируются в операторы SQL WHERE и SELECT DISTINCT. В конце пары каждый выполнит расчет индивидуального варианта в рабочем листе».

Этап 2. Актуализация опорных знаний (экспресс-опрос)

Тайминг: 80 минут — 7 минут | 60 минут — 5 минут
Методическая цель: актуализировать понятия отношения, кортежа, атрибута и математического множества, чтобы студенты осознали их строгий теоретико-множественный смысл.
Прямая речь преподавателя:
«Прежде чем перейти к формулам, освежим три базовых термина. Отвечайте коротко и четко.

1. Вопрос группе: Что такое отношение в реляционной модели и почему мы в быту называем его таблицей?
Ожидаемый ответ: Отношение — это подмножество декартова произведения доменов. Заголовок отношения — это схема атрибутов, а тело — множество кортежей.

2. Вопрос группе: Что является элементом отношения и каково главное свойство математического множества?
Ожидаемый ответ: Элементом является кортеж (строка). Главное свойство множества — уникальность элементов (во множестве не может быть двух одинаковых элементов) и отсутствие порядка следования.

3. Вопрос группе: Что гарантирует уникальность каждой строки в реальной таблице базы данных?
Ожидаемый ответ: Первичный ключ (Primary Key).

Отлично! Запомните этот тезис: отношение — это строгое математическое множество. Именно из этого факта сегодня родится главное правило реляционной проекции, на котором ошибается половина начинающих разработчиков».

Этап 3. Сообщение новых знаний (теоретический блок)

Тайминг: 80 минут — 33 минуты | 60 минут — 25 минут
Методическая цель: последовательно раскрыть понятие замкнутости, унарные операции селекции (σ) и проекции (π), закон устранения дубликатов, порядок вычисления суперпозиции и сопоставление с SQL.

Регламент 80 минут (подробный сценарий)

Прямая речь преподавателя:
«Записываем подзаголовок: 1. Свойство реляционной замкнутости.
В школьной алгебре чисел операция сложения двух целых чисел дает снова целое число. В реляционной алгебре объектами выступают не числа, а целые отношения (таблицы).
Запишите фундаментальное определение: Реляционная алгебра замкнута. Операндами любой операции являются отношения, и результатом выполнения ЛЮБОЙ операции всегда является новое отношение.

Что это дает инженеру? Во-первых, результат любого запроса можно сразу же скормить следующему запросу — так строятся подзапросы и CTE в SQL. Во-вторых, операции не трогают исходные данные на диске, они порождают виртуальный срез данных.

Записываем подзаголовок: 2. Селекция (выборка, σ) — горизонтальный срез.
Селекция обозначается греческой буквой σ (сигма). В подстрочном индексе пишется предикат φ (условие отбора): σφ(R).
Представьте таблицу перед собой. Селекция берет воображаемый нож и режет таблицу горизонтально. Каждая строка, для которой условие φ истинно, попадает в результат. Если условие ложно — строка отбрасывается.
Обратите внимание: число столбцов таблицы после селекции НЕ МЕНЯЕТСЯ! Степень отношения строго равна исходной. А вот число строк (мощность) уменьшается или остается прежним.

Записываем подзаголовок: 3. Проекция (π) — вертикальный срез и устранение дубликатов.
Проекция обозначается греческой буквой π (пи): πA1, ..., Ak(R). Проекция режет таблицу вертикально! Мы указываем список атрибутов, которые хотим оставить. Все остальные столбцы безжалостно отсекаются.
А теперь внимание — ключевой момент пары! Что происходит со строками?
Представьте, что мы отбросили столбец ID сотрудника и спроецировали таблицу только на столбец Должность. На предприятии работает 100 инженеров. Сколько строк останется в результате проекции? Ровно ОДНА строка «Инженер»!
Потому что отношение — это МНОЖЕСТВО. В множестве $\{5, 5, 5\}$ содержится только одно число 5. Поэтому реляционная проекция обязана автоматически удалять любые возникающие дубликаты.

Записываем подзаголовок: 4. Суперпозиция π(σ(R)) и соответствие SQL.
В реальной жизни мы почти никогда не используем операции поодиночке. Мы пишем композицию: π[ФИО, Должность](σ[Оклад < 70000](Сотрудники)).
Вычисление идет изнутри наружу: сначала селекция фильтрует строки по окладу, затем проекция вырезает столбцы ФИО и Должность и схлопывает дубликаты.
Как это выглядит в SQL?
Селекция σ → это секция WHERE.
Проекция π → это секция SELECT DISTINCT!
Почему именно DISTINCT? Потому что по умолчанию SQL из соображений производительности дубликаты не удаляет. Но классическая реляционная алгебра Кодда требует строгого устранения дубликатов!».

Регламент 60 минут (интенсивный сценарий)

Прямая речь преподавателя:
«Фиксируем ключевые положения теории.
1. Реляционная замкнутость: вход — отношение, выход — всегда новое отношение. Это позволяет строить конвейеры и вложенные запросы.
2. Селекция (σ): горизонтальный срез по кортежам. Обозначение: σφ(R). Фильтрует строки по условию. Столбцы не меняются. Соответствует секции WHERE в SQL.
3. Проекция (π): вертикальный срез по атрибутам. Обозначение: πA(R). Оставляет только заданные столбцы. Поскольку отношение — это канторовское множество, дубликаты строк при проекции устраняются автоматически! В SQL математической проекции строго соответствует SELECT DISTINCT.
4. Суперпозиция π(σ(R)): сначала селекция отбирает кортежи, затем проекция удаляет столбцы и схлопывает повторы».

Этап 4. Первичное закрепление и разбор эталонного расчета

Тайминг: 80 минут — 12 минут | 60 минут — 10 минут
Методическая цель: совместно разобрать на экране расчет суперпозиции над конкретным отношением из 5 строк, проговорить пошаговое удаление дубликатов и разобрать ловушку с порядком операций.
Прямая речь преподавателя:
«Взгляните на экран (слайд 8 презентации). Перед нами отношение «Преподаватели» из 5 строк: Иванов, Петров, Сидорова, Смирнов, Козлова. У каждого указаны Кафедра, Стаж и Оклад.

Давайте вычислим выражение: π[Кафедра](σ[Стаж ≥ 6 ∧ Оклад < 80000](Преподаватели)).

Шаг 1. Считаем внутреннюю селекцию σ. Проверяем условие для каждого человека:
- Иванов: стаж 8, оклад 65000. Оба условия истинны. Оставляем!
- Петров: стаж 3. Условие по стажу ложно. Вычеркиваем.
- Сидорова: стаж 12, но оклад 82000. Условие по окладу ложно. Вычеркиваем.
- Смирнов: стаж 6, оклад 59000. Подходит! Оставляем.
- Козлова: стаж 10, оклад 71000. Подходит! Оставляем.
Получили промежуточную таблицу из 3 строк: Иванов, Смирнов, Козлова.

Шаг 2. Выполняем проекцию π на столбец «Кафедра».
Смотрим: у Иванова кафедра — «Информатика», у Смирнова — «Информатика», у Козловой — «Экономика».
Сколько строк пишем в ответ? ДВЕ строки: «Информатика» и «Экономика». Повтор «Информатика» ликвидирован по закону множеств Кодда.

Вопрос на засыпку: А почему мы не могли сначала сделать проекцию на «Кафедру», а потом селекцию по стажу? Кто ответит?
Верно! Если мы сначала выбросим столбцы стажа и оклада, то где селекция найдет данные для проверки? В схеме их больше не будет! Поэтому предикат селекции всегда вычисляется в первую очередь».

Этап 5. Практическая работа обучающихся (интерактивный рабочий лист)

Тайминг: 80 минут — 15 минут | 60 минут — 11 минут
Методическая цель: организовать самостоятельную аналитическую работу студентов по индивидуальным вариантам, контролировать корректность ручного устранения дубликатов и правильность булевой логики.
Прямая речь преподавателя:
«Коллеги, открываем на рабочих столах файл zanyatie.html.
В верхней панели введите вашу фамилию, имя и номер учебной группы. Обратите внимание: все ваши ответы автоматически сохраняются в браузере, ничего не пропадет при обновлении страницы.

Варианты распределяем строго по номерам парт:
- Вариант 1 (1 ряд): Отношение «Сотрудники» — отбор по стажу > 5 и окладу < 70 000, проекция на ФИО и Должность с устранением дубликатов.
- Вариант 2 (2 ряд): Отношение «Студенты» — отбор по среднему баллу ≥ 4.5 и курсу = 3, проекция на Номер билета и Специальность.
- Вариант 3 (3 ряд, левая сторона): Отношение «Заказы» — отбор по статусу 'Оплачен' и дате за текущий месяц, проекция на ID клиента и Сумму.
- Вариант 4 (3 ряд, правая сторона): Отношение «Склад» — отбор по остатку = 0 ИЛИ цене > 100 000, проекция на Категорию и Поставщика.

В каждом варианте вам нужно последовательно рассчитать селекцию, затем проекцию, затем итоговую суперпозицию и ответить на контрольный вопрос самопроверки. На работу 15 минут в основном регламенте (11 минут в сокращенном). Если возникают вопросы по булевым операторам — поднимайте руку, я подойду».

Этап 6. Итог занятия, рефлексия и домашнее задание

Тайминг: 80 минут — 8 минут | 60 минут — 5 минут
Методическая цель: подвести критериальные итоги по 4-балльной рубрике, разъяснить статус дистанционного домашнего задания и закрепить материал на эмоционально-позитивной ноте с помощью профессионального мема.
Прямая речь преподавателя:
«Время вышло. Сохраните заполненный рабочий лист кнопкой «Сохранить ответы».

Давайте подведем итоги. Оценивание вашей работы строится по 4-балльной закрытой рубрике:
- 2 балла — безошибочное вычисление селекции (правильно проверены все условия предиката, не потеряны и не добавлены лишние кортежи).
- 1 балл — безупречное вычисление проекции (корректно отобраны атрибуты и СТРОГО устранены все возникшие дубликаты).
- 1 балл — верная запись суперпозиции и точный ответ на вопрос самопроверки.

О домашнем задании: В папке пары лежит файл domashnee_zadanie.html. Это резервное дистанционное задание. Оно предназначено строго для тех студентов, кто пропустил сегодняшнюю очную пару по уважительной причине или кому назначена индивидуальная пересдача. Срок сдачи — до следующего занятия по расписанию.

И в завершение взгляните на 15-й слайд нашей презентации. Перед вами легендарный комикс Рэндалла Манро xkcd №327 «Exploits of a Mom» — самый известный в мировой истории мем про базы данных. Мама назвала сына именем Robert'); DROP TABLE Students;--, и наивная школа, составлявшая запросы без понимания реляционной типизации Кодда, удалила всю базу успеваемости. Пусть этот мем напоминает вам: в реляционных базах данных математическая строгость и чистота выражений защищают нас от катастроф!

Спасибо за работу, занятие окончено!».