Базы данных

Нормализация баз данных

Зависимость, при которой каждый неключевой атрибут зависит от всего составного ключа и не зависит от его частей, называется полной функциональной зависимостью. Если атрибут А зависит от атрибута В, а атрибут В зависит от атрибута С (С ’ В ’ А), но обратная зависимость отсутствует, то зависимость А от С называется транзитивной.

Многозначная зависимость. Говорят, что один атрибут отношения многозначно определяет другой атрибут того же отношения, если для каждого значения первого атрибута существует множество соответствующих значений второго атрибута. Многозначные зависимости могут быть:

·   один-ко-многим (1:М);

·   многие-к-одному (М:1);

·   многие-ко-многим (М:М).

Каждая ступень процесса нормализации приводит схему отношений в последовательные нормальные формы. Для каждой ступени имеются наборы ограничений. Выделяют следующую последовательность нормальных форм:

·   первая нормальная форма (1НФ);

·   вторая нормальная форма (2НФ);

·   третья нормальная форма (3НФ);

·   усиленная 3НФ или нормальная форма Бойса-Кодда (БКНФ);

·   четвертая нормальная форма (4НФ);

·  пятая нормальная форма (5НФ).

Отношение находится в первой нормальной форме (1НФ), когда каждая строка содержит только одно значение для каждого атрибута (столбца), то есть все атрибуты отношения имеют единственное значение (являются атомарными).

В столбце Квалификация ненормализованной табл. 13 содержатся списки значений (С, Java и т. д.). Чтобы привести схему к 1НФ, необходимо разместить в этом столбце атомарные значения. Самый простой способ заключается в выделении по одной строке на каждый элемент квалификации (табл. 14).

Таблица 14

Код сотрудника

ФИО

Должность

Номер

отдела

Наименование

отдела

Квалификация

7513

Иванов И.И.

Программист

128

Отдел проектирования

C

7513

Иванов И.И.

Программист

128

Отдел проектирования

Java

9842

Сергеева С.С.

Администратор БД

42

Финансовый отдел

DB2

6651

Петров П.П.

Программист

128

Отдел проектирования

VB

6651

Петров П.П.

Программист

128

Отдел проектирования

Java

9006

 Николаев Н.Н.

Системный администратор

128

Отдел проектирования

Windows

9006

 Николаев Н.Н.

Системный администратор

128

Отдел проектирования

Linux

Такое решение далеко от идеального, поскольку порождает очевидную избыточность данных – для каждой комбинации сотрудник-квалификация приходится хранить все характеристики сотрудника.

предыдущаяследующая