Занятие №07 является фундаментом всего реляционного цикла дисциплины. После ознакомления с типами моделей данных на занятии №06 (иерархическая, сетевая, реляционная, NoSQL), студенты переходят к глубокому осмыслению математического аппарата реляционной модели данных (РМД), предложенной Эдгаром Коддом в 1970 году.
Ключевая дидактическая цель: преодолеть наивное бытовое восприятие базы данных как «набора табличек в Excel» и сформировать строгое математическое и инженерное понимание: отношение как множество уникальных кортежей над доменами, декларативная ссылочная целостность как гарант непротиворечивости и ограничения СУБД как первая линия защиты логики информационной системы.
В зависимости от расписания учебной части СИЭУиП занятие проводится либо в основном регламенте (80 минут), либо в сокращенном режиме (60 минут). Ниже приведена детальная координация этапов:
| Этап занятия | Основной (80 мин) | Сокращенный (60 мин) | Методическое содержание и фокус внимания |
|---|---|---|---|
| 1. Организационный момент и мотивация | 5 минут (00:00–00:05) | 5 минут (00:00–00:05) | Приветствие, фиксация явки. Проблемная вводная: «Почему таблица в реляционной СУБД — это строго математическое множество, а не лист Excel со свободным порядком ячеек?». Постановка цели занятия. |
| 2. Теоретический блок (объяснение нового) | 35 минут (00:05–00:40) | 25 минут (00:05–00:30) |
В 80-минутном регламенте: фундаментальный разбор понятий (отношение, тело/заголовок, домен, кортеж, степень/арность, мощность), 4 свойства отношений (1НФ, уникальность, порядок), детальный разбор целостности сущности, ссылочной и доменной (CHECK). В 60-минутном регламенте: концентрированное сопоставление терминов (таблица = отношение, строка = кортеж, колонка = атрибут), фокус на Primary/Foreign Key и режимах каскадного удаления/запрета. |
| 3. Демонстрация и закрепление (практика) | 25 минут (00:40–01:05) | 18 минут (00:30–00:48) |
Работа с интерактивным рабочим листом zanyatie.html по 4 отраслевым вариантам (Склад, Клиника, Автосервис, Онлайн-курсы). Проектирование пар связанных отношений, выбор естественных/суррогатных ключей, формулирование ограничений CHECK и режимов ссылочной целостности.
|
| 4. Анализ ошибок, подведение итогов, рефлексия | 15 минут (01:05–01:20) | 12 минут (00:48–01:00) |
Критериальная оценка по закрытой рубрике (4 балла), разбор типовых ошибок («висячие ссылки», отрицательные остатки, деление на 0), сохранение в LocalStorage / печать, инструктаж по резервному ДЗ domashnee_zadanie.html.
|
Преподавателю необходимо обеспечить строгость понятийного аппарата и параллельно связать абстрактную математическую терминологию РМД с практическими конструкциями SQL:
| Теоретический термин РМД | Практический эквивалент SQL | Строгое научное определение |
|---|---|---|
| Отношение (Relation) | Таблица (Table) | Подмножество декартова произведения одного или нескольких доменов $D_1 \times D_2 \times \dots \times D_n$. Представляет собой двумерную поименованную структуру данных. |
| Кортеж (Tuple) | Строка (Row / Record) | Элемент отношения; упорядоченный набор значений атрибутов $\langle v_1, v_2, \dots, v_n \rangle$, где каждое $v_i \in D_i$. Описывает конкретный единичный экземпляр сущности. |
| Атрибут (Attribute) | Столбец / Поле (Column) | Именованная характеристика отношения, принимающая значения из определенного домена. Определяет роль домена в отношении. |
| Домен (Domain) | Тип данных + Ограничения | Множество всех допустимых потенциальных атомарных значений определенного типа (например, «строка из 17 символов VIN», «целое число $\ge 0$»). |
| Степень / Арность (Degree / Arity) | Количество столбцов | Число атрибутов в заголовке отношения ($n$-арное отношение: унарное, бинарное, тернарное...). Степень фиксируется при проектировании схемы (DDL). |
| Кардинальность / Мощность (Cardinality) | Количество строк | Число кортежей в теле отношения в текущий момент времени. Является динамической характеристикой, меняющейся при операциях INSERT и DELETE. |
| Заголовок (Relation Heading / Schema) | Схема таблицы (DDL) | Фиксированное множество упорядоченных пар $\langle \text{Имя атрибута}, \text{Имя домена} \rangle$: $H = \{ (A_1, D_1), (A_2, D_2), \dots, (A_n, D_n) \}$. |
| Тело отношения (Relation Body) | Содержимое (Данные) | Множество кортежей, удовлетворяющих заголовку отношения в текущий момент времени. |
Отношение в РМД подчиняется законам теории множеств, из чего следуют 4 фундаментальных свойства:
ORDER BY в SQL).
Ограничения целостности — это декларируемые в схеме БД предикаты (логические условия), которым обязаны удовлетворять любые данные в любой момент времени. Ядро СУБД автоматически отклоняет транзакции, нарушающие эти правила.
NULL, и значение первичного ключа обязано быть уникальным в пределах отношения.
Физический смысл: Если первичный ключ идентифицирует конкретный объект реального мира (пациента, товар, автомобиль), отсутствие значения ключа лишает запись идентичности, а дублирование ключа приводит к невозможности однозначной адресации кортежа (нарушение Правила гарантированного доступа Кодда).
NULL (если внешний ключ не объявлен как NOT NULL).
Ссылочная целостность исключает возникновение «висячих ссылок» (orphaned rows) — ситуаций, когда дочерняя запись ссылается на несуществующего родителя (например, начисление зарплаты несуществующему сотруднику или дефектовка удаленного автомобиля).
| Действие при ON DELETE / ON UPDATE | Механизм работы СУБД | Пример бизнес-сценария |
|---|---|---|
RESTRICT / NO ACTION |
СУБД блокирует операцию удаления/изменения родительской строки и возвращает ошибку, если есть хотя бы одна дочерняя ссылка. | Нельзя удалить товар из каталога, пока по нему есть складские остатки или проведенные чеки. |
CASCADE |
Удаление/обновление родительской строки автоматически каскадно удаляет/обновляет все связанные дочерние записи. | Удаление студента из учебной системы автоматически удаляет все его сдачи домашних заданий. |
SET NULL |
При удалении родительской записи значение внешнего ключа в дочерних строках автоматически заменяется на NULL. |
Удаление аккаунта куратора: у прикрепленных групп поле curator_id становится NULL (ожидает назначения нового). |
SET DEFAULT |
Внешний ключ в дочерних строках заполняется значением по умолчанию (например, кодом дежурного оператора). | Переназначение невыполненных задач на системного супервайзера по умолчанию. |
Определяет допустимость значений в конкретных полях на основе бизнес-логики предметной области:
NOT NULL: поле обязательно для заполнения (запрет отсутствия информации).UNIQUE: значение атрибута (или набора атрибутов) должно быть уникальным в пределах таблицы (альтернативный / потенциальный ключ, например VIN или номер СНИЛС).CHECK (логическое_выражение): предикатная проверка допустимости значения. Например:
CHECK (quantity >= 0) — складской остаток не может быть отрицательным;
CHECK (score BETWEEN 0 AND 100) — балльно-рейтинговая оценка в диапазоне от 0 до 100;
CHECK (dosage_mg > 0 AND dosage_mg <= 500) — терапевтический диапазон дозировки лекарства.
| Типовая ошибка студента | В чем заключается непонимание | Педагогический прием и контрпример |
|---|---|---|
| Отождествление таблицы с файлом Excel | Студент считает, что порядок строк в таблице постоянен, и полагается на «первую строку» без сортировки ORDER BY. |
Прием «Хаос в мешке»: Продемонстрировать на доске, что реляционная таблица — это мешок с шарами (множество). СУБД возвращает строки в порядке физического чтения с диска, который может меняться после любого VACUUM или UPDATE. |
| Создание внешнего ключа не на уникальное поле | Попытка связать дочернюю таблицу со столбцом родительской таблицы, который не является PRIMARY KEY или UNIQUE (например, внешний ключ на фамилию пациента). |
Контрпример «Однофамильцы»: Спросить группу: «В клинику пришли два Ивана Петровича Ивановых. Если рецепт выписан на фамилию "Иванов", кому из них ввести смертельную дозу антибиотика?». Показать, что FK обязан ссылаться строго на уникальный идентификатор. |
| Хранение нескольких значений в одной ячейке (нарушение 1НФ) | Студент записывает список номеров телефонов или перечень симптомов через запятую в одно текстовое поле. | Прием «Попробуй отфильтруй»: Попросить написать запрос для поиска людей с кодом оператора 902, если в поле phones лежит строка +7912..., +7902..., +7982.... Показать громоздкость строковых операций и неэффективность индексов. |
| Бездумное использование CASCADE ON DELETE | Назначение каскадного удаления на финансовые или учетные таблицы (например, удаление товара удаляет всю историю складских проводок). | Прием «Финансовая дыра»: Объяснить, что удаление карточки старого товара каскадно уничтожит баланс бухгалтерии за 5 лет. Для учетных систем стандартом является RESTRICT или «мягкое удаление» (Soft Delete через флаг is_active). |
Оценка индивидуальной практической работы студентов проводится по закрытой 4-балльной шкале (подробно описанной в .rubrika.md):
Итог: 4 балла (отлично), 3 балла (хорошо), 2 балла (удовлетворительно), 0–1 балл (не зачтено).