- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
Таким образом, схема отношения, находящегося в первой нормальной форме, имеет следующие ограничения функциональных зависимостей, не навязанные объявлениями ключей:
Отношение1NF(ключевые атрибуты, неключевые атрибуты) primary key(ключ)
candidate key(ключ)
foreign key(атрибуты) references {не ключ} ! {неключевые атрибуты} {не ключ} ! {ключевые атрибуты}
4.2.2. Вторая нормальная форма (2NF)
Так как «не ключ» может быть или не быть частью некоторого ключа, то класс функциональных зависимостей {не ключ} ! {неключевые атрибуты} разбивается на два подкласса:
{не ключ но подключ} ! {неключевые атрибуты} {не ключ и не подключ} ! {неключевые атрибуты}
Цель приведения отношений ко второй нормальной форме – исключить из отношений в первой нормальной форме ограничения функциональных зависимостей вида {не ключ но подключ} ! {неключевые атрибуты}.
Все атрибуты функционально зависят от (первичного и кандидатных) ключей. Если при этом атрибуты не зависят от части ключа, то функциональная зависимость от ключа называется полной. Иными словами, цель приведения отношений ко второй нормальной форме заключается в исключении неполных функциональных зависимостей неключевых атрибутов от ключей.
Определение. Отношение находится во второй нормальной форме относительно заданного множества функциональных зависимостей тогда и только тогда, когда оно находится в первой нормальной форме и функциональные зависимости неключевых атрибутов от (первичного и кандидатных) ключей являются полными.
Конец определения.
Примечание. Ясно, что отношение может не находиться во второй нормальной форме, если только оно имеет составные ключи
Следующее отношение Аудитории не находится во второй нормальной форме:
Вариант 1 схемы БД
Сотрудники(№ таб, Ф, И, О) primary key(№ таб)
Аудитории(№ К, № А, ПлощадьКвМ, № таб-К) primary key(№ К, № А)
foreign key(№ таб-К) references Сотрудники(№ таб) {№ К} ! {№ таб-К}
Здесь неключевой атрибут № таб-К (табельный номер коменданта корпуса) функционально зависит от части ключа.
Примечание. Это произошло из-за смешения понятий Корпуса и Аудитории
После приведения ко второй нормальной форме путем декомпозиции отношения Аудитории получим
Вариант 2 схемы БД
Сотрудники(№ таб, Ф, И, О) primary key(№ таб)
Корпуса(№ К, № таб-К) primary key(№ К)
foreign key(№ таб-К) references Сотрудники (№ таб)
Аудитории(№ К, № А, ПлощадьКвМ) primary key(№ К, № А)
foreign key(№ К) references Корпуса(№ К)
Примечание. Обратим внимание на то, что в отношении Аудитории атрибут первичного ключа № К является одновременно внешним ключом, ссылающимся на первичный ключ отношения Корпуса
В данном примере все требуемые функциональные зависимости навязаны объявлениями первичных и внешних ключей (кандидатных нет). Поэтому дальнейшая нормализация не требуется.
Понятие второй нормальной формы самостоятельного значения не имеет. Оно является ослабленной формой понятия третьей нормальной формы.
4.2.3. Третья нормальная форма (3NF)
Цель приведения отношений к третьей нормальной форме – полностью исключить из отношений в первой нормальной функциональные зависимости неключевых атрибутов от не ключей, то есть исключить зависимости вида {не ключ} ! {неключевые атрибуты}.
Определение. Отношение находится в третьей нормальной форме относительно заданного множества функциональных зависимостей тогда и только тогда, когда оно находится во второй нормальной форме и все функциональные зависимости неключевых атрибутов навязаны объявлениями (первичного и кандидатных) ключей.
Таким образом, в третьей нормальной форме каждый неключевой атрибут зависит от каждого (и первичного, и кандидатного) ключа полностью и не зависит ни от чего другого. Ненавязанными могут быть лишь функциональные зависимости ключевых атрибутов.
Конец определения.
Следующее отношение Сотрудники не находится в третьей нормальной форме:
Вариант 1 схемы БД
Должности(КодД, Наименование) primary key(КодД)
candidate key(Наименование)
Сотрудники(№ таб, Ф, И, О, КодД, Разряд, Оклад) primary key(№ таб)
foreign key(КодД) references Должности(КодД) {КодД, Разряд} ! {Оклад}
Примечание. Здесь произошло смешение понятий Сотрудники и ДолжностейРазряды
После приведения к третьей нормальной форме путем декомпозиции отношения Сотрудники получим
Вариант 2 схемы БД
Должности(КодД, Наименование) primary key(КодД)
candidate key(Наименование)
ДолжностейРазряды(КодД, Разряд, Оклад) primary key(КодД, Разряд)
foreign key(КодД) references Должности(КодД)
Сотрудники(№ таб, Ф, И, О, КодД, Разряд) primary key(№ таб)
foreign key(КодД) references Должности(КодД) foreign key(КодД, Разряд)
references ДолжностейРазряды(КодД, Разряд)
Примечание. Обратим внимание на то, что в отношении Сотрудники атрибут КодД является одновременно атрибутом двух различных внешних ключей
В данном примере все функциональные зависимости оказались навязанными объявлениями ключей. Однако в общем случае схема отношения, находящегося в третьей нормальной форме, может иметь ограничения функциональных зависимостей для ключевых атрибутов:
Отношение3NF(ключевые атрибуты, неключевые атрибуты) primary key(ключ)
candidate key(ключ)