Методическое руководство преподавателя

Тема 2. Взаимосвязи в моделях и реляционный подход к построению моделей — Логическая и физическая независимость данных (§2.2 с.7 программы)

Дисциплина
ОП.08 Основы проектирования баз данных
Специальность
09.02.07 ИСП (СИЭУиП)
Регламент
2 акад. часа (80 мин / 60 мин)
Вид занятия
Урок с объяснением теории

1. Поминутный тайминг учебного занятия

В зависимости от расписания учебной части СИЭУиП занятие реализуется в основном регламенте (80 минут) или в сокращенном регламенте (60 минут при сжатом графике звонков):

Этап занятия Основной (80 мин) Сокращенный (60 мин) Ключевой фокус преподавателя
1. Оргмомент и мотивация 5 мин 4 мин Проверка явки, постановка проблемы: «Что сломается в мобильном банке при добавлении нового поля в таблицу клиентов?»
2. Актуализация опорных знаний 8 мин 6 мин Повторение реляционной модели: сущности, атрибуты, таблицы, первичные и внешние ключи. Концепция отделения логики от физики.
3. Изложение нового материала
• Архитектура ANSI/SPARC
• Логическая независимость (VIEW, INSTEAD OF)
• Физическая независимость (индексы, партиции, tablespaces)
32 мин 24 мин Системное раскрытие трехуровневой архитектуры ANSI/SPARC (внешний, концептуальный, внутренний уровни). Демонстрация живых SQL-примеров экранирования схем.
4. Разбор эталонных инженерных кейсов 12 мин 8 мин Демонстрация: декомпозиция таблицы клиентов с сохранением старого интерфейса через VIEW и оптимизация запроса с B-Tree индексом без правок кода приложения.
5. Практическое закрепление в zanyatie.html 15 мин 12 мин Самостоятельный анализ студентами 4 вариантов инженерных сценариев в интерактивном бланке. Индивидуальный контроль педагога.
6. Подведение итогов, рефлексия, ДЗ 8 мин 6 мин Анализ типовых ошибок, самооценка по критериальной шкале (4 балла), фиксация резервного домашнего задания.

2. Архитектура ANSI/SPARC и концепция Data Independence

В 1975 году комитет стандартов ANSI/X3/SPARC (American National Standards Institute, Standards Planning and Requirements Committee) сформулировал фундаментальный принцип организации современных СУБД — трехуровневую архитектуру данных, призванную решить проблему жесткой привязки прикладного программного обеспечения к форматам хранения на магнитных носителях.

ТРЕХУРОВНЕВАЯ АРХИТЕКТУРА ANSI/SPARC

[ ВНЕШНИЙ УРОВЕНЬ (External Level) ]
Внешняя схема 1 (Бухгалтерия)      Внешняя схема 2 (Касса / Мобильное приложение)
↑↓ (Отображение: Внешний ↔ Концептуальный: Представления VIEW)
[ ЛОГИЧЕСКАЯ НЕЗАВИСИМОСТЬ ДАННЫХ ]
↑↓
[ КОНЦЕПТУАЛЬНЫЙ УРОВЕНЬ (Conceptual Level) ]
Концептуальная схема: Таблицы, Столбцы, Связи PK/FK, Ограничения CHECK / UNIQUE
↑↓ (Отображение: Концептуальный ↔ Внутренний: Storage Engine)
[ ФИЗИЧЕСКАЯ НЕЗАВИСИМОСТЬ ДАННЫХ ]
↑↓
[ ВНУТРЕННИЙ / ФИЗИЧЕСКИЙ УРОВЕНЬ (Internal Level) ]
Внутренняя схема: Страницы данных 8 КБ, Индексы B-Tree/Hash/GiST, Секции (Partitions), Tablespaces, Сжатие
Определение Data Independence (Независимость данных): способность изменять описание данных на одном уровне архитектуры СУБД без необходимости изменять описания на вышестоящих уровнях и без модификации исходного кода работающих клиентских приложений.

3. Логическая независимость данных (Logical Data Independence)

Логическая независимость данных — это свойство СУБД и схемы данных, при котором изменение концептуальной схемы (структуры таблиц, разделения или слияния сущностей, добавления новых атрибутов) не требует переписывания внешних схем и прикладного программного кода.

Механизмы обеспечения логической независимости:

  1. Представления (VIEW): виртуальные таблицы, формируемые SQL-запросом к одной или нескольким базовым таблицам. При дроблении таблицы Клиенты на ЮрЛица и ФизЛица создается виртуальное представление v_Клиенты с помощью оператора UNION ALL, что позволяет внешним программам выполнять прежние SELECT-запросы без ошибок.
  2. Триггеры INSTEAD OF: специальный тип триггеров, перехватывающий операции манипулирования данными (INSERT, UPDATE, DELETE), направленные на обновляемые сложные представления. Триггер программно распределяет входящий поток строк по новым концептуальным таблицам, сохраняя полную работоспособность устаревших систем учета.
  3. Экранирование прав доступа и проекции: создание специализированных представлений для разных категорий пользователей (например, кассир видит только ID, ФИО и Скидочную карту, не получая доступа к паспортам и финансовой истории).
-- Пример логической независимости: сохранение старого интерфейса
-- Исходная таблица Clients разделена на Legal_Entities и Individuals.
-- Создаем VIEW для старой бухгалтерской программы:
CREATE OR REPLACE VIEW Clients AS
SELECT client_id, company_name AS client_name, inn AS tax_id, 'LEGAL' AS client_type
FROM Legal_Entities
UNION ALL
SELECT client_id, full_name AS client_name, inn AS tax_id, 'INDIVIDUAL' AS client_type
FROM Individuals;

-- Обеспечение вставки через триггер INSTEAD OF:
CREATE OR REPLACE TRIGGER trg_clients_insert
INSTEAD OF INSERT ON Clients
FOR EACH ROW
BEGIN
  IF :NEW.client_type = 'LEGAL' THEN
    INSERT INTO Legal_Entities(client_id, company_name, inn)
    VALUES (:NEW.client_id, :NEW.client_name, :NEW.tax_id);
  ELSE
    INSERT INTO Individuals(client_id, full_name, inn)
    VALUES (:NEW.client_id, :NEW.client_name, :NEW.tax_id);
  END IF;
END;

4. Физическая независимость данных (Physical Data Independence)

Физическая независимость данных — это способность СУБД изменять структуры физического хранения данных на дисковых накопителях, алгоритмы индексации, методы сжатия и распределение файлов по файловой системе без изменения концептуальной схемы (таблиц и связей) и прикладных запросов.

Ключевые инструменты физического уровня:

-- Пример физической независимости: оптимизация без изменения прикладного кода
-- Приложение шлет запрос:
SELECT order_id, total_amount FROM Orders WHERE customer_id = 94821;

-- Администратор создает B-Tree индекс:
CREATE INDEX idx_orders_customer ON Orders USING btree(customer_id);

-- Запрос приложения НЕ ИЗМЕНИЛСЯ ни на символ, 
-- но время выполнения сократилось с 1200 мс (Sequential Scan) до 1.5 мс (Index Scan).

5. Типовые ошибки студентов и методические приемы

Типовая ошибка студента В чем заключается суть заблуждения Педагогический прием и контрпример
«Создание индекса — это изменение логической схемы» Студент путает концептуальный уровень с физическим. Полагает, что раз команда CREATE INDEX пишется на SQL, то это меняет бизнес-структуру таблицы. Прием «Слепой клиент»: Спросить: «Изменится ли список колонок, возвращаемых SELECT * FROM Users? Сломается ли мобильное приложение, если индекс удалить?» Показать план EXPLAIN: запрос идентичен, меняется только план выполнения.
«Представление VIEW физически дублирует данные на диске» Отождествление VIEW с физической таблицей. Студенты боятся нехватки дискового пространства при создании 10 различных VIEW для одной таблицы. Прием «Виртуальное окно / Стеклянный трафарет»: Объяснить, что стандартное VIEW — это сохраненный SQL-запрос, «трафарет», накладываемый на сырые данные в момент обращения. Затраты диска равны длине текстовой строки определения в системном каталоге.
«Партиционирование требует переписывания WHERE в запросах» Студент считает, что при секционировании по годам программист должен писать FROM orders_2025 вместо FROM orders. Прием «Прозрачный диспетчер»: Продемонстрировать механизм Partition Pruning: программист обращается к мастер-таблице Orders, а планировщик СУБД сам отсекает ненужные секции, не читая терабайты лишних файлов.
«Логическая независимость защищает от любых изменений в БД» Иллюзия абсолютной изоляции. Непонимание, что удаление критической бизнес-информации без эквивалента в новой схеме невозможно компенсировать никаким VIEW. Прием «Закон сохранения информации»: Если поле Номер_Паспорта удалено физически и не вычисляется из других полей, VIEW вернет NULL, что может уронить клиентский софт. Логическая независимость работает тогда, когда информация может быть реконструирована!

6. Критериальное оценивание работы студентов (4 балла)

Оценка за практическую работу на интерактивном листе zanyatie.html выставляется по 4-балльной прозрачной шкале:

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