Многозначная зависимость
Определение: Один атрибут отношения многозначно определяет другой атрибут того же отношения, если для каждого значения первого атрибута существует множество соответствующих значений второго атрибута.
Многозначные зависимости могут быть:
· один-ко-многим (1:М);
· многие-к-одному (М:1);
· многие-ко-многим (М:М).
Каждая ступень процесса нормализации приводит схему отношений в последовательные нормальные формы. Для каждой ступени имеются наборы ограничений. Выделяют следующую последовательность нормальных форм:
o первая нормальная форма (1НФ);
o вторая нормальная форма (2НФ);
o третья нормальная форма (3НФ);
o усиленная 3НФ или нормальная форма Бойса-Кодда (БКНФ);
o четвертая нормальная форма (4НФ);
o пятая нормальная форма (5НФ).
1. Отношение находитсяв первой нормальной форме (1НФ),когда каждая строка содержит только одно значение для каждого атрибута (столбца), то есть все атрибуты отношения имеют единственное значение (являются атомарными).
В столбце Квалификацияненормализованной табл. 13 содержатся списки значений (С, Java и т. д.).
Таблица 13
Код сотрудника | ФИО | Должность | Номер отдела | Наименова ние отдела | Квалификация |
Иванов И.И. | Программист | Отдел проектирования | C, Java | ||
Сергеева С.С. | Администратор БД | Финансовый отдел | DB2 | ||
Петров П.П. | Программист | Отдел проектирования | VB, Java | ||
Николаев Н.Н. | Системный администратор | Отдел проектирования | Windows, Linux |
Чтобы привести схему к 1НФ, необходимо разместить в этом столбце атомарные значения. Самый простой способ заключается в выделении по одной строке на каждый элемент квалификации (табл. 14).
Таблица 14
Код сотрудника | ФИО | Должность | Номер отдела | Наименование отдела | Квалификация |
Иванов И.И. | Программист | Отдел проектирования | C | ||
Иванов И.И. | Программист | Отдел проектирования | Java | ||
Сергеева С.С. | Администратор БД | Финансовый отдел | DB2 | ||
Петров П.П. | Программист | Отдел проектирования | VB | ||
Петров П.П. | Программист | Отдел проектирования | Java | ||
Николаев Н.Н. | Системный администратор | Отдел проектирования | Windows | ||
Николаев Н.Н. | Системный администратор | Отдел проектирования | Linux |
Такое решение далеко от идеального, поскольку порождает очевидную избыточность данных – для каждой комбинации сотрудник-квалификация приходится хранить все характеристики сотрудника.
2. Отношение находится во второй нормальной форме (2НФ),если оно находится в 1НФ, и каждый не ключевой атрибут полностью функционально зависит от всех составляющих первичного ключа.
Если атрибут не зависит полностью от первичного ключа, то он внесен ошибочно и должен быть удален. Нормализация производится путем нахождения существующего отношения, к которому относится данный атрибут, или созданием нового отношения, в который атрибут должен быть помещен.
Таблица Квалификации_сотрудников (табл. 14) находится в 1НФ, но не удовлетворяет 2НФ. Первичный ключ должен уникальным образом идентифицировать каждую строку. (По коду сотрудника появляются две строки.) Единственным вариантом является использование в качестве первичного ключа комбинации Код сотрудника и Квалификация. Это порождает схему: Квалификации сотрудников (Код сотрудника, ФИО, Должность, Номер отдела, Наименование отдела, Квалификация).
Одной из имеющихся здесь функциональных зависимостей будет:
Код сотрудника, Квалификация ’ ФИО, Должность, Номер отдела, Наименование отдела. (По коду и квалификации определяются ФИО и все атрибуты кортежа).
Но, кроме того, мы также имеем:
Код сотрудника ’ ФИО, Должность, Номер отдела, Наименование отдела.
Другими словами, можно определить имя, должность и отдел, используя только код сотрудника. Это значит, что указанные атрибуты функционально зависимы только от части первичного ключа, а не от всего первичного ключа. Следовательно, указанная схема не находится в 2НФ.
Для приведения этой схемы в 2НФ необходимо декомпозировать исходное отношение на два, в которых все не ключевые атрибуты будут полностью функционально зависеть от ключа:
сотрудники (Код сотрудника, ФИО, Должность, Номер отдела, Наименование отдела)и
Квалификации сотрудников (Код сотрудника, Квалификация)(табл. 15–16).
Таблица 15
Код сотрудника | ФИО | Должность | Номер отдела | Наименование отдела |
Иванов И.И. | Программист | Отдел проектирования | ||
Сергеева С.С. | Администратор БД | Финансовый отдел | ||
Петров П.П. | Программист | Отдел проектирования | ||
Николаев Н.Н. | Системный администратор | Отдел проектирования |
Таблица 16
Код сотрудника | Квалификация |
C | |
Java | |
DB2 | |
VB | |
Java | |
Windows | |
Linux |
Отношение находится в третьей нормальной форме (ЗНФ), если оно находится во 2НФ и ни один из его не ключевых атрибутов не связан функциональной зависимостью с любым другим не ключевым атрибутом.
Атрибуты, зависящие от других не ключевых атрибутов, нормализуются путем перемещения зависимого атрибута и атрибута, от которого он зависит, в новое отношение.
Формально, для приведения схемы в 3НФ необходимо исключить все транзитивные зависимости. Схема отношения сотрудники(табл. 15) содержит следующие функциональные зависимости:
Код сотрудника ’ ФИО, Должность, Номер отдела, Наименование отдела и Номер отдела ’ Наименование отдела.
Таблица 15
Код сотрудника | ФИО | Должность | Номер отдела | Наименование отдела |
Иванов И.И. | Программист | Отдел проектирования | ||
Сергеева С.С. | Администратор БД | Финансовый отдел | ||
Петров П.П. | Программист | Отдел проектирования | ||
Николаев Н.Н. | Системный администратор | Отдел проектирования |
Первичным ключом является Код сотрудника, и все атрибуты полностью функционально зависимы от него (первичный ключ определяется единственным атрибутом). При этом Номер отдела ключом не является.
Функциональная зависимость Код сотрудника ’ Наименование отдела является транзитивной, поскольку содержит промежуточный шаг (зависимость Номер отдела ’ Наименование отдела). Для приведения в 3НФ необходимо исключить эту транзитивную зависимость, декомпозируя отношение на два:
сотрудники (Код сотрудника, ФИО, Должность, Номер отдела) и отделы (Номер отдела, Наименование отдела) (табл. 17–18).
Таблица 17
Код сотрудника | ФИО | Должность | Номер отдела |
Иванов И.И. | Программист | ||
Сергеева С.С. | Администратор БД | ||
Петров П.П. | Программист | ||
Николаев Н.Н. | Системный администратор |
Таблица 18
Номер отдела | Наименование отдела |
Финансовый отдел | |
Отдел проектирования |
4. Нормальная форма Бойса-Кодда (БКНФ) является развитием 3НФ и требует, чтобы в отношении были только такие функциональные зависимости, левая часть которых является потенциальным ключом отношения.
Потенциальный ключ представляет собой атрибут (или множество атрибутов), который может быть использован для данного отношения в качестве первичного ключа. Фактически первичный ключ – это один из потенциальных ключей, назначенный в качестве первичного.
Детерминантом называется левая часть функциональной зависимости.
Отношение находится в БКНФ тогда и только тогда, когда каждый детерминант отношения является потенциальным ключом.
Алгоритм приведения ненормализованных схем в 3НФ показан на рис. 15. На практике построение 3НФ в большинстве случаев является достаточным и приведением к ней процесс построения реляционной БД заканчивается.
Рис. 15. Алгоритм приведения ненормализованных схем в 3НФ
Запомнить правила нормализации помогает изречение:
«Нормализация – это ключ, целый ключ и ничего, кроме ключа».
Нормальные формы высших порядков (4НФ и 5НФ) представляют больший интерес для теоретических исследований, чем для практики проектирования БД. В них учитываются многозначные зависимости между атрибутами.
Полной декомпозицией отношения называют такую совокупность произвольного числа его проекций, соединение которых позволяет получить исходное отношение.
Отношение находится в пятой нормальной форме (5НФ), когда в каждой его полной декомпозиции все проекции содержат возможный ключ. Отношение, не имеющее ни одной полной декомпозиции, также находится в 5НФ.
Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. На практике непросто подобрать отношение, которое находится в 4НФ, не будучи в 5НФ.
Нормализация – это процесс последовательной замены отношения его полными декомпозициями до тех пор, пока все они не будут находиться в 5НФ.
Приведя отношения к БКНФ, можно с большой гарантией считать, что они находятся в 5НФ. Единственными функциональными зависимостями в любом отношении должны быть зависимости вида К ’ А, где К – первичный ключ, а А – атрибут.
Дата добавления: 2017-10-04; просмотров: 2918;