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

База данных / examen / theme_04_is

.pdf
Скачиваний:
39
Добавлен:
18.03.2015
Размер:
395.78 Кб
Скачать

никаких работ в организации. Если для этого поля задать ограничение NOT NULL, то в таблицу нельзя будет ввести информацию о новом сотруднике. Это и называется аномалией ввода.

Выводы

Очевидно, что аномалии обновления, удаления и ввода крайне нежелательны. Чтобы свести

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

§7. Нормальные формы

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

Втеории реляционных баз данных обычно выделяется следующая последовательность нормальных форм:

-первая нормальная форма (1NF);

-вторая нормальная форма (2NF);

-третья нормальная форма (3NF);

-нормальная форма Бойса—Кодда (BCNF);

-четвертая нормальная форма (4NF);

-пятая нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF). Основные свойства нормальных форм:

-каждая следующая нормальная форма в некотором смысле лучше предыдущей;

-при переходе к следующей нормальной форме свойства предыдущих нормальных свойств сохраняются.

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

Наиболее важные на практике нормальные формы отношений основываются на фундаментальном в теории реляционных баз данных понятии функциональной зависимости. Функционально зависимым считается такой атрибут, значение которого однозначно определяется значением другого атрибута. Функционально зависимые атрибуты обозначаются следующим образом: X -> У. Эта запись означает, что если два кортежа в таблице имеют одно и то же значение атрибута X, то они имеют одно и то же значение атрибута У. Атрибут, указываемый в левой части, называется детерминантом.

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

Первая нормальная форма

21

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

Вторая нормальная форма

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

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

Чтобы перейти от первой нормальной формы ко второй, нужно выполнить следующие шаги:

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

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

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

В нашем примере для приведения таблицы СОТРУДНИКИ ко второй нормальной форме ее следует разделить на две таблицы. Первичный ключ исходной таблицы состоит из двух атрибутов

«Код сотрудника» и «Должность». Все же личные данные о сотрудниках зависят только от атрибута «Код сотрудника». Атрибуты, соответствующие этим данным, мы и выделим в качестве одной из таблиц, которую назовем ФИЗИЧЕСКИЕ ЛИЦА. Информацию же о должностях и их оплате вынесем в другую таблицу, которой присвоим имя СОТРУДНИКИ. Схема приведения таблицы ко второй нормальной форме приведена на рис. 4.3.

22

Код сотрудника
Имя
Фамилия
Отчество Дата рождения Адрес Телефон
Должность
Разряд
Зарплата
Рейтинг Дата приема
Дата увольнения

Код физического лица

Имя

Фамилия

Отчество Дата рождения Адрес Телефон

Код сотрудника

Код физического лица Должность Разряд Зарплата Рейтинг Дата приема

Дата увольнения Рис. 4.3. Приведение таблицы ко второй нормальной форме

Полученные две таблицы связаны между собой по полю «Код физического лица», которое является первичным ключом для таблицы ФИЗИЧЕСКИЕ ЛИЦА и внешним ключом для таблицы СОТРУДНИКИ. Данное поле отсутствовало в исходной таблице и было добавлено при проведении нормализации.

Третья нормальная форма

Рассмотрим таблицу СОТРУДНИКИ, полученную после приведения исходной таблицы ко второй нормальной форме. Для этой таблицы существует функциональная связь между полями «Код сотрудника» и «Зарплата». Однако эта функциональная связь является транзитивной.

Функциональная зависимость атрибутов X и Y отношения R называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости Х-> Z и Z -> У, но отсутствует функциональная зависимость Z ->X.

Транзитивность зависимости полей «Код сотрудника» и «Зарплата» означает, что заработная плата на самом деле является характеристикой не сотрудника, а должности, которую он занимает. В результате мы не сможем занести в базу данных информацию, характеризующую заработную плату должности, до тех пор, пока не появится хотя бы один сотрудник, эту должность занимающий (так как первичный ключ не может содержать неопределенное значение). При удалении кортежа, описывающего последнего сотрудника, занимающего данную должность, мы лишимся информации о заработной плате, соответствующей этой должности. Кроме того, чтобы согласованным образом изменить заработную плату, соответствующую должности, будет необходимо предварительно найти все записи, описывающие сотрудников, занимающих данную должность. Таким образом, в таблице СОТРУДНИКИ по-прежнему существуют аномалии. Их

23

можно устранить путем дальнейшей нормализации — приведения базы данных к третьей нормальной форме.

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

Чтобы перейти от второй нормальной формы к третьей, нужно выполнить следующие шаги:

1.Определить все поля (или группы полей), от которых зависят другие поля.

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

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

Обратите внимание, что мы опять добавили новый атрибут — «Код должности», который является первичным ключом для отношения ДОЛЖНОСТИ и внешним ключом для отношения СОТРУДНИКИ. Добавление новых атрибутов при нормализации позволяет получить таблицы с простыми первичными ключами, что облегчает выполнение операции связывания таблиц. Такие первичные ключи, как правило, являются искусственными.

Приведем рассматриваемую в качестве примера базу данных к третьей нормальной форме. Для этого разделим таблицу СОТРУДНИКИ на две — СОТРУДНИКИ и ДОЛЖНОСТИ (рис. 4.4).

Код сотрудника

Код физического лица

Должность

Разряд

Зарплата

Рейтинг

Дата приема

Дата увольнения

Код сотрудника

Код должности

Код физического лица

Рейтинг

Дата приема

Дата увольнения

Код должности

Должность

Разряд

Зарплата

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

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

24

Код физического лица

 

Код сотрудника

 

Код должности

Имя

 

Код должности

 

Должность

Фамилия

 

Код физического лица

 

Разряд

Отчество

 

Рейтинг

 

 

Дата рождения

 

Дата приема

 

 

Адрес

 

Дата увольнения

 

 

Телефон

 

 

 

 

Рис. 4.5. Структура базы данных, приведенной к третьей нормальной форме В заключение приведем схему базы данных, рассматриваемой в качестве примера и

приведенной к третьей нормальной форме (рис. 4.5).

25

Соседние файлы в папке examen