Для устранения указанных аномалий (а на самом деле для правильного проектирования модели данных!) применяется метод нормализации отношений. Нормализация основана на понятии функциональной зависимости атрибутов отношения.
Определение 1. Пусть
Множество атрибутов
Замечание. Если атрибуты
Пример 1. В отношении СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ можно привести следующие примеры функциональных зависимостей:
Зависимость атрибутов от ключа отношения:
{Н_СОТР, Н_ПРО}
{Н_СОТР, Н_ПРО}
{Н_СОТР, Н_ПРО}
{Н_СОТР, Н_ПРО}
{Н_СОТР, Н_ПРО}
Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника:
Н_СОТР
Н_СОТР
Н_СОТР
Зависимость наименования проекта от номера проекта:
Н_ПРО
Зависимость номера телефона от номера отдела:
Н_ОТД
Замечание. Приведенные функциональные зависимости не выведены из внешнего вида отношения, приведенного в таблице 1. Эти зависимости отражают взаимосвязи, обнаруженные между объектами предметной области и являются дополнительными ограничениями, определяемыми предметной областью. Таким образом, функциональная зависимость - семантическое понятие. Она возникает, когда по значениям одних данных в предметной области можно определить значения других данных. Например, зная табельный номер сотрудника, можно определить его фамилию, по номеру отдела можно определить телефона. Функциональная зависимость задает дополнительные ограничения на данные, которые могут храниться в отношениях. Для корректности базы данных (адекватности предметной области) необходимо при выполнении операций модификации базы данных проверять все ограничения, определенные функциональными зависимостями.