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