Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование реляционных баз данных.docx
Скачиваний:
55
Добавлен:
16.03.2016
Размер:
189.97 Кб
Скачать

4.7. Пятая нормальная форма

Во всех рассмотренных выше нормальных формах производилась декомпозиция одного отношения в два. Иногда это сделать не удается, но возможна декомпозиция в большее число отношений, каждое из которых обладает лучшими свойствами.

Пусть имеется следующее отношение:

СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ (Код_сотр, Код_отд, Код_пр)

Бизнес-правило: один сотрудник может работать в нескольких отделах, в каждом отделе он может работать над несколькими проектами. Схематически это можно отобразить как 1 (сотрудник) M (отделов) N (проектов).

Первичным ключом этого отношения является полная совокупность его атрибутов, отсутствуют функциональные и многозначные зависимости. Поэтому отношение находится в четвертой нормальной форме. Однако в нем могут существовать аномалии удаления и включения. Аномалия удаления: сотрудник в одиночку работал над проектом, затем уволился. Аномалия включения: сотрудник зачислен в отдел, но еще не привязан к проекту. Это можно устранить путем декомпозиции в три отношения:

СОТРУДНИКИ_ОТДЕЛЫ (Код_сотр, Код_отд)

СОТРУДНИКИ_ПРОЕКТЫ (Код_сотр, Код_пр)

ОТДЕЛЫ_ПРОЕКТЫ (Код_отд, Код_пр)

В основе пятой нормальной формы лежит зависимость соединения, которая является обобщением как многозначной, так и функциональной зависимости.

Определение. Отношение R (X, Y, ..., Z) удовлетворяет зависимости соединения * (X, Y, ..., Z) в том и только в том случае, когда R восстановимо естественным соединением своих проекций на X, Y, ..., Z.

Если ввести имена составных атрибутов

СО = {Код_сотр, Код_отд}

СП = { Код_сотр, Код_пр}

ОП = {Код_отд, Код_пр},

на основе приведенного выше бизнес-правила можно сделать вывод, что в отношении СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ существует зависимость соединения: * (СО, СП, ОП).

Определение. Отношение R находится в пятой нормальной форме (нормальной форме проекции-соединения PJ/NF) в том и только в том случае, когда любая зависимость соединения в R следует из существования некоторого возможного ключа в R.

Пятая нормальная форма – это последняя нормальная форма, которую можно получить путем декомпозиции. Ее условия достаточно нетривиальны, и на практике эта нормальная форма используется нечасто.

4.8. Связь нормальных форм

Нормализация позволяет привести базу данных к корректному виду, при котором обеспечивается успешное выполнение всех операций с данными, уменьшается избыточность. Строгий порядок следования нормальных форм, по сути, задает технологический процесс проектирования базы данных. Его выполнение обеспечивает достижение проектировщиком цели наилучшего представления структуры данных. Связь нормальных форм можно представить следующим образом:

  1. Индексирование

5.1. Устройство индексов

Очень важным элементом баз данных являются индексы. Это определенным образом организованные хранимые данные, получаемые из хранимых записей. Индексы служат для ускорения поиска. Их организация направлена исключительно на эффективное выполнение этой операции. Упрощенно их можно представить в виде оглавления книги.

Индексные данные, как правило, дублируют некоторые поля хранимых записей или являются результатом их преобразования. Поиск с помощью индексов ускоряется как за счет специальной организации индексных данных, так и за счет того, что в индекс включается только часть исходных записей. Индексы более компактны, чем полные таблицы или элементы других моделей данных. Поэтому при их использовании сокращается количество обращений к устройству долговременного хранения (например, жесткому магнитному диску) – основному источнику временных затрат при обработке данных.

Одним из средств ускорения работы индексов является поддержание определенного порядка размещения индексных данных. При любых операциях вставки, удаления, изменения данных в таблице связанные с ними индексы сортируются. Очевидно, это замедляет выполнение соответствующих операций. Поэтому при загрузке или изменении большого количества записей индексы отключаются автоматически самой СУБД или по команде администратора базы данных.

При наличии индексов поиск сначала ведется в индексной структуре. В этой структуре хранится упорядоченный список значений ключа с привязкой к каждому значению ключа списка идентификаторов кортежей таблицы (или экземпляров записей в нереляционных моделях данных). Одна организация индекса отличается от другой главным образом способом поиска ключа с заданным значением.

Чаще всего при организации индексов используются древовидные структуры. Множество различного вида деревьев математически описано и широко применяется, начиная с иерархических моделей данных. Однако в индексах используется относительно ограниченный класс деревьев, обеспечивающий наиболее быстрый поиск. В подавляющем большинстве случаев дерево сбалансированное, т.е. длина пути от корня дерева к любому его листу одинакова. За счет этого создается наиболее удобная для обработки регулярная структура. Сбалансированность дерева с учетом операций вставки и удаления поддерживается СУБД.

С точки зрения физической организации древовидный индекс представляется как мультисписочная структура страниц внешней памяти. Каждому узлу дерева соответствует блок внешней памяти (страница). Внутренние и листовые страницы обычно имеют разную структуру.

В ранних СУБД для организации индексов применялось бинарное дерево (рис. 5.1.).

Рис. 5.1. Бинарное дерево

Структура узлов этого дерева показана на рис. 5.2. Узел промежуточного уровня может быть в двух вариантах. Первый вариант более компактен по памяти, но требует для любого ключа поиска прохода по всему дереву. Второй вариант обеспечивает более быстрый поиск за счет прекращения обхода дерева и перехода к искомым данным, если ключ поиска в индексе найден.

Рис. 5.2. Структура узлов бинарного дерева

Следующим этапом стали В-деревья (рис. 5.3). По сравнению с бинарными деревьями они имеют большую ветвистость и, как следствие, меньшую высоту. Ветвистость – это свойство каждого узла дерева ссылаться на большое количество потомков. Максимальное количество потомков, на которое может ссылаться узел, называется порядком В-дерева. В-деревья обеспечивают более высокую скорость поиска по сравнению с бинарными деревьями. Уменьшение высоты дерева достигнуто изменением структуры узла. На рис. 5.4. показан пример промежуточного узла (внутренней страницы) В-дерева. Листовые страницы В-дерева содержат ключи, каждому из которых сопоставлен упорядоченный список идентификаторов кортежей, включающих данное значение ключа. Ключи как на промежуточной, так и на листовой странице отсортированы. Листовые страницы связаны одно- или двунаправленным списком.

Рис. 5.3. В-дерево

Рис. 5.4. Структура узла В-дерева

Поиск в B-дереве – это прохождение от корня к листу в соответствии с заданным значением ключа. Поскольку деревья сильно ветвистые и сбалансированные, то для выполнения поиска по любому значению ключа потребуется одно и то же (обычно небольшое) число обменов с внешней памятью.

В настоящее время основным методом организации индексов подавляющего большинства СУБД является В* или В+ дерево. В* и В+ – синонимы. Отличие В*-дерева от В-дерева заключается в том, что все значения ключа дублируются в листьях. Это увеличивает объем индекса, но ускоряет поиск. На рис. 5.5. показано отличие В-дерева от В*-дерева. Для простоты взято дерево степени k=1, в котором минимальное количество ключей в вершине равно. Максимальное количество ключей равно 2*k. В корне может быть один ключ. Ключи числовые.

Естественно, вся работа производится в буферах оперативной памяти. Страница, в которую требуется занести запись, считывается в буфер, и в нем выполняется операция вставки, удаления или корректировки.