Главная проблема, которую требуется решить при создании базы данных, - создать для нее такую структуру, которая бы обеспечивала минимальное дублирование информации и упрощала процедуры обработки и обновления данных, представленных набором таблиц. Для того чтобы облегчить твою жизнь, теоретики баз данных предложили универсальный способ решения этой проблемы. Этот способ сформулирован в виде специальных требований к организации данных в ходе проектирования, которые получили названия нормальных форм (НФ). Первые три нормальные формы оказались самыми живучими и распространились больше других.
Согласно требованиям первой нормальной формы, все атрибуты таблицы должны быть простыми, то есть состоять из одного неделимого элемента данных. Например, если сделать в базе данных атрибут "Адрес",то в него можно будет заносить значения данных типа "г. Москва, 3-я улица Строителей, д. 25, кв. 12". Но определить, из какого города человек с таким адресом и существует ли такой же адрес в другом городе, тебе будет, поверь, очень сложно, потому что придется писать целую процедуру обработки текстовой записи, чтобы вычленить город.
Вторая нормальная форма требует соблюдения условий первой НФ, а также дополнительно каждый неключевой атрибут должен однозначно зависеть только от первичного ключа. Имеются в виду функциональные зависимости из реальной предметной области. Здесь возникают проблемы с выявлением зависимостей, если первичный ключ является составным, то есть состоит из нескольких атрибутов.
Таблица находится в третьей нормальной форме, если она удовлетворяет требованиям второй НФ и если при этом любой неключевой атрибут зависит от ключа нетранзитивно (термин понятен по примеру из жизни - транзитный, промежуточный вокзал). Транзитивной является такая зависимость, при которой какой-либо неключевой атрибут зависит от другого неключевого атрибута, а тот, в свою очередь, уже зависит от ключа.