Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
05.06.2015
Размер:
295.94 Кб
Скачать

Нормализация______________________

По причинам, рассмотренным ранее, мы допускаем в реляционной модели только нормализованные отношения.

Нормализованным отношением называется отношение, каждый домен которого содержит только атомарные (неделимые) значения, и поэтому каждое значение в отношении в свою очередь является атомарным.

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

Родоначальник реляционной модели данных Кодд определил три уровня нормализации, которые он назвал первой, второй и третьей нормальными формами соответственно. Все нормализованные отношения находятся в первой нормальной форме (1НФ), некоторые отношения 1НФ находятся также во второй нормальной форме (2НФ) и некоторые отношения 2НФ находятся в третьей нормальной форме. Впоследствии Фейгин определил четвертую нормальную форму (4НФ), в которой находятся некоторые отношения ЗНФ (см. рисунок.)'.

Более удобной формой, упомянутой в предыдущем абзаце является четвертая нормальная форма; таким образом, цель этого раздела состоит в том, чтобы показать преимущества 4НФ и то, как преобразовать отношение, находящееся не в 4НФ, в эквивалентную совокупность отношений 4НФ. Мы уделим мало внимания строгости наших аргументов и определений, а будем в значительной степени полагаться на интуицию.

Действительно, одним из аргументов является то, что четвертая нормальная форма, несмотря на ее таинственное название, в сущности, заключает в себя очень простую и общедоступную идею:

"Один факт хранится один раз".

' В литературе дается определение 5НФ. Однако, часто отмечается, что достаточно сложно привести пример отношения, находящегося в 4НФ и не находящегося в 5НФ. Вследствие этого 5НФ здесь не рассматривается.

На практике в большинстве случаев достаточно рассмотрения первых трех нормальных форм, что мы и сделаем на наших лекциях.

Функциональная зависимость

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

Если задано отношение R, то мы говорим, что атрибут Y отношения R функционально зависит от атрибута Х отношения R тогда и только тогда, когда каждое значение Х в отношении R в каждый момент времени связано точно с одним значением Y.

Заметим, что одно и то же значение Х может появиться в нескольких различных кортежах отношения R. Если Y функционально' зависит от X, то по определению каждый из этих кортежей должен содержать также одно и то же значение Y.

Например, в отношении DEPT каждый из атрибутов DNAME, LOC функционально зависит от атрибута DEPTNO, т. е, для определенного значения DEPTNO существует в точности одно соответствующее значение каждого из атрибутов DNAME и LOC. Можно представить эти функциональные зависимости с помощью диаграммы, как показано на рисунке.

Выявление функциональных зависимостей является существенной частью понимания семантики2 данных. Например, тот факт, что LOC функционально зависит от DEPTNO, означает, что каждый отдел расположен точно в одном городе. Другими словами, в реальном мире существует некоторое ограничение, которое отражается в базе данных, а именно то, что каждый отдел располагается точно в одном городе. Так как это ограничение является частью семантики ситуации, оно должно быть определенным образом отображено в модели данных. Это обеспечивается заданием ограничения в описании модели данных (т. е. в концептуальной схеме) для того, чтобы СУБД могла его учитывать. Способ задания заключается в объявлении Функциональной зависимости. Позднее мы увидим, что концепции дальнейшей нормализации приводит к простому способу объявления таких функциональных зависимостей.

Введем также понятие полной функциональной зависимости.

Атрибут Y находится в полной функциональной зависимости от атрибута X, если он функционально зависит от Х и не зависит функционально от любого подмножества атрибута Х (X должен быть составным).

Например, в отношении DEPT атрибут LOC функционально зависит от составного атрибута (DEPTNO, DNAME). Однако он не находится в полной функциональной зависимости от этого составного атрибута, потому что также функционально зависит от одного DEPTNO.

' Вспомните привычное у =f(x). 2 Синоним слова "семантика" - смысл.

Под термином "функциональная зависимость" здесь мы будем понимать "полную функциональную зависимость", если специально не будет оговорено обратное.

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