- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
2.5.3. Варианты операции соединения
Введем операцию внутреннего соединения по заданному условию соединения P (обозначение операции P ) как производную от операций декартова произведения и выборки:
r1(S1) P r2(S2) = hP i(r1 r2); S1 \ S2 = ;; P P hS1 [ S2i
Кортежи операндов, попавшие в результат внутреннего соединения, называются соединимыми. Определим операции левого и правого внешних соединений как результат пополнения внутреннего
соединения несоединимыми кортежами левого и правого операндов соответственно. При пополнении несоединимый кортеж операнда дополняется на схеме другого операнда null-значениями. Введенные таким образом операции являются производными. Например, для левого внешнего соединения имеем по шагам
(1)r1(S1)
(2)r2(S2)
(3)r3(S1 [ S2) := r1(S1) P r2(S2)
(4)r4(S1) := r3(S1 [ S2)[S1]
(5)r5(S1) := r1(S1) n r4(S1)
(6)r6(S2) := f;(S2)g
(7)r7(S1 [ S2) := r5(S1) r6(S2)
(8)r8(S1 [ S2) := r3(S1 [ S2) [ r7(S1 [ S2)
Здесь (1) – левый операнд, (2) – правый операнд, (3) – их внутреннее соединение, (4) – соединимые кортежи левого операнда, (5) – несоединимые кортежи левого операнда, (6) – отношение со схемой S2, содержащее один кортеж, состоящий из null-значений, (7) – несоединимые кортежи
левого операнда, дополненные null-значениями на схеме правого операнда, (8) – левое внешнее соединение.
Таким образом, операции левого и правого внешних соединений по заданному условию соединения P (обозначения операций L P и R P соответственно, мнемоника от Left и Right) определяются следующим образом:
r1(S1)L P r2(S2) = (r1 P r2) [ [(r1 n (r1 P r2)[S1]) f;(S2)g] = r2(S2)R P r1(S1)
r1(S1)R P r2(S2) = (r1 P r2) [ [(r2 n (r1 P r2)[S2]) f;(S1)g] = r2(S2)L P r1(S1)
Основным свойством этих операций является возможность восстановления операнда по результату соединения:
r1(S1) = (r1 L P r2)[S1]; r2(S2) = (r1 R P r2)[S2]
Операция полного внешнего соединения по заданному условию соединения P (обозначение операции F P , мнемоника от Full) определяется как результат пополнения внутреннего соединения кортежами и левого, и правого операндов:
r1(S1) F P r2(S2) = (r1 L P r2) [ (r1 R P r2) = r2(S2) F P r1(S1)
Примеры для операций внутреннего и внешних соединений с условием соединения P = (B1 = B2) для исходных отношений (табл. 2.11) приведены в табл. 2.12, 2.13. Из примеров видно, что по результату полного внешнего соединения операнды могут быть восстановлены, но с точностью до возможного появления нигде не определенного кортежа.
2.5.4. Производные операции
Введенные варианты операций соединения являлись производными операциями от 8-ми исходных операций реляционной алгебры. Но и среди исходных операций имеются производные.
Таблица 2.11.: Операнды операций соединения (табл. 2.12, 2.13)
r1(S1)
A1 |
B1 |
a |
1 |
b |
1 |
c |
3 |
d |
4 |
r2(S2)
B2 |
C2 |
1 |
x |
2 |
y |
3 |
z |
Таблица 2.12.: Внутреннее и левое соединения (табл. 2.11, P = (B1 = B2))
r1(S1) P r2(S2)
A1 |
B1 |
B2 |
C2 |
a |
1 |
1 |
x |
b |
1 |
1 |
x |
c |
3 |
3 |
z |
r1(S1)L P r2(S2)
A1 |
B1 |
B2 |
C2 |
a |
1 |
1 |
x |
b |
1 |
1 |
x |
c |
3 |
3 |
z |
d |
4 |
null |
null |
Таблица 2.13.: Правое и полное соединения (табл. 2.11, P = (B1 = B2))
r1(S1)R P r2(S2)
A1 |
B1 |
B2 |
C2 |
a |
1 |
1 |
x |
b |
1 |
1 |
x |
c |
3 |
3 |
z |
null |
null |
2 |
y |
r1(S1)F P r2(S2)
A1 |
B1 |
B2 |
C2 |
a |
1 |
1 |
x |
b |
1 |
1 |
x |
c |
3 |
3 |
z |
d |
4 |
null |
null |
null |
null |
2 |
y |
Утверждение 1. Операция пересечения является производной от операции разности. Доказательство то же, что и в теории множеств (рис. 2.1).
Утверждение 2. Операция естественного соединения является производной операцией от операции декартова произведения и унарных операций выборки, проекции и переименования атрибутов. Действительно, сравним приведенные ранее примеры для операций естественного соединения и внутреннего соединения с условием соединения P = (B1 = B2) (см. табл. 2.9, 2.11, 2.12).
Из примеров ясно, что операция естественного соединения выражается через операции переименования атрибутов, проекции и внутреннего соединения с условием соединения специального вида:
r1(S1) ./ r2(S2) = f%h'1ir1 E %h'2ir2g[S1 [ S2]
Здесь одна из функций переименования является тождественной, а другая переименовывает атрибуты пересечения схем. Условие соединения E задает условие равенства кортежей с использованием исходных и переименованных имен атрибутов на пересечении схем операндов. Остается подставить