Первая нормальная форма (1НФ)

Таблица считается нормализованной или приведенной к первой нормальной форме (1НФ), если все значения полей простые (то есть неделимые).

Иначе говоря, каждый атрибут для каждого экземпляра сущности имеет только одно значение. Требование 1НФ, по сути, повторяет свойство реляционных таблиц: каждый элемент таблицы — один элемент данных

Рассмотрим пример. Таблица 3.1.3 содержит сведения о дисциплинах, преподавателях и учебниках

Таблица 3.1.3. Пример множественных значений атрибутов в таблице

Данная таблица не удовлетворяет требованию 1НФ, потому что содержит ячейки, в которых указаны несколько возможных значений реквизита

Приведение к 1НФ заключается в выполнении операции вставки: в таблицу включаются дополнительные строки, так, чтобы в каждой строке каждый атрибут принимал единственное значение. В нашем примере необходимо добавить строки, чтобы каждый преподаватель и каждая книга были помещены в отдельную ячейку (табл. 3.1.4). Всего для указанных значений реквизитов потребуется 3 х 4 + 2 х 3 = 18 строк

Таблица 3.1.4. Приведение таблицы к 1НФ

Рассмотрим другой пример. Таблица 3.1.5 имеет так называемые составные атрибуты — «ФИО», «Адрес» и «Паспорт». Составные атрибуты затрудняют обработку данных. Для упрощения обработки удобнее разбить поле «ФИО» на отдельные поля («Фамилия», «Имя», «Отчество»); поле «Адрес» — на поля «Город», «Улица», «Дом», «Квартира»; поле «Паспорт» — на поля «Серия» и «Номер»

Таблица 3.1.5. Пример составных атрибутов

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: