Первая нормальная форма (1НФ)
При моделировании базы данных работа с отношениями начинается с их представления в первой нормальной форме, которая является начальной и базовой для всех отношений.
Отношение находится в первой нормальной форме (1НФ) тогда и только тогда, когда любое значение каждого кортежа (экземпляра) для каждого атрибута содержит только одно значение.
Это определение формулирует основное требование к значениям каждого атрибута отношения любого из экземпляров — значение должно быть представлено простым типом и не разбиваться на отдельные компоненты (атрибуты). Здесь нужно понимать, что отдельные атрибуты, особенно обозначаемые символьными типами данных, могут представляться в структурированном виде. Например, адрес местонахождения организации, описываемый элементами: индекс, страна, город, улица, дом и т.д. — может быть разбит на отдельные компоненты. Если но требованиям предметной области это так, то такой атрибут не будет отвечать требованиям указанного правила и должен быть разбит на отдельные атрибуты "Индекс", "Страна", "Город", "Улица", "Дом" и т.д. Если же атрибут определяется в виде неразрывной строки описания адреса, то он может быть представлен единым атрибутом "Адрес местонахождения" и будет отвечать требованиям правила.
Возьмем для примера отношение "Товары заказа", имеющее структуру, представленную па рис. 2.71 в первой нормальной форме, где атрибуты "Заказ" и "Товар" в совокупности являются сцепленными первичным ключом и однозначно определяют каждый экземпляр отношения.
Рис. 2.71. Структура отношения "Товары заказа" в первой нормальной форме |
Особенностью рассматриваемого отношения является тот факт, что значение по атрибуту "Ценовой сегмент", помимо функциональной зависимости от товара, обладает еще функциональной зависимостью от поставщика, усложняя, тем самым, процедуры корректной обработки данных (рис. 2.72).
В то же время, отношение обладает функциональной зависимостью поставщика от одного из атрибутов первичного ключа — "Товар". Эти и другие особенности функциональных зависимостей атрибутов друг от друга приводят к возникновению аномалий обновления, представляемых проблемными ситуациями при добавлении, изменении или удалении данных (табл. 2.23). Наличие аномалий требует от разработчика выполнить процедуру нормализации отношения и перехода ко второй и последующим нормальным формам.
Рис. 2.72. Функциональные зависимости отношения "Товары заказа" |
Таблица 2.23 Пример данных по отношению "Товары заказа"
|
В представленном примере нет товара "Аб" от поставщика "П2", поскольку этот товар еще не заказывался и не размещался в заказах. Это означает, что использование данного товара "А6" будет невозможно, пока он не будет заказан, что также формирует аномалии обновления, которые будут мешать эффективной работе с базой данных.
Аномалия добавления. Эта аномалия заключается в том, что в отношение невозможно добавить сведения о новом товаре с его артикулом и поставщиком, пока он не будут добавлен в заказ хотя бы одной единицей. Объясняется это тем, что первичный ключ, по сути своего типа, должен быть заполнен по всем атрибутам, входящим в него. Значит, если добавляется новый товар, то значение атрибута "Заказ" должно заполняться вместе со значением атрибута "Товар".
Аномалия изменения. Эта аномалия возникает, если нужно изменить поставщика со значения, например, "ПЗ" на "П5". Поскольку товар может быть размещен во многих заказах, то связка "Товар" — "Поставщик" будет повторяться во множестве экземпляров (кортежей) отношения. Изменив поставщика в одном экземпляре, необходимо найти все остальные его упоминания и поменять в остальных экземплярах. В противном случае отношение станет противоречивым и хранимые сведения перестанут быть целостными, где. будет нарушена целостность данных.
Аномалия удаления. Эта аномалия возникает, если попытаться удалить заказ с единственной позицией товара, которая, в свою очередь, не используется в других заказах. Такая операция, помимо сведений о заказе, удалит сведения о товаре. По сути, отношение в первой нормальной форме содержит слишком много разнотипных сведений, собранных в одном месте, что приводит к потере большого количества информации при выполнении соответствующей операции над данными.
Эти трудности работы с данными требуют модификации структуры отношения в части его декомпозиции (разделение) на несколько отношений, используя правило исключения зависимостей, которые не являются неприводимыми, т.е. могут быть разделены без потери данных и перейти ко второй нормальной форме.