![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Нормализация (декомпозиция) реляционной модели
В процессе нормализации элементы данных группируются в таблицы, представляющие объекты и их взаимосвязи. Теория нормализации основана на том, что определенный набор таблиц обладает лучшими свойствами при включении, модификации и удалении данных, чем остальные наборы таблиц, с помощью которых могут быть представлены одни и те же данные. В реляционных БД модель содержит как структурную, так и семантическую информацию. Структурная информация связана с объявлением отношений, а семантическая выражается функциональными зависимостями между атрибутами отношений. Некоторые функциональные зависимости могут быть нежелательными из-за побочных эффектов или аномалий, которые возникают при модификации БД. В связи с этим возникает вопрос о корректности представленной схемы. Корректной считается схема, в которой отсутствуют нежелательные функциональные зависимости. В противном случае приходится прибегать к декомпозиции, при которой данное множество отношений заменяется другим множеством отношений (число отношений растет). Т.е. суть нормализации - устранить нежелательные функциональные зависимости между атрибутами. Итак, нормализацич - это пошаговый процесс замены данной совокупности отношений другой, в которой отношения имеют болле простую регулярную структуру. Введение нормализации отношений при разработке информационной модели обеспечивает минимальный объем физической БД (т.е. записанной на каком-то носителе) и ее максимальное быстродействие. В теории нормальных форм определяются различные нормальные формы, которые ограничивают различные типы допустимых функциональных зависимостей. Различают 5 нормальных форм плюс нормальная форма Бойса-Кодда. Для их обозначения используются сокращения: 1НФ, 2НФ, 3НФ, НФБК, 4НФ, 5НФ. Рассмотрим эти формы. 1НФ. Таблица находится в первой нормальной форме, если значение всех ее атрибутов простые, т.е. значение атрибута не может быть множеством. Ненормализованная таблица - это многоуровневая таблица. Пример. КЛИЕНТ (Код_Кл, Наим_Кл, ЗАКАЗ) ЗАКАЗ (Код_Т,Наим_Т, Цена_Т, Гарантия, Кол_Т, Код_Ф, Наим_Ф ) Пусть имеются следующие данные о покупках клиента
Для преобразования этой ненормализованной таблицы в 1НФ необходимо в составном отношении КЛИЕНТ заменить составной атрибут ЗАКАЗ соответствующими простыми атрибутами
Итак первый этап нормализации заключается в образовании двумерной таблицы, содержащей все необходимые атрибуты информационной модели, и в выделении ключевых атрибутов. Ключевым атрибутом этого отношения будет множество атрибутов А={Код_Кл, Код_Т, Код_Ф}. Очевидно, что полученная весьма внушительная таблица будет содержать очень разнородную информацию. В этом случае будут наблюдаться различные аномалии. Аномалия включения. Если появляется новый товар, то информация о товаре не сможет храниться в БД то тех пор, пока кто-нибудь из клиентов его не закажет. Аномалия обновления. При изменении цены товара в некоторой фирме необходим полный просмотр отношения для того, чтобы изменить значение соответствующего элемента данных. Аномалия удаления. При банкротстве некоторой фирмы удаляются данные, которые не имеют к этому никакого отношения, например, сведения о товарах, клиентах и т.д. Следующий этап нормализации устраняет неполную функциональную зависимость неключевых атрибутов от возможных ключей таблицы.
Неполная зависимость означает следующее: Пусть А={А1, …, Аn} - набор атрибутов, являющийся ключом некоторой таблицы, и B - неключевой атрибут этой же таблицы. Если найдется некоторое подмножество атрибутов, множества А, от которого зависит атрибут В, то говорят, что В зависит от ключа А неполно. Для указанной таблицы наблюдаются такие неполные функциональные зависимости: А={Код_Кл, Код_Т, Код_Ф}; 1. А 2. А 3. А 4. А 5. А 6. А Полная зависимость наблюдается только для неключевого атрибута Кол. 2НФ. Таблица задана во второй нормальной форме, если она является таблицей в первой нормальной форме и каждый атрибут, не являющийся первичным в этой таблице, полностью зависит от любого возможного ключа этой таблицы. Естественно, что если, все ключи таблицы содержат по одному атрибуту, то эта таблица задана во второй нормальной форме. Если ключи сосотоят более, чем из одного атрибута, таблица заданная в первой нормальной форме может не быть таблицей во второй нормальной форме. Исключая неполные зависимости приходим к таблицам во второй нормальной форме.
Следующий этап нормализации устраняет транзитивные зависимости неключевых атрибутов таблицы. Если A, B, C - три атрибута некоторой таблицы и А Заметим, что в последней таблице, если предположить, что гарантия зависит от цены товара, то будет наблюдаться транзитивная зависимость атрибута Гар от ключа {Код_Т, Код_Ф}. 3НФ. Таблица задана в третьей нормальной форме, если она находится во второй нормальной форме и каждый атрибут этой таблицы, не являющийся первичным, не транзитивно зависит от ключа этой таблицы. Исключая транзитивную зависимость неключевого атрибута Гар., последняя таблица разбивается на две
В результате трех этапов нормализации мы пришли к следующей логической реляционной модели данных. Эта модель содержит такие объекты: ТОВАР(Код_Т, Наим_Т), ФИРМА(Код_Ф, Наим_Ф), КЛИЕНТ(Код_Кл, Наим_Кл ), ЗАКАЗ(Код_Т, Код_Ф, Код_Кл, Кол), СТОИМОСТЬ(Код_Т, Код_Ф, Цена) ГАРАНТИЯ(Цена, Гарантия). Ключевой атрибут таблиц выделен. Связи между атрибутами таблиц представлены следующей схемой.
![]() |