Страница 5 из 8
Сначала, как всегда, формальное определение.
Схема отношения 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НФ.
|