- •Глава 1. Базы данных и системы управления 9
- •Глава 2. Организация доступа к данным 45
- •Глава 3. Реляционная алгебра 60
- •Глава 4. Основы sql 67
- •Глава 5. Проектирование реляционных баз данных 89
- •Глава 6. Взаимодействие sql с приложениями 116
- •Глава 7. Некоторые проблемы администрирования баз данных 154
- •Базы данных и системы управления
- •Файловые системы
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков баз данных
- •Трехуровневая модель архитектуры систем баз данных
- •Модели данных
- •Характеристика связей
- •Компьютерно-ориентированные модели данных
- •Реляционный подход
- •Ключи и целостность реляционных данных
- •Моделирование концептуальной схемы базы данных
- •Организация доступа к данным
- •Страницы и файлы
- •Индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Методы сжатия
- •Метод дифференциального сжатия
- •Иерархические методы сжатия
- •Кодирование по методу Хаффмена
- •Реляционная алгебра
- •Традиционные реляционные операции
- •Специальные реляционные операции
- •Дополнительные реляционные операции
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формул
- •Основы sql
- •Типы данных
- •Строковые типы данных
- •Битовые типы данных
- •Точные числовые типы данных
- •Вещественные числовые типы данных
- •Календарные типы данных
- •Значения null
- •Создание и обслуживание таблиц
- •Запрос на выборку
- •Статистические функции
- •Создание соединений
- •Вложенные запросы
- •Запрос на объединение
- •Запросы, выполняющие реляционные операции вычитания, пересечения и деления
- •Запросы на изменение
- •Перекрестные запросы
- •Проектирование реляционных баз данных
- •Нормализация отношений
- •Функциональные зависимости
- •Н ормальные формы, обоснованные функциональными зависимостями
- •Нормальная форма Бойса–Кодда
- •Нормальные формы, обоснованные более сложными зависимостями
- •Процедура нормализации и проектирования
- •Пример проектирования базы данных
- •Назначение и предметная область
- •Проектирование базы данных
- •Взаимодействие sql с приложениями
- •Встраивание sql-операторов в программный код
- •Тип курсора
- •Триггеры
- •Хранимые процедуры
- •Стандартные интерфейсы для доступа к данным
- •Информационное окружение веб-сервера
- •Стандарт odbc
- •Уровни соответствия
- •Уровень соответствия odbc
- •Задание имени источника данных odbc
- •Расширяемый язык разметки xml
- •Xml как язык разметки
- •Материализация хмl-документов с помощью xslt
- •Создание хмl-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Нормальные формы, обоснованные более сложными зависимостями
В
Д
П
У
Физика
Петров
Иванов
Механика
Оптика
Математика
Иванов
Геометрия
Мат. анализ
Рис. 5.5.1.
Ненормализованное отношение ДПУ
О
Д
П
У
Физика
Петров
Механика
Физика
Петров
Оптика
Физика
Иванов
Механика
Физика
Иванов
Оптика
Математика
Иванов
Геометрия
Математика
Иванов
Мат. анализ
Рис. 5.5.2.
Нормализованное отношение ДПУ
Д
П
Д
У
Физика
Петров
Физика
Механика
Физика
Иванов
Физика
Оптика
Математика
Иванов
Математика
Геометрия
Математика
Мат. анализ
Рис. 5.5.3. Проекции
{Д,П} и {Д,У} отношения ДПУ
В отношении ДПУ есть две многозначные зависимости: ДП и ДУ.
Первая из этих многозначных зависимостей означает, что хотя для каждой дисциплины не существует одного соответствующего только этой дисциплине преподавателя, т.е. не выполняется функциональная зависимость ДП, тем не менее, каждая дисциплина имеет определенное множество преподавателей, независимо от наименования учебника.
Вторая многозначная зависимость интерпретируется аналогично.
Пусть А,В,С являются произвольными подмножествами множества атрибутов отношения R. В многозначно зависит от А (АВ) тогда и только тогда, когда множество значений В, соответствующее заданной паре значений (А,С) отношения R, зависит только от А, но не зависит от С.
Очевидно, что многозначная зависимость АВ выполняется только тогда, когда выполняется многозначная зависимость АС. Многозначные зависимости всегда образуют связанные пары: AB||C.
Возвращаясь к проблемам отношения ДПУ, можно сказать, что они связаны с существованием многозначных зависимостей, которые не являются функциональными (именно наличие таких зависимостей требует вставлять два кортежа, когда надо добавить данные еще об одном преподавателе физики). Проекции {Д,П} и {Д,У} не содержат многозначных зависимостей и поэтому являются более желательными. Прежде чем дать определение четвертой нормальной формы, познакомимся с теоремой Фейгина (R. Fagin):
Пусть А,В,С являются множествами атрибутов отношения R{А,В,С}. Отношение R будет равно соединению его проекций {А,В} и {А,С} тогда и только тогда, когда для отношения R выполняются многозначные зависимости АВ и АС.
Отношение R находится в четвертой нормальной форме (4НФ) тогда и только тогда, когда в случае существования многозначной зависимости AB все остальные атрибуты R функционально зависят от A.
Другими словами:
Отношение R находится в 4НФ, если оно находится в НФБК и все многозначные зависимости отношения R фактически являются функциональными зависимостями от потенциальных ключей.
Отношение ДПУ не находится в 4НФ, поскольку содержит многозначную зависимость, не являющуюся функциональной зависимостью. Однако обе проекции {Д,П} и {Д,У} находятся в 4НФ, которая по сравнению с НФБК позволяет создать улучшенную структуру.
Отметим, что концепция независимых проекций Риссанена, основанная на функциональных зависимостях (отношение R{A,B,C}, удовлетворяющее функциональным зависимостям A→B и B→C, следует разбивать на проекции {A,B} и {B,C}, а не {A,B} и {A,C}), применима и к выбору пути декомпозиции, если вместо функциональных зависимостей присутствуют многозначные зависимости A→→B и A→→C. В Этом случае следует провести декомпозицию на отношения {A,B} и {A,C}.
Во всех рассмотренных до этого момента процедурах нормализации производилась декомпозиция одного отношения на два. Иногда это сделать не удается, но возможна декомпозиция на большее число отношений, каждое из которых обладает лучшими свойствами. Такое отношение называется n-декомпозируемым отношением, для которого n>2.
Рассмотрим, например, отношение П-Д-Пр (Поставщики-Детали-Проекты) (рис. 5.5.4). Один и тот же поставщик может поставлять несколько типов деталей для разных проектов. Первичным ключом этого отношения является полная совокупность его атрибутов, отсутствуют функциональные и многозначные зависимости (многозначной зависимости нет, т.к. для П1 набор деталей зависит от проекта). Поэтому отношение находится в 4НФ. Однако в нем могут существовать аномалии (не всегда очевидные), которые можно устранить путем декомпозиции на три отношения (декомпозиция на два отношения невозможно, так как обратная операция не позволяет вернуться к исходному отношению). Причем, степень декомпозиции зависит от кортежей. Например, если в исходном отношении убрать один из первых трех кортежей или добавить кортеж (П2,Д1,Пр2), то его можно разделить на две проекции. Если же в исходном отношении убрать последний кортеж или заменить его кортежем (П2,Д1,Пр2), то его нельзя разделить ни на две, ни на три проекции без нарушения целостности данных. Д екомпозируемость этого отношения может быть фундаментальным и независящим от времени свойством, если добавить дополнительное ограничение.
Утверждение, что ПДПр равно соединению трех проекций ПД, ДПр, ПрП эквивалентно следующему утверждению:
ЕСЛИ пара (П1,Д1) принадлежит отношению ПД
И пара (Д1,Пр1) принадлежит отношению ДПр
И пара (Пр,1П1) принадлежит отношению ПрП,
ТО тройка (П1,Д1,Пр1) принадлежит отношению ПДПр.
Это очевидно, так как тройка П1,Д1,Пр1 находится в соединении проекций ПД, ДПр, ПрП. Обратное утверждение также является истинным всегда.
С другой стороны, справедливо утверждение, что пара (П1,Д1) присутствует в отношении ПД, если тройка (П1,Д1,Пр2) присутствует в отношении ПДПр, пара (П1,Пр1) – в отношении ППр, если (П1,Д2,Пр1) есть в ПДПр, а пара (Д1,Пр1) – в отношении ДПр, если (П2,Д1,Пр1) есть в ПДПр. Тогда, если учесть наше первое утверждение, то в таком отношении должен присутствовать и кортеж (П1,Д1,Пр1)! Значит, чтобы обеспечить корректность отношения ПДПр в любой момент времени, необходимо ввести следующее ограничение:
Если кортежи (П1,Д1,Пр2), (П2,Д1,Пр1) и (П1,Д2,Пр1) принадлежат отношению ПДПр, то и кортеж (П1,Д1,Пр1) также принадлежит этому отношению.
Если это утверждение верно всегда, то есть, для всевозможных дополнительных кортежей отношения ПДПр, то будет получено независящее от времени ограничение на данное отношение, которое называется 3D-ограничением. Поскольку 3D-ограничение удовлетворяется тогда, когда отношение равносильно соединению некоторых его проекций, то такое ограничение называется зависимостью соединения.
Можно обратить внимание на то, что в рассматриваемом нами примере существует некоторая цикличность в данных. Критерием n-декомпозиции отношения для n>2 является некоторое циклическое ограничение. Что означает циклическое ограничение? Пусть в нашем примере последний кортеж означает, что Смитт поставляет гаечные ключи для Манхеттенского проекта. Первые три кортежа несут информацию о том, что Смитт поставляет гаечные ключи, Смитт является поставщиком для Манхеттенского проекта и гаечные ключи используются в Манхеттенском проекте. Но из этих утверждений не следует, что именно Смитт поставляет ключи для данного проекта. Если декомпозировать отношение ПДПр, состоящее из этих трех кортежей, на три проекции, то их соединение не будет равно исходному – появится «лишний» четвертый кортеж (П1,Д1,Пр1), о чем было сказано выше. Чтобы избежать такое несоответствие и вводится дополнительное ограничение, которое может быть легко реализовано декомпозицией отношения. Такая декомпозиция возможна без потерь информации только в случае существования зависимости соединения:
Отношение R(X,Y,...,Z) удовлетворяет зависимости соединения *(X,Y,...,Z) в том и только в том случае, когда R восстанавливается без потерь путем соединения своих проекций на X, Y, ..., Z.
Рассмотрим два примера аномалий, которые существуют в отношении, на которое наложено 3D-ограничение.
1
П
Д
Пр
П1
Д1
Пр2
П1
Д2
Пр1
Рис. 5.6.5.
2
П
Д
Пр
П1
Д1
Пр2
П1
Д2
Пр1
П2
Д1
Пр1
П1
Д1
Пр1
Рис. 5.6.6.
Сейчас теорему Фейгина можно сформулировать в таком виде:
Отношение R(А,В,С) удовлетворяет зависимости соединения *(АВ,АС) тогда и только тогда, когда оно удовлетворяет многозначным зависимостям АВ и АС.
Зависимость соединения является обобщением понятия многозначной зависимости. Более того, это наиболее общая форма зависимости.
Возвращаясь к отношению Поставщики-Детали-Проекты, можно обнаружить, что оно содержит зависимость соединения ПДПр *(ПД, ДПр, ПрП), которая не является ни функциональной, ни многозначной зависимостью и не подразумевается его единственным потенциальным ключом – комбинацией всех атрибутов. Такое отношение рекомендуется декомпозировать на проекции, заданные зависимостью соединения. Такой процесс декомпозиции может повторяться до тех пор, пока все результирующие отношения не будут находиться в пятой нормальной форме (5НФ).
Отношение R находится в пятой нормальной форме в том и только в том случае, когда любая зависимость соединения в R следует из существования некоторого возможного ключа в R.
Менее строгое определение 5НФ:
Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.
Сейчас можно сказать, что после 3-декомпозиции отношения ПДПр его проекции ПД, ДПр и ППр находятся в 5 нормальной форме, так как для них вовсе нет зависимости соединения.
Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. Весьма не просто подобрать реальную таблицу, которая находилась бы в 4НФ, но не была бы в 5НФ.
Для заданного отношения R можно утверждать, что оно находится в 5НФ при условии, что известны все потенциальные ключи и все зависимости соединения. Однако нет алгоритма, позволяющего определять все зависимости соединения. Но такие отношения чрезвычайно редки на практике.
Пятая нормальная форма – это последняя нормальная форма, которую можно получить путем декомпозиции. Ее условия достаточно нетривиальны, но она практически не используется.