| Раздел 1. Многотабличные запросы и преобразование данных средствами SQL | SQL как декларативный язык обработки реляционных данных. Логическая последовательность выполнения запроса. Выбор столбцов, вычисляемые выражения и псевдонимы. Фильтрация, сортировка и ограничение результата. Условные выражения CASE. Обработка NULL. Строковые, числовые и временные функции. Приведение типов.
Соединение таблиц. INNER JOIN, LEFT JOIN, FULL JOIN и CROSS JOIN. Самосоединение. Соединение нескольких таблиц. Условия соединения и причины ошибочного умножения строк. Операции UNION, UNION ALL, INTERSECT и EXCEPT. Подзапросы в SELECT, FROM и WHERE. Выражения EXISTS, IN, ANY и ALL. Коррелированные подзапросы. Общие табличные выражения. Основы рекурсивных запросов. Использование образовательных данных: учебные группы, дисциплины, задания, результаты, проектная деятельность и дополнительное образование.
Лабораторная работа 1. Комплексная обработка данных образовательной организации средствами SQL. Разработка системы взаимосвязанных запросов к базе данных образовательной организации. Выполнение многотабличных соединений, подзапросов, операций над множествами и общих табличных выражений. Получение сведений об учебных группах, результатах выполнения заданий, проектной деятельности и использовании цифровых ресурсов. Проверка запросов на полноту и отсутствие дублирования результатов. | 24 | 2 | 18 | 4 |
| Раздел 2. Агрегирование и аналитические возможности SQL | Агрегатные функции COUNT, SUM, AVG, MIN и MAX. Группировка данных. Фильтрация групп. Условное агрегирование. Подсчёт уникальных значений. Работа с несколькими уровнями детализации. GROUPING SETS, ROLLUP и CUBE. Анализ данных по учебным периодам, классам, дисциплинам и заданиям.
Оконные функции. Конструкция OVER. Разбиение окна, сортировка и оконные рамки. ROW_NUMBER, RANK и DENSE_RANK. LAG и LEAD. FIRST_VALUE и LAST_VALUE. Накопительные и скользящие показатели. Сравнение результата обучающегося с результатами группы. Расчёт динамики без потери детализации строк.
Обычные и материализованные представления. Создание повторно используемых аналитических запросов. Подготовка согласованных наборов данных для информационных панелей, статистического анализа и машинного обучения. В рамках раздела показатели рассчитываются по заданным правилам; содержательная проверка педагогических гипотез не выполняется.
Лабораторная работа 2. Разработка аналитического SQL-слоя образовательной системы. Расчёт заданной системы показателей учебных результатов и цифровой активности. Применение агрегирования, условных выражений, группирующих наборов и оконных функций. Создание представлений для преподавателя, методиста и информационной панели. Подготовка словаря показателей и тестовых запросов для проверки корректности расчётов. | 26 | 2 | 18 | 6 |
| Раздел 3. Транзакционная обработка, безопасность и оптимизация SQL-запросов | Операторы INSERT, UPDATE, DELETE и MERGE. Массовое изменение данных. Возврат изменённых записей. Проверка условий перед изменением. Конструкция UPSERT. Последовательности и генерируемые значения.
Транзакции и свойства ACID. Фиксация и откат. Точки сохранения. Аномалии параллельного доступа. Уровни изоляции. Блокировки строк и таблиц. Взаимные блокировки. Проектирование коротких и безопасных транзакций. Примеры: регистрация результата, назначение задания, изменение статуса проекта, фиксация участия в мероприятии.
План выполнения SQL-запроса. EXPLAIN и EXPLAIN ANALYZE. Последовательное и индексное сканирование. Алгоритмы соединения таблиц. Сортировка и агрегирование. Индексы B-tree, составные, частичные и функциональные индексы. Порядок столбцов в индексе. Селективность. Статистика и актуализация данных планировщика. Недопустимость создания индексов без анализа шаблонов запросов.
Разграничение доступа. Роли и привилегии. Представления как механизм ограничения состава данных. Минимизация доступа к персональным данным обучающихся. Журналирование критичных операций.
Лабораторная работа 3. Надёжная и производительная обработка данных школьной информационной системы. Реализация транзакционных сценариев изменения учебных результатов и проектных данных. Моделирование конкурентного доступа и анализ уровней изоляции. Исследование планов выполнения запросов на наборах данных различного объёма. Проектирование и проверка индексов. Создание ролей преподавателя, обучающегося и администратора с минимально необходимыми правами. | 24 | 0 | 16 | 8 |
| Раздел 4. Программное применение SQL и разработка прикладных решений | Подключение к PostgreSQL из Python. Стандартный интерфейс работы с базой данных. Установление соединения, выполнение запроса, получение результата и обработка ошибок. Контекстное управление соединениями и транзакциями. Параметризованные запросы. Опасность SQL-инъекций. Пакетная загрузка данных. Передача табличных результатов между PostgreSQL и pandas. Использование SQLAlchemy на уровне подключения и выполнения запросов без повторного изучения объектно-реляционного проектирования.
Обработка JSON в PostgreSQL. Типы JSON и JSONB. Извлечение значений, фильтрация и создание JSON-результатов. SQL/JSON. Использование JSON как формата обмена между базой данных и прикладной системой. Граница между реляционной и документной моделью как подготовка к последующей дисциплине «NoSQL и архитектура больших данных».
Тестирование SQL-решений. Подготовка исходного состояния базы данных. Позитивные, граничные и негативные тесты. Проверка состава строк, значений, типов и порядка результата. Автоматизированная проверка студенческих SQL-запросов. Ограничение опасных операторов. Работа запроса в изолированной транзакции. Требования к воспроизводимости.
Использование SQL в профессиональной деятельности учителя информатики. Учебные задачи по табличным и реляционным данным. Связь с подготовкой к ОГЭ и ЕГЭ без сведения содержания дисциплины к экзаменационному тренингу. Руководство школьными проектами, включающими базу данных, веб-приложение или аналитический компонент.
Лабораторная работа 4. Программный модуль доступа к образовательной базе данных. Разработка приложения на Python, выполняющего параметризованные SQL-запросы и транзакционные операции. Реализация получения данных, добавления записей, обработки исключений и формирования JSON-ответа. Подготовка автоматизированных тестов и проверка устойчивости программы к некорректным входным данным.
Лабораторная работа 5. Итоговый проект «SQL-подсистема цифрового сервиса образовательной организации». Разработка законченного SQL-компонента для электронного портфолио, школьной библиотеки, учёта проектной деятельности, ИТ-кружка, организации дополнительного образования или мониторинга выполнения учебных заданий. Проект включает комплекс запросов, представления, транзакционные операции, ролевой доступ, анализ производительности, программный интерфейс и комплект тестов. Дополнительно разрабатывается одно учебное задание по SQL для обучающихся профильного класса или школьного ИТ-кружка. | 34 | 0 | 20 | 14 |