- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
Как описать более сложную иерархию, например, с двумя предками для описания отношений отецдитя, мать-дитя? Так как число предков ограничено двумя, то отношение, описывающее множество людей, расширяется двумя внешними ключами, ссылающимися на предка-отца и предка-мать:
ОтцыМатериДети(КодЧ-Отец: null, КодЧ-Мать: null,
|
КодЧ, |
Атрибуты) |
|
|
|
|
|
primary |
key(КодЧ) |
||
foreign |
key(КодЧ-Отец) references ОтцыМатериДети(КодЧ) |
||
foreign |
key(КодЧ-Мать) references ОтцыМатериДети(КодЧ) |
Дальнейшие обобщения могут быть связаны с введением нескольких разнотипных иерархий и установлением перекрестных ссылок между ними.
Как бы то ни было, основная идея реализации иерархии и ее обобщений в реляционной модели проста: коль скоро предков ограниченное число, то можно расширить классы, описывающие множества несвязанных сущностей, внешними ключами, ссылающимися на этих предков.
5.4.3. Пример реализации иерархической рекурсии
Практическое задание. Построить реляционную модель, описывающую иерархическую подчиненность подразделений в организации. При этом
1)Построить презентационную диаграмму. Указать кратности и роли в связи.
2)Построить ключевую диаграмму. Привести маркеры атрибутов ключей и указать кратности связей. Подразделения идентифицировать мнемокодами (обновление мнемокода является осмыс-
ленным). Какой вид связи устанавливается между подразделением и вышестоящим подразделением?
3)Сформулировать и записать на псевдокоде декларативное правило поддержания ссылочной целостности. Обосновать на содержательном уровне выбор правила.
4)Привести пример в табличной форме для организации, имеющей 6 подразделений со следующей структурой подчиненности: 1(2(3,4),5(6)).
Решение. Презентационная и ключевая диаграммы представлены на рис. 5.8, 5.9 соответственно. Между подразделением и вышестоящим подразделением может быть установлена лишь необязательная неидентифицирующая связь.
Рис. 5.8.: Иерархическая рекурсия. Презентационная диаграмма (см. 5.4.3)
Приведем фрагмент оператора создания базового отношения Подразделения с определением правил поддержания ссылочной целостности:
create table Подразделения МнемоП-Выше null
primary key(МнемоП)
Рис. 5.9.: Иерархическая рекурсия. Ключевая диаграмма (см. 5.4.3)
foreign key(МнемоП-Выше) references Подразделения(МнемоП) on update cascade
on delete set null
При обновлении мнемокода подразделения (МнемоП) здесь применяется правило каскадного обновления (on update cascade), так что все непосредственно нижестоящие подразделения (посредством мнемокода МнемоП-Выше) станут ссылаться на это новое значение мнемокода. В рассматриваемом ниже примере при изменении значения первичного ключа (МнемоП) c 2 на 20 значения внешнего ключа (МнемоП-Выше) также изменятся с 2 на 20.
При удалении подразделения применение правила присвоения null-значений (on delete set null) приведет к тому, что все непосредственно нижестоящие подразделения приобретут самостоятельный статус и станут корнями иерархий (например, при расформировании полка составляющие его батальоны станут отдельными). В рассматриваемом ниже примере при удалении данных о подразделении со значением первичного ключа (МнемоП), равным 2, значения внешнего ключа (МнемоП-Выше) изменятся с 2 на null-значение.
Пример в табличной форме для организации со структурой 1(2(3,4),5(6)) приведен на рис. 5.10