Нормализация данных. Приведение ER-модели к 1 НФ и 2 НФ.

Нормализация данных–это процесс приведения модели к виду,позволяющему получить в дальнейшем структуру БД,в кот устранена избыточность хранения и сведены к минимуму аномалии при добавлении,удалении,изменении данных.В процессе нормализации модель должна быть последовательно приведена к 1,2 и3 норм формам (1НФ, 2НФ, 3НФ).

Приведение к 1НФ состоит в исключении множественных или повторяющихся атрибутов.Атрибут (группа атрибутов) является множественным,если для одного экземпляра сущности может быть несколько различных значений атрибута.В примере с сущностью «Студент» таким атрибутом является «Оценка»,так как студент имеет много оценок по различным предметам.

Приведение к 1НФ осуществляется по следующим правилам:множественный атрибут или группа таких атрибутов выделяются в самостоятельную сущность;между исходной и новой сущностями устанавливается связь.

1НФ, т.о, является механизмом выявления упущенных сущностей и связей.Приведение к 2НФ предполагает вынесение атрибутов,кот не удовлетворяют требованиям функционально полной зависимости от уникального идентификатора сущности,являющегося составным ключом.Атрибут А функционально зависит от атрибута В (ФЗ : В —› А), если каждому значению А соответствует не более одного значения В(не только от одного атрибута,но и от группы атрибутов – ФЗ:B, C,D—›А)Функц завис является полной,если атрибут зависит от составного ключа и не зависит ни от какого подмножества данного ключа,т.е.имеет место зависимостьФЗ:K1,K2,...,Kn—›Аи не справедлива ни одна из следующих зависимостей:ФЗ:K1—›А;ФЗ:K2—›А;..ФЗ:K1,K2—›Аи тдПриведение к 2НФ осуществляется по следующим правилам:атрибуты,зависящие от части составного ключа,и сама эта часть выносятся в отдельную(новую)сущность и исключаются из исходной;ключом новой сущности становится часть ключа исходной,от кот имеет место функционально неполная зависимость;между исходной и новой сущностями устанавливается связь типа М:1,ключевая со стороны «многие».

Приведение к 2НФ,также как и приведение к1НФ,позволяет выявить в модели упущенные сущности и связи,и устранить избыточность данных в исходной модели.