ПОИСК Статьи Чертежи Таблицы Нормализация данных из "Создание информационных систем с AllFusion Modeling Suite " На практике обычно ограничиваются приведением данных к третьей нормальной форме (полная атрибутивная модель, FA, см. 2.2.1). В данном подразделе будут достаточно кратко рассмотрены первые три нормальные формы и, в качестве иллюстрации, четвертая нормальная форма. [c.150] Для углубленного изучения нормализации следует рекомендовать книгу К. Дж. Дейта Введение в системы баз данных (Пер. с англ. - 6-е изд. -К. Диалектика, 1998-784 с.). [c.150] Нормальные формы основаны на понятии функциональной зависимости (в дальнейшем будет использоваться термин зависимость ). Приведем формальное определение для функциональной зависимости. [c.150] Функциональная зависимость (FD). Атрибут В сущности Е функционально зависит от атрибута А сущности Е тогда и только тогда, когда каждое значение А в В связало с ним точно одно значение В в Е, т. е. А однозначно определяет В. [c.150] Полная функциональная зависимость. Атрибут В сущности В полностью функционально зависит от ряда атрибутов А сущности В тогда и только тогда, когда В функционально зависит от А и не зависит ни от какого подряда А. [c.150] На рис. 2.2.44 в сущности Сотрудник значения атрибутов Фамилия, Имя и Отчество однозначно определяются значением атрибута Тибель-ный номер, т. е. атрибуты Фамилия, Имя и Отчество зависят от атрибута Табельный номер. Функциональные зависимости определяются бизнес-правилами предметной области. Так, если оклад сотрудника определяется только должностью, то атрибут Оклад зависит от атрибута Должность если оклад зависит еще, например, от стажа, то такой зависимости нет. В нижеследующих примерах будем считать для определенности, что такая зависимость есть. [c.151] Рассмотрим нормальные формы. [c.151] Первая нормальная форма (1NF). Сущность находится в первой нормальной форме тогда и только тогда, когда все атрибуты содержат атомарные значения. Среди атрибутов не должно встречаться повторяющихся групп, т. е. несколько значений для каждого экземпляра. На рис. 2.2.44 атрибуты Телефон и Хобби являются нарушением первой нормальной формы. Что будет, если у сотрудника несколько рабочих телефонов Запись значения колонки через разделитель, например 124-56-78, 124-56-79, 124-56-90 или Аквалангист, мотоциклист, шахматист , приводит к ряду проблем. Размера поля может не хватить для хранения данных (нельзя увеличивать список телефонов до бесконечности), по такой колонке невозможно построить индекс и т. д. и т. п. Сущность, приведенная на рис. 2.2.45, не является решением проблемы. Что будет, если у сотрудника появится четвертый телефон или третье хобби Эту информацию будет негде хранить. [c.151] Другой ошибкой нормализации является хранение в одном атрибуте разных по смыслу значений. На рис. 2.2.44 атрибут Дата зачисления или увольнения хранит информацию как о зачислении, так и об увольнении сотрудника. Если хранится только одно значение, то невозможно понять, какая именно дата внесена. Если внести атрибут-признак типа даты, тип можно будет определить, но останется возможность хранения только одной даты для каждого сотрудника. [c.151] На рис. 2.2.46 показана сущность Сотрудник, приведенная к первой нормальной форме. [c.152] Вторая нормальная форма (2NF). Сущность находится во второй нормальной форме, если она находится в первой нормальной форме и каждый неключевой атрибут полностью зависит от первичного ключа (не должно быть зависимости от части ключа). Вторая нормальная форма имеет смысл только для сущностей, имеющих сложный первичный ключ. [c.152] Предположим, сущность Проект содержит информацию о проекте, которым руководит сотрудник, причем информация содержится как непосредственно о проекте, так и о руководителе проекта (рис. 2.2.47). Атрибуты Фамилия, Имя, Отчество и Должность зависят только от атрибута Табельный номер руководителя, но вовсе не от Наименования проекта. Другими словами, имеется зависимость только от части ключа. [c.152] На рис. 2.2.48 показана сущность Проект, приведенная ко второй нормальной форме. [c.153] Третья нормальная форма (3NF). Сущность находится в третьей нормальной форме, если она находится во второй нормальной форме и никакой неключевой атрибут не зависит от другого неключевого атрибута (не должно быть взаимозависимости между неключевыми атрибутами). [c.153] На рис. 2.2.46 сущность Сотрудник находится во второй нормальной форме (имеется только один атрибут первичного ключа, поэтому не может быть зависимости неключевых атрибутов от части ключа), но неключевой атрибут Оклад зависит от другого неключевого атрибута -Должности. [c.153] В третьей нормальной форме каждый атрибут сущности зависит от ключа, от всего ключа целиком и ни от чего другого, кроме как от ключа. [c.154] Четвертая нормальная форма (4NF) требует отсутствия многозначных зависимостей между атрибутами. [c.154] В примере на рис. 2.2.50 (слева) преподаватель читает лекции по нескольким предметам и курирует несколько групп студентов. Одна группа студентов может изучать несколько предметов, одному предмету могут обучаться несколько групп студентов. Имеется многозначная зависимость между атрибутами Предмет и Группа. При этом возможна аномалия если у преподавателя появляется новая группа, приходится добавлять несколько записей, по числу читаемых предметов. [c.154] Для приведения сущности к четвертой нормальной форме следует создать новую сущность и перенести атрибуты с многозначной зависимостью в разные сущности (рис. 2.2.50, справа). Связь между новыми сущностями при этом устанавливать нельзя, поскольку в результате миграции атрибутов внещних ключей атрибуты с многозначной зависимостью вновь окажутся в одной сущности. Ссылочную целостность в этом случае следует поддерживать при помощи триггеров. [c.155] Вернуться к основной статье