Нормализация данных В IDEF1X (дополнительный материал к лекции по информационному моделированию с использованием методологии IDEF1X)
Что такое нормализация? Нормализация Нормализация – это процесс проверки и реорганизации сущностей и атрибутов с целью удовлетворения требований к реляционной модели данных. В результате проведения нормализации должна быть создана структура данных, при которой информация о каждом факте хранится только в одном месте.
Виды нормальных форм Процесс нормализации сводится к последовательному приведению данных к нормальным формам – формализованным требованиям к организации данных. 6 нормальных форм Известно 6 нормальных форм: Первая нормальная форма Первая нормальная форма (1НФ); Вторая нормальная форма Вторая нормальная форма (2НФ); Третья нормальная форма Третья нормальная форма (3НФ); Нормальная форма Бойса-Кодда Нормальная форма Бойса-Кодда (усиленная 3НФ); Четвертая нормальная форма Четвертая нормальная форма (4НФ); Пятая нормальная форма Пятая нормальная форма (5НФ) Обычно ограничиваются приведением данных к 3НФ.
Первая нормальная форма (1NF) Сущность находится в первой нормальной форме тогда и только тогда, когда все атрибуты содержат атомарные значения. Атрибуты «Телефон» и «Хобби» - нарушение первой нормальной формы! Что будет, если у сотрудника будет третье хобби или четвертый телефон? – Информацию негде будет хранить! Если писать через запятую ( , ,…), может не хватить размера поля для записи данных!
Первая нормальная форма (1NF) Для приведения к первой нормальной форме необходимо: 1. Разделить сложные атрибуты на атомарные; 2. Создать новую сущность; 3. Перенести в нее все «повторяющиеся» атрибуты; 4. Выбрать возможный первичный ключ для сущности или создать новый; 5. Установить идентифицирующую связь между сущностями.
Первая нормальная форма (1NF) Сущность «Сотрудник», приведенная к 1НФ:
Вторая нормальная форма (2NF) Сущность находится во 2НФ, если она находится в 1НФ и каждый неключевой атрибут полностью зависит от первичного ключа (не должно быть зависимости от части ключа). Вторая нормальная форма имеет смысл только для сущностей, имеющих сложный первичный ключ. Фамилия, Должность, Имя, Отчество зависят только от табельного номера руководителя, а не от всего составного ключа!
Вторая нормальная форма (2NF) Для приведения сущности ко второй нормальной форме следует: 1. Выделить атрибуты, которые зависят только от части первичного ключа, создать новую сущность; 2. Поместить атрибуты, зависящие от части ключа, в их собственную (новую) сущность; 3. Установить идентифицирующую связь между сущностями.
Вторая нормальная форма (2NF) Сущность «Проект», приведенная ко второй нормальной форме:
Третья нормальная форма (3NF) неключевой атрибут неключевого атрибута Сущность находится в 3НФ, если она находится во 2НФ и никакой неключевой атрибут не зависит от другого неключевого атрибута (не должно быть взаимозависимости между неключевыми атрибутами). Сущность «Сотрудник» находится во второй нормальной форме, но неключевой атрибут «Оклад» зависит от другого неключевого атрибута – «Должности»
Третья нормальная форма (3NF) Для приведения сущности к третьей нормальной форме следует: новую сущность 1. Создать новую сущность и перенести в нее атрибуты с одной и той же зависимостью от неключевого атрибута; 2. Использовать атрибут(ы), определяющий эту зависимость, в качестве первичного ключа новой сущности; идентифицирующую связь 3. Установить идентифицирующую связь между сущностями.
Третья нормальная форма (3NF) Сущность «Сотрудник», приведенная к 3НФ:
Всегда ли хороша нормализация? В результате нормализации все взаимосвязи данных становятся правильно определенными, исключаются аномалии при оперировании данными, модель данных становится легче поддерживать. Однако часто нормализация данных не ведет к повышению производительности ИС в целом (в рассмотренном примере для получения полной информации о сотруднике нужно анализировать не 1 таблицу-сущность, а четыре). В целях повышения производительности приходится сознательно отходить от нормальных форм. В этом случае говорят о денормализации.