Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БД.doc
Скачиваний:
35
Добавлен:
23.09.2019
Размер:
1.93 Mб
Скачать

Лекция 13 Понятие о нормальных формах

В лекции дано краткое описание нормальных форм представления реляционных баз данных. Понятия, связанные с нормальными формами 1-3 и формой Бойса-Кодда, будут уточняться в последующих лекциях, форма 4, исключающая многозначную зависимость, и форма 5, проекция-соединение, помимо данной лекции не обсуждаются. Назначение этой лекции – дать по возможности содержательное представление о теме, чтобы была более ясной цель дальнейших формальных рассуждений.

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

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

Встречается и эквивалентный термин: множество X определяет Y. Обозначение – X Y.

Пример

Рассмотрим отношение, заданное следующей схемой:

график (Пилот, Рейс, Дата, Время).

Ясно, что допустимо не любое сочетание значений атрибутов. Их зависимость задается следующими ограничениями:

  • для каждого рейса определено лишь одно время вылета;

  • для атрибутов (Пилот, Дата, Время) определен лишь один рейс;

  • для атрибутов (Рейс, Дата) определен единственный пилот.

Таким образом, задано множество функциональных зависимостей:

Рейс Время

( Пилот, Дата, Время)Рейс

( Рейс, Дата ) Пилот

Конец примера

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

Согласно определению отношения, все его атрибуты атомарны, то есть не могут быть разделены семантически на более мелкие элементы. Отношение, обладающее этим свойством, называется нормализованным или, что то же самое, находящимся в первой нормальной форме (1НФ). Нормальные формы, в которых находятся отношения, составляют иерархию, в которой формы с большими номерами не обладают некоторыми нежелательными свойствами, характерными для форм с меньшими номерами. В теории нормальных форм для реляционных БД рассматривается шесть уровней нормализации: 1НФ – 5НФ и форма Бойса-Кодда (промежуточная между 3НФ и 4НФ). Каждый из следующих уровней ограничивает типы допустимых функциональных зависимостей отношения. Функциональные зависимости отношения составляют его семантику. Уровень нормализации зависит от семантики отношения.

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

Надо заметить, что процесс нормализации не всегда сопровождает проектирование данных. Чаще всего в процессе построения информационной модели проектировщик, руководствуясь естественным порядком построения отношений, строит их сразу в третьей нормальной форме. Дейт в [6] приводит убедительные рассуждения по этому поводу. Более того, он утверждает, что отношения, полученные при проектировании, будут сразу в пятой нормальной форме, если проектировщик не злонамерен. В этом с ним солидарна Атре [2], утверждающая, что вполне достаточно владеть навыками проектирования отношений в 3НФ. Тем не менее, нормализация отношений требуется на этапе сопровождения (развития) программной системы, когда выявляются не известные ранее функциональные зависимости, в результате чего отношения теряют нормальную форму.