
- •4 Основы проектирования баз данных
- •4.1 Основные цели и этапы проектирования баз данных
- •4.2 Подходы к проектированию и проблемы определения структур данных
- •4.2.1 Подходы к проектированию бд
- •4.2.2Избыточное дублирование данных
- •4.2.3 Аномалии обновления отношений
- •4.2.4 Формирование исходного отношения
- •4.3 Основы теории функциональных зависимостей
- •4.3.1 Общие положения и определение понятия функциональной зависимости данных
- •4.3.2 Виды функциональных зависимостей
- •4.3.3 Аксиомы Армстронга
- •4.4 Метод нормальных форм
- •4.4.1 Цели и порядок проведения нормализации отношений
- •4.4.2 Первая нормальная форма и основная операция нормализации
- •4.4.3 Вторая нормальная форма
- •4.4.4 Третья нормальная форма
- •4.4.5 Нормальная форма Бойса-Кодда
- •4.5 Рекомендации по разработке структур данных
4.4.2 Первая нормальная форма и основная операция нормализации
Отношение находится в 1НФ, если все его атрибуты являются простыми (имеют атомарные или одиночные значения).
Исходное отношение строится таким образом, чтобы оно было в 1НФ.
Перевод отношения в следующую нормальную форму осуществляется методом «декомпозиции без потерь». Такая декомпозиция должна обеспечить то, что запросы (выборка данных по условию) к исходному отношению и к отношениям, получаемым в результате декомпозиции, дадут одинаковый результат.
Основной операцией метода является операция проекции. Поясним ее на примере. Предположим, что в отношении R(A,B,C,D,E,...) устранение функциональной зависимости С—>D позволит перевести его в следующую нормальную форму. Для решения этой задачи выполним декомпозицию отношения Rна два новых отношенияR1(A,B,C,E,...) иR2(C,D). ОтношениеR2 является проекцией отношения R на атрибуты С и D.
Исходное отношение ПРЕПОДАВАТЕЛЬ, используемое для иллюстрации метода, имеет составной ключФИО, Предм, Группаи находится в1НФ,поскольку все его атрибуты простые.
В этом отношении в соответствии с рис. 4.5б можно выделить частичную зависимость атрибутов Стаж, Д_Стаж, Каф, Должн, Оклад от ключа - указанные атрибуты находятся в функциональной зависимости от атрибутаФИО, являющегося частью составного ключа
Эта частичная зависимость от ключа приводит к следующему:
1. В отношении присутствует явное и неявное избыточное дублирование данных, например:
повторение сведений о стаже, должности и окладе преподавателей, проводящих занятия в нескольких группах и/или по разным предметам;
повторение сведений об окладах для одной и той же должности или о надбавках за одинаковый стаж.
2.Следствием избыточного дублирования данных является проблема ихредактирования (аномалия обновления). Например, изменение должности у преподавателя Иванова И.М. потребует просмотра всех кортежей отношения и внесения изменений в те из них, которые содержат сведения о данном преподавателе.
3. Аномалия добавления (ввода): невозможность ввода данных о преподавателе, не назначенном ни на одну группу (так как при этом одно из полей, составляющих ключ БД – номер группы – оказывается пустым). Аналогичным образом невозможным оказывается ввод данных о предмете, пока на него не назначен ни один преподаватель.
4. Аномалия удаления: при удалении данных о предмете могут быть потеряны данные о преподавателях, ведущих данный предмет, если они не заняты на других предметах. Аналогично, при удалении данных о преподавателе можно потерять данные о предмете, если этот преподаватель был единственным, проводившим занятия по данному предмету.
Эти недостатки должны постепенно устраняться по мере приведения БД к последующим нормальным формам.
4.4.3 Вторая нормальная форма
Наличие неполных функциональных зависимостей – основная причина недостатков 1НФ, показанных в п.4.4.2. Для их устранения отношения приводятся ко второй нормальной форме (2НФ).
Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного).
Примечание – Если таблица имеет простой (т.е. состоящий из одного атрибута) ключ, то она всегда находится в 2НФ (по определению 2НФ).
Таблица приводится к 2НФ в следующем порядке:
выделяются все атрибуты, находящиеся в полной функциональной зависимостиот ключа. Эти атрибуты, вместе с ключом, выделяются в отдельную таблицу;
выделяются атрибуты, находящиеся в функциональной зависимости от какой-либо из частей ключа. Эти атрибуты вместе с той частью ключа, от которой они зависят, выделяются в отдельную таблицу. Такое действие выполняется для всех неполных функциональных зависимостей, имеющихся в таблице.
То же в терминах реляционной алгебры звучит так.
Для устранения частичной зависимости и перевода отношения в 2НФ необходимо, используя операцию проекции, разложить его на несколько отношений следующим образом:
построить проекцию без атрибутов, находящихся в частичной функциональной зависимости от первичного ключа;
построить проекции на части составного первичного ключа и атрибуты, зависящие от этих частей.
В результате шага нормализации для примера на рис. 4.4 получим два отношения R1 и R2 в 2НФ (рис. 4.6).
В отношении R1 первичный ключ является составным и состоит из атрибутов ФИО, Предм, Группа. Напомним, что данный ключ в отношении R1 получен в предположении, что каждый преподаватель в одной группе по одному предмету может либо читать лекции, либо проводить практические занятия. В отношенииR2 ключФИО.
Рис. 4.6. Отношения БД в 2НФ
БД, приведенные к 2НФ, также могут иметь существенные недостатки, как избыточность данных, так и типовые аномалии: добавления (ввода), удаления и обновления. Так, в рассматриваемом примере исследование отношений R1 и R2 показывает, что переход к 2НФ позволил исключить явную избыточность данных в таблице R2 - повторение строк со сведениями о преподавателях. Однако, в R2 по-прежнему имеет место неявное дублирование данных.
Для дальнейшего совершенствования отношения необходимо преобразовать его в ЗНФ.