Нормализация отношений в базе данных. |
Классическая технология проектирования реляционных баз данных связана с теорией нормализации , основанной на анализе функциональных зависимостей между атрибутами отношений. Функциональной зависимостью набора атрибутов B отношения R от набора атрибутов А того же отношения называется такое соотношения проекцийR [ A ] и R [ B ] , при котором в каждый момент времени любому элементу проекции R [ A ] соответствует только один элемент проекции R [ B ] , входящий вместе с ним в какой-либо кортеж отношения R . Обозначение: R . A ® R . B Взаимно-независимые – атрибуты, которые не зависят функционально друг от друга. Аксиомы функциональных зависимостей:
Проектирование схемы базы данных обычно осуществляется путём декомпозиции (разбиения) исходного набора отношений, при этом полученные отношения являющихся проекциями исходных. Схемы базы данных называются эквивалентными , если содержание исходной базы может быть получено путём естественного соединения отношений, входящих в результирующую схему, и при этом не появляется новых кортежей в исходной базе данных. Нормализация – это процесс проектирования схемы базы данных с использованием декомпозиции. Каждой нормальной форме соответствует некоторый определённый набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений.
Отношение находится в первой нормальной форме тогда и только тогда, когда значения всех его атрибутов атомарны. Это определение является синонимом определения отношения в теории реляционных баз данных. Пример отношения, которое НЕ находится в 1 NF : расписание занятий Пример отношения, которое НЕ находится в 1 NF : расписание занятий
Для перевода отношения в 1 NF необходимо разделить с дублированием содержания общие ячейки на отдельные записи.
Отношение находится во второй нормальной форме тогда и только тогда, когда оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей непервичных атрибутов от атрибутов первичного ключа. Функциональная зависимость R . A ® R . B называется полной , если набор атрибутов В функционально зависит от А , но не зависит функционально от любого подмножества А , то есть если " А 1 I А ? R . A –/ ® R . B . В противном случае функциональная зависимость называется неполной . Пример отношения, которое НЕ находится во 2 NF : результаты сессии. Рассмотрим отношение R ( ФИО, номер зачетки , группа, дисциплина , оценка ) . Первичный ключ подчеркнут. Однако при этом атрибуты (ФИО, группа) зависят только от части первичного ключа – от атрибута (номер зачетки) . При этом возможны следующие аномалии : - в результате ошибки оператора студенту по результатам одного или нескольких экзаменов приписали не ту группу. - если студент не сдал ни одного экзамена, то он не существует. Для приведения отношения во 2 NF следует провести декомпозицию (разбить на проекции), например так:
Приведение таблицы ко второй нормальной форме позволяет избежать повторения (избыточности) данных.
Отношение находится в третьей нормальной форме тогда и только тогда, когда оно находится во второй нормальной форме и не содержит транзитивных зависимостей. Функциональная зависимость R . A ® R . B является транзитивной , если существует набор атрибутов C такой, что:
Иными словами , требование 3 NF сводится к тому, чтобы все неключевые поля зависели только от первичного ключа и не зависели друг от друга. Пример отношения, которое находится во 2 NF , но НЕ находится в 3 NF : связь студента с группой, факультетом, специализацией. Дано отношение: R ( номер зачетки , ФИО, группа, факультет, кафедра ). Первичный ключ подчеркнут. Так как он состоит из одного атрибута, то критерий 2 NF выполнен. В отношении имеются транзитивные зависимости, в числе которых: 1) номер зачётки ® группа (обратное неоднозначно), группа ® факультет, номер зачётки ® факультет . 2) номер зачётки ® кафедра, кафедра ® факультет, номер зачётки ® факультет . Для приведения отношения в 3 NF требуется декомпозиция следующего вида:
Отношение находится в нормальной форме Бойса-Кодда, если оно находится в третьей нормальной форме и каждый детерминант отношения является возможным ключом этого отношения. Определение: Если в отношении существует несколько функциональных зависимостей, то каждый атрибут или набор атрибутов, от которого зависит другой атрибут, называется детерминантом отношения. Иными словами , отношение находится в BCNF , если любая функциональная зависимость между его атрибутами сводится к полной функциональной зависимости от возможного ключа. Пример отношения, которое находится в 3 NF , но НЕ находится в BCNF : таблица результатов приемных экзаменов: Дано отношение: R ( идентификатор , номер паспорта, предмет , оценка ) . Ответ на вопрос: зачем? Например, один абитуриент потерял свою карточку и ему выдали другую с другим номером. Второй абитуриент – гениальный ребенок, и у него пока нет паспорта. Имеются следующие функциональные зависимости:
Транзитивных зависимостей нет, так как зависимость 3 имеет обратную 4. Таким образом, отношение находится в 3 NF . Но функциональные зависимости между атрибутами идентификатор и номер паспорта не являются зависимостями от возможного ключа этого отношения. Для приведения отношения в BCNF возможна декомпозиция следующего вида:
Ответ на вопрос: зачем? Например, один абитуриент потерял свою карточку и ему выдали другую с другим номером. Второй абитуриент – гениальный ребенок, и у него пока нет паспорта. В большинстве случаев достижение третьей нормальной формы или даже формы Бойса-Кодда считается достаточным для реальных проектов баз данных, однако в теории нормализации существуют и другие нормальные формы:
Отношение находится в четвёртой нормальной форме в том и только в том случае, если существует многозначная зависимость А –>> B и все остальные атрибуты R функционально зависят от А. Определение: В отношении R ( A , B , C ) существует многозначная зависимость R . A –>> R . B в том и только в том случае, если множество значений В , соответствующее паре значений атрибутов А и С , зависит только от А и не зависит от С . Иными словами , отношение находится в четвёртой нормальной форме, если оно находится в BCNF, и все его многозначные зависимости являются функциональными зависимостями от потенциальных ключей. Пример (1) отношения, которое НЕ находится в 4 NF : список дисциплин, которые предстоит прослушать студенту первого курса: Дано отношение: R ( номер зачетки, группа, дисциплина ) . Перечень дисциплин, которые должен слушать студент на первом курсе, определяется исключительно номером группы, а не номером зачетки. То есть, в данном отношении существуют две многозначные зависимости:
Это означает, что каждой группе однозначно соответствует перечень дисциплин по учебному плану, и номер группы определяет список студентов, которые в этой группе учатся. При этом возможны следующие аномалии : - Мы не можем хранить информацию о новой группе и перечне её дисциплин до тех пор, пока в неё не будут зачислены студенты. - Если в группу добавляется новый студент, то необходимо сгенерировать для него весь перечень дисциплин для данной группы. Для приведения отношения в 4 NF возможна декомпозиция следующего вида:
Пример (2): меню: Исходное отношение: R ( блюдо, повар , рецепт ) . Повар умеет готовить разные блюда, одинаково названные блюда могут отличаться рецептом приготовления. Декомпозиция:
Отношение R находится в пятой нормальной форме (нормальной форме проекции-соединения) в том и только в том случае, когда любая зависимость соединения в R следует из существования некоторого возможного ключа в R . Определение: Отношение R ( A , B , … Z ) удовлетворяет зависимости соединения (А, B , … Z ) в том и только в том случае, когда R восстанавливается без потерь путём соединения своих проекций на A , B , … Z (наборы атрибутов отношения R ). Полной декомпозицией отношения называют такую совокупность произвольного числа его проекций, соединение которых полностью совпадает с содержимым исходного отношения. Иными словами , отношение находится в пятой нормальной форме тогда и только тогда, когда в каждой его полной декомпозиции все проекции содержат возможный ключ. Пример отношения, которое находится в 4 NF , но НЕ находится в 5 NF : почасовики. Дано отношение: R ( преподаватель, кафедра, дисциплина ) . Считается, что приглашённый преподаватель может работать на нескольких кафедрах и вести различные дисциплины. В этом случае ключом отношения является полный набор из трёх атрибутов. В отношении отсутствуют многозначные зависимости, и поэтому оно находится в 4 NF . Однако в нём нет наборов атрибутов, которые составляют возможные ключи отношения, и потому это отношение не в PJ / NF . При этом провести полную декомпозицию на два отношения нельзя . Возможна декомпозиция следующего вида:
Отношение, не имеющее ни одной полной декомпозиции, также находится в пятой нормальной форме. Задание: провести нормализацию отношения «продажи магазина»: R (дата продажи, фамилия и имя продавца, фамилия и имя покупателя, город, улица, наименование товара, сумма). |