Пусть создана таблица Студент, содержащая следующие поля: № группы, ФИО, № зачетки, Дата рождения, Название специальности, Название факультета. Такая организация хранения информации имеет ряд недостатков:
- дублирование информации (наименование специальности и факультета повторяются для множества студентов), следовательно, большой объем таблицы;
- процедура обновления информации в таблице довольно сложна и трудоемка (например, изменилось название факультета).
Таблицы реляционной БД должны отвечать требованиям нормализации отношений. Нормализация отношений – это формальный аппарат ограничений на формирование таблиц (отношений), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение базы данных.
Имеется три нормальные формы отношений.
1).Первая нормальная форма. Отношение приведено к первой нормальной форме, если все его атрибуты простые (т.е. далее неделимые). Так, если из таблицы Студент требуется получать сведения по имени студента, то атрибут ФИО следует разбить на части. Таблица Студент=(Название специальности, Название факультета) приведена к первой нормальной форме.
2). Вторая нормальная форма. Отношение задано во второй нормальной форме, если оно является отношением в первой нормальной форме, и каждый неключевой атрибут (реквизит) полностью зависит от любого возможного ключа. Чтобы привести отношение к второй нормальной форме, необходимо определить функциональную зависимость реквизитов. Функциональная зависимость реквизитов – это зависимость, при которой в экземпляре информационного объекта определенному значению ключевого реквизита соответствует только одно значение описательного реквизита. Например, отношение Студент = (№ группы, Фамилия, Имя, Отчество, № зачетки, Дата рождения) находится во второй нормальной форме. Все неключевые реквизиты однозначно определены и зависят от ключа - № зачетки.
Если ключ является составным. то говорят о функционально полной зависимости. Функционально полная зависимость неключевых реквизитов заключается в том, что каждый неключевой реквизит функционально зависит от составного ключа, но не находится в функциональной зависимости ни от какой части составного ключа. Например, отношение Успеваемость = (№ зачетки, Фамилия, Имя, Отчество, Дисциплина, Оценка) находится в первой нормальной форме. Но реквизиты Фамилия, Имя, Отчество не находятся в функционально полной зависимости от составного ключа № зачетки + Дисциплина. Реквизит Дисциплина может иметь несколько значений описательного элемента Фамилия и т.д.
3). Третья нормальная форма. Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме и отсутствует транзитивная зависимость реквизитов. Транзитивная зависимость наблюдается в том случае, если один из двух описательных реквизитов зависит от ключа, а другой описательный реквизит зависит от первого описательного реквизита. Например, в отношении Студент= (№ группы, ФИО, № зачетки, Дата рождения, Староста) три реквизита: № зачетки, № группы, Староста находятся в транзитивной зависимости. № группы зависит от № зачетки, а Староста зависит от № группы. Для устранения транзитивной зависимости необходимо часть реквизитов отношения Студент перенести в другое отношение Группа. Отношения примут следующий вид. Студент = (№ группы, ФИО, № зачетки, Дата рождения). Группа = (№ группы, Староста).