Существует 6 нормальных форм, на практике ограничиваются 4-мя. 1,2,3 НФ и форма Бойса-Кодда (НФБК).

Первая нормальная форма. Реляционная таблица приведена к первой нормальной форме тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто. Так, если из таблицы Сотрудник требуется получать сведения по имени сотрудника, то поле ФИО следует разбить на части Фамилия, Имя, Отчество.

Таблица находится в 1НФ, но присутствует дублирование данных.

Для приведения к 1НФ можно использовать следующий алгоритм:

1. Определить поле, которое можно назначить первичным ключом. Если такого поля нет, то добавить новое уникальное ключевое поле.

2. Определить группы повторяющихся полей.

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

4. Назначить первичные ключи в новых таблицах. В качестве ключевых полей можно использовать поля таблицы или добавить новое поле. Если ключевое поле имеет большой размер, предпочтительней добавлять новое поле.

5. Определить тип отношения между таблицами.

Вторая нормальная форма. Реляционная таблица задана во второй нормальной форме, если она удовлетворяет требованиям 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом. Чтобы привести таблицу ко второй нормальной форме, необходимо определить функциональную зависимость полей. Функциональная зависимость полей — это зависимость, при которой каждый неключевой атрибут функционально полно зависит от ключа. 2НФ применяется к таблицам, которые имеют составной ключ.

Для приведения к 2НФ необходимо:

6. Вынести все частичнозависимые поля в отдельную таблицу.

7. Определить ключевые поля.

8. Установить отношения между таблицами.

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

Переведем отношение во 2НФ. Отношение во 2НФ., если каждый неключевой атрибут функционально полно зависит от первичного ключа. Здесь ключ составной - ФИО Предм Группа.

1. этого строим проекцию отношения без атрибутов находящихся в частичной ФЗ от первичного ключа.

2. построим проекции на части составного первичного ключа с атрибутами зависимыми от этих частей.

R1

ФИО Предм Группа ВидЗан
Иванов И.П. СУБД Практ
Иванов И.П. VBA Практ
Петров М.И. СУБД Лекция
Петров М.И. ОС Практ
Сидоров Н.Г VBA Лекция
Сидоров Н.Г ОС Лекция
Егоров В.Н.. ПЭВМ Лекция

R2

ФИО Долж Оклад Стаж Д_Стаж Каф
Иванов И.П. препод
Иванов И.П. препод
Петров М.И. Ст.препод
Петров М.И. Ст.препод
Сидоров Н.Г препод
Сидоров Н.Г препод
Егоров В.Н. препод

Во 2-й таблице избавились от явного дублирования, повторение строк с ФИО, но осталось неявное дублирование остальных данных.

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

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

 

Перейдем к 3НФ. Отношение в 3НФ, если каждый неключевой атрибут нетранзитивно зависит от первичного ключа или все неключевые отношения взаимно независимы и полностью зависят от первичного ключа.

Транзитивными зависимостями являются:

ФИО àДолж àОклад

ФИО àОклад àДолж

ФИО àСтажàД_Стаж

R3

ФИО Долж Стаж Каф
Иванов И.П. препод
Иванов И.П. препод
Петров М.И. Ст.препод
Петров М.И. Ст.препод
Сидоров Н.Г препод
Сидоров Н.Г препод
Егоров В.Н. препод

 

R4 R5

Долж Оклад
препод
Ст.препод
Стаж Д_Стаж

 

Здесь можно закончить нормализацию, но если этого недостаточно, то переходят к НФБК.

Нормальная форма Бойса-Кодда – усиленная 3НФ. Таблица находится в НФБК тогда и только тогда, когда любая функциональная зависимость между ее атрибутами сводится е полной функциональной зависимости от возможного первичного ключа. Т.е. единственной ФЗ в любой таблице должна быть зависимость вида АàК , К- первичный ключ, а А – некий атрибут.

Итог: БД состоит из 4-х таблиц R1, R3,R4,R5.