- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
5.6.2. Обобщения
Рассмотрим одно из обобщений, связанное с «индивидуализацией» дуг, в результате чего узлы разных долей смогут соединяться произвольным числом ребер (двудольный мультиграф).
Пусть требуется описать график приема пациентов (рис. 5.21 и 5.22). Здесь атрибут Дата-время включен в первичный ключ. Если этого не сделать, то для каждой пары врач-пациент можно было бы зарегистрировать не более одной встречи.
Рис. 5.21.: Ассоциация. Презентационная диаграмма (см. 5.6.2)
В общем случае граф, моделируемый ассоциацией, может иметь произвольное число долей (k- дольный граф или мультиграф, k > 2).
5.6.3. Пример реализации ассоциации
Практическое задание. Построить реляционную модель, описывающую график встреч Заказчика
сИсполнителем при необязательном участии Консультанта. При этом
1)Построить презентационную диаграмму. Указать кратности.
Рис. 5.22.: Ассоциация. Ключевая диаграмма (см. 5.6.2)
Примечание. Здесь для краткости указан составной атрибут ФИО, что для ключевых диаграмм допустимо
2)Построить ключевую диаграмму. Привести маркеры атрибутов ключей и указать кратности связей. Участников встреч идентифицировать мнемокодами (обновление мнемокода является осмысленным). Какие виды связей используются?
3)Сформулировать и записать на псевдокоде декларативные правила поддержания ссылочной целостности. Обосновать на содержательном уровне выбор правил.
4)Привести пример в табличной форме.
Решение. Презентационная и ключевая диаграммы представлены на рис. 5.23, 5.24 соответственно.
Связи с классами Заказчики и Исполнители являются неполностью идентифицирующими, связь с классом Консультанты – необязательной неидентифицирующей.
Рис. 5.23.: Ассоциация. Презентационная диаграмма (см. 5.6.3)
Рис. 5.24.: Ассоциация. Ключевая диаграмма (см. 5.6.3)
Приведем фрагмент оператора создания базового отношения График с определением правил поддержания ссылочной целостности:
create table График МнемоК null
primary key(МнемоЗ, МнемоИ, Дата-время)
foreign key(МнемоЗ) references Заказчики(МнемоЗ) on update cascade
on delete cascade
foreign key(МнемоИ) references Исполнители(МнемоИ) on update cascade
on delete cascade
foreign key(МнемоК) references Консультанты(МнемоК) on update cascade
on delete set null
При обновлении значения любого мнемокода применяется правило каскадного обновления, так как это полностью сохраняет содержательную часть хранимых данных. При удалении данных о Заказчиках и Исполнителях помимо принятого правила каскадного удаления можно было бы использовать правило ограничения restrict. При удалении данных о Консультанте применяется правило присвоения null-значения, позволяющее сохранить данные о встречах Заказчика и Исполнителя.
Пример в табличной форме приведен в табл. 5.2, 5.3.
Таблица 5.2.: Ассоциация. Пример в табличной форме (см. 5.6.3, табл. 5.3)
Заказчики |
|
Исполнители |
|
Консультанты |
|||
МнемоЗ |
... |
|
МнемоИ |
... |
|
МнемоК |
... |
ЗИЛ |
|
|
СГУ |
|
|
МГУ |
|
САЗ |
|
|
СГТУ |
|
|
КГУ |
|
|
|
|
|
|
|
ПАГС |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 5.3.: Ассоциация. Пример в табличной форме (см. 5.6.3, табл. 5.2)
График |
|
|
|
МнемоЗ |
МнемоИ |
МнемоК |
Дата-время |
ЗИЛ |
СГУ |
null |
31.12.2000 12:00 |
ЗИЛ |
СГУ |
МГУ |
02.02.2015 14:00 |
ЗИЛ |
СГУ |
null |
03.03.2005 14:00 |
|
|
|
|