- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
Домен, определенный с помощью характеристического предиката, соответствует так называемому
подтипу данных, определенному пользователем.
Понятие домена имеет семантическую нагрузку: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. Например, домены dom(№ паспорта) и dom(№ зачетки) относятся к типу целых чисел, но сравнение значений из этих доменов смысла не имеет. Кроме того, домен не всегда может быть практически задан. Домен dom(Имя), скорее всего, будет определен на типе строк символов, и тогда в число его допустимых значений попадут, в частности, строки, начинающиеся с мягкого знака.
Примечание. Заметим, что среди значений домена null-значение не появляется. Допустимость или не допустимость null-значений среди значений атрибута определяется с помощью специального флажка, указываемого в операторе создания отношения (таблицы)
Атрибут a = (name(a) : dom(a)) определяется как упорядоченная пара, состоящая из имени атрибута name(a) (имени столбца) и домена атрибута dom(a). Вместо запятой в обозначении упорядоченной пары используется двоеточие для того, чтобы подчеркнуть близость понятий домена и типа данных.
2.4.3. Схема отношения
Схема отношения S = fa j a 2 Sg определяется как конечное множество атрибутов с уникальными именами и изображается как строка заголовков столбцов. Число атрибутов в схеме отношения называется степенью отношения и обозначается как мощность множества jSj. Схема отношения может ассоциироваться с именем (схемы) отношения, изображаемым как тематический заголовок таблицы. В текстовой форме именованные схемы отношений изображаются в виде именованного списка имен атрибутов, например, Студенты(№ ЗК, Ф, И, О). При этом домены атрибутов, как правило, не указываются, но подразумеваются.
Согласно определению, схема отношения может быть и пустой. Хотя создание пустой схемы СУБД не допустит, абстракция пустой схемы S = ; удобна в теории.
2.4.4. Именованное значение атрибута
Именованное значение атрибута x(a) = (name(a) : x); x 2 dom(a) определяется как упорядоченная пара, состоящая из имени атрибута и значения атрибута. Значение атрибута берется из домена атрибута. Именованное значение атрибута соответствует ячейке тела таблицы, например, (№ ЗК: 100), (Г.р.: 1986).
2.4.5. Кортеж
Кортеж t t(S) = fx(a) j a 2 def(t) Sg (tuple – кортеж) со схемой отношения S определяется как множество именованных значений атрибутов из области определения кортежа def(t) и изображается как строка тела таблицы. Одному имени атрибута должно соответствовать не более одного значения атрибута. В зависимости от области определения кортеж называется
1)def(t) S – частичным (общий случай),
2)def(t) = S – полным,
3)def(t) S – неполным,
4)def(t) = ; – нигде не определенным.
Приведем примеры изображения полного, неполного и нигде не определенного кортежей в текстовой форме:
t(№ ЗК, Ф, И, О) = {(№ ЗК: 100), (Ф: Иванов), (И: Иван), (О: Иванович)}
t(№ ЗК, Ф, И, О) = {(№ ЗК: 100), (Ф: Иванов)} t(№ ЗК, Ф, И, О) = {} ;(№ ЗК, Ф, И, О)
Полный кортеж определен на всей схеме отношения. Неполный кортеж не определен хотя бы на одном атрибуте. Нигде не определенный кортеж со схемой S представляет собой пустое множество, ассоциированное со схемой, и в расширенной форме обозначается как ;(S).
В табличной форме неопределенные значения кортежа изображаются как null-значения. В частности, нигде не определенный кортеж изображается как строка таблицы, состоящая из одних null- значений.
Почему формы изображения неопределенных значений кортежа в текстовой и табличной формах различаются? Почему бы в текстовой форме не указывать явно null-значения для неопределенных значений кортежа на атрибутах? Дело в том, что из кортежей необходимо образовывать множества, представляющие отношения, а для этого необходимо ввести понятие равенства кортежей. Сравнимыми считаются кортежи над одной и той же схемой отношения (это понятно). Но как быть с null-значениями? Если null-значение ввести в определение кортежа, то например, все кортежи вида {(№ ЗК: 100), (Ф: Иванов), (И: null), (О: null)} считались бы формально различными, так как при их покомпонентном сравнении было бы получено логическое значение null, интерпретируемое как false. Таким образом, согласно данному определению кортежи (в теории) равны только тогда, когда они полностью идентичны, то есть имеют одну и ту же область определения (имеют не null-значения для одних и тех же атрибутов) и в этой области совпадают.
2.4.6. Отношение
Отношение r r(S) = ft(S) j t 2 rg со схемой отношения S определяется как конечное множество кортежей со схемой S. Количество кортежей в отношении называется мощностью отношения и обозначается как мощность множества jrj. В табличной форме представления отношению соответствует тело таблицы.
Отношение со схемой S может быть пустым, и тогда для него необходимо использовать расширенную форму обозначения ;(S). Это обозначение совпадает с обозначением нигде не определенного кортежа и, следовательно, интерпретация обозначения должна определяться по контексту.
Сравнимыми считаются отношения с одной и той же схемой.
Вследующих случаях отношение называется
1)8t 2 r(S) [def(t) S] – частичным (общий случай),
2)8t 2 r(S) [def(t) = S] – полным,
3)9t 2 r(S) [def(t) S] – неполным,
4)8t 2 r(S) [def(t) = ;] – нигде не определенным.
Полное отношение не содержит null-значений в теле таблицы, а неполное – содержит. Нигде не определенное отношение либо является пустым ;(S), либо содержит (единственный, будучи не мультимножеством) нигде не определенный кортеж f;(S)g.
2.4.7. Схема базы данных