Нормализация реляционных баз данных
Страница 5. 1НФ


 

1НФ

Сначала, как всегда, формальное определение.

Схема отношения R находится в 1НФ, если значения в dom(A) являются атомарными для каждого атрибута A в R.

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

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

Простейший пример: в БД отдела кадров предприятия в таблице, хранящей личные сведения о сотрудниках, имеется атрибут "домашний-адрес", в котором адрес хранится в формате: город, улица, дом[/корпус], [квартира] (следуя общепринятой нотации, здесь в квадратных скобках указаны опциональные фрагменты адреса, которые могут отсутствовать). В данном случае адрес хранится в виде единой текстовой строки, поскольку маловероятно, чтобы потребовалось выбрать сотрудников, скажем, по номеру квартиры. Таким образом, в контексте БД отдела кадров адрес является атомарным понятием, и его деление на составные части не имеет смысла, т.к. только внесет в БД излишнюю громоздкость.

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

Итак, очевидно, что в отрыве от контекста затруднительно дать строгое определение атомарности, за исключением самых простых случаев (например, домен натуральных чисел). В большинстве случаев необходимо располагать сведениями о предметной области, а также о том, каким образом планируется обрабатывать хранимые в БД данные.

Приведение отношения к 1НФ - довольно простая операция. Мы должны просмотреть схему отношения и разделить составные атрибуты на различные строки/столбцы. Возможно, эту операцию придется повторить несколько раз до тех пор, пока каждый из атрибутов не станет атомарным (с учетом сказанного в предыдущем абзаце).

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

В БД имеется таблица контрагентов, в которой хранятся следующие сведения:
  • наименование агента;
  • город;
  • адрес;
  • электронный адрес;
  • веб-страница;
  • вид агента (поставщик или клиент);
  • контактные лица (может быть несколько), должность контактного лица, телефон контактного лица.

Табл. 2
Наим. Город Адрес Эл. почта WWW Вид Конт. лица
Поршневой з-д Владимир Ул. 2-я Кольцевая, 17 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script www.plunger.ru Поставщик Иванов И.И., зам. дир., тел (3254)76-15-95(3254)76-15-35ООО Вымпел
ИЧП Альфа Владимир Ул. Пушкинская, 37, оф. 565 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script   Клиент Васильев В.В., директор, тел (3254)74-57-45
Наим. Город Адрес Эл. почта WWW Вид Конт. лица
Поршневой з-д Владимир Ул. 2-я Кольцевая, 17 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script www.plunger.ru Поставщик Иванов И.И., зам. дир., тел (3254)76-15-95Поршневой з-д
ИЧП Альфа Владимир Ул. Пушкинская, 37, оф. 565 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script   Клиент Васильев В.В., директор, тел (3254)74-57-45
Наим. Город Адрес Эл. почта WWW Вид Должность
Поршневой з-д Владимир Ул. 2-я Кольцевая, 17 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script www.pler.ru Поставщик зам. дир.
Поршневой з-д Владимир Ул. 2-я Кольцевая, 17 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script www.pler.ru Поставщик нач. отд. сбыта
ООО Вымпел Курск Ул. Гоголя, 25 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script   Клиент директор
ИЧП Альфа Владимир Ул. Пушкинская, 37, оф. 565 Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script   Клиент директор


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

 
« Предыдущая статья   Следующая статья »