Требования первой нормальной формы - 1NF
Отношение находится в 1NF, если оно удовлетворяет двум условиям:
1. значения всех его атрибутов атомарны;
2. отсутствуют повторяющиеся группы атрибутов.
Первое из условий выполняется для любого отношения автоматически, поскольку оно следует из свойств отношений. Здесь требуется только уточнить понятие атомарности для текстовых атрибутов. Например, такие атрибуты, как ФИО или адрес_сотрудника, можно считать атомарными только в тех случаях, когда все запросы к базе данных требуют извлечения этих атрибутов целиком, без вычленения отдельных составляющих.
В подавляющем большинстве случаев ФИО хранится в виде трех отдельных атрибутов-атомов, адрес также разбивается на несколько составляющих, каждая из которых в рамках бизнес-правил предметной области является неделимым атомом. В рамках данной лекции будем считать ФИО атомарным атрибутом.
Второе условие требует отдельного пояснения. Повторяющейся группой называют подмножество атрибутов отношения, определенных на одном и том же домене и имеющих одинаковую семантику. Например, рассмотрим отношение
Доходы_сотрудников
(код, ФИО, доход_за_январь, за_февраль,…,за_декабрь)
Здесь явно видна повторяющаяся группа из 12 атрибутов, каждый из которых хранит доходы сотрудников за различные месяцы. Такая таблица удобна для формирования отчетов и справок о доходах, она не содержит нежелательных ФЗ, однако многие операции реляционной алгебры не рассчитаны на такую структуру, поэтому многие запросы будут сложно реализовать. В данном случае устранить повторяющуюся группу несложно, поскольку каждый из месяцев имеет известный порядковый номер. Изменим схему отношения:
Доходы_сотрудников (код, ФИО, номер месяца, доход)
Количество кортежей в новом отношении будет в 12 раз больше, чем в исходном, но строить произвольные запросы к такому отношению гораздо удобнее. Данное отношение удовлетворяет требованиям первой нормальной формы.
К сожалению, выполнив преобразование отношения, мы внесли одну серьезную проблему – значения атрибута ФИО будут дублироваться в каждом из 12 кортежей, относящихся к одному сотруднику.
На следующем этапе нормализации эта проблема будет решена.
Дата добавления: 2015-08-26; просмотров: 1709;