2.5.2. Вторая нормальная форма

Прежде чем перейти к рассмотрению второй нормальной формы (2НФ), расмотрим понятие полной функциональной зависимости, используемое в теории нормализации.

Пусть имеется функциональная зависимость: {X1, X2, ..., Xn} Y.
Если из множества атрибутов, стоящих слева от знака , можно исключить некоторые имена атрибутов без разрушения функциональной зависимости, то говорят, что Y зависит от множества {X1, ..., Xn} неполно. В противном случае, имеет место полная функциональная зависимость атрибута Y от множества атрибутов {X1, ..., Xn}.
Формально это записывается следующим образом:

Пусть А1R и А2R - два подмножества множества атрибутов АR отношения R.

А2R функционально полно зависит от А1R, если:

1)А1R А2R ;

2)∀X (X А1R) ∃Y (Y А2R) и X функционально не зависит от Y.


Определение 2НФ

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

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

Чтобы привести отношение R (рис. 5) ко второй нормальной форме необходимо привести его декомпозицию (разложение) с помощью проекций исходного отношения:

R1 (Группа, Дисциплина, Вид_работы, Преподаватель);
R2 (Дисциплина, Вид_работы, Должность);
R3 (Группа, Факультет);
R4 (Преподаватель, Должность, Факультет).

Каждое из полученных отношений - это проекция исходного отношения и каждая проекция находится в 2НФ. Исходное отношение может быть восстановлено путем применения к полученным отношениям (проекциям) операции эквисоединения реляционной алгебры.

Общее правило декомпозиции отношений при приведении их к более высокой нормальной форме состоит в следующем.

Пусть в схеме R(АR) выделено два подмножества имен атрибутов А1R и А2R, на которых задана функциональная зависимость А1R А2R.

Тогда, для любого состояния отношения со схемой R(АR) выполняется равенство

R=R[АR \ А2R] х° Rфз(А1R, А2R),
где х° - знак операции эквисоединения по множеству атрибутов А1R, \ - обозначение операции разности реляционной алгебры [30], R[X ] - обозначает проекцию отношения R на подмножество X его атрибутов (X АR) а Rфз - отношение, образованное функциональной зависимостью.

Пусть имеется отношение R с состоянием Ri, представленным на рис. 8.

Факультет Группа ДисциплинаВид_работы ПреподавательДолжность
ФИСУГ1Д1В1П1А1
ФИСУГ2Д1В1П1А1
ФИСУГ1Д1В2П2А2
ФИСУГ1Д2В1П2А2

Рис. 8. Пример состояния схемы отношения

Для этого отношения R задана следующая структура зависимостей:

ФЗ = {Дисциплина, Вид_работы Преподаватель,
Дисциплина, Вид_работы Должность,
Преподаватель Должность, Факультет,
Группа Факультет,
Преподаватель Факультет}

Примечание. Здесь смысл зависимости {Дисциплина, Вид_работы} Преподаватель, заключается в том, что за каждой дисциплиной, по определенному виду работы, закрепляется определенный преподаватель.

Тогда результат приведения к 2НФ, даст следующий набор таблиц (рис. 9 - 12):

Группа Дисциплина Вид_работыПреподаватель
Г1Д1В1П1
Г2Д1В1П1
Г1Д1В2П2
Г1Д2В1П2

Рис. 9. Отношение R1(Группа, Дисциплина, Вид_работы, Преподаватель)


Дисциплина Вид_работыДолжность
В1П1А1
В1П1А1
В2П2А2

Рис. 10. Отношение R2(Дисциплина, Вид_работы, Должность)


Группа Факультет
Г1ФИСУ
Г2ФИСУ

Рис. 11. Отношение R3(Группа, Факультет)


ПреподавательДолжностьФакультет
П1А1ФИСУ
П1А1ФИСУ

Рис. 12. Отношение R4 (Преподаватель, Должность, Факультет)

Следует отметить, что исходное отношение будет восстановлено в своем первоначальном состоянии, только если эквисоединение будет производиться по первичным ключам полученных проекций (ключи подчеркнуты).

Если же разбить исходное отношение на проекции, в общем случае не опираясь на выделенные ФЗ и ключи (например, исходное отношение, показанное на рис. 7, может быть представлено двумя проекциями R5 (рис. 13) и R6 (рис.14)), то при эквисоединении (см. пояснения в п.3.3.1) проекций по общим атрибутам появляются дополнительные строки, которых не было в исходном отношении. Это так называемая ловушка соединения, которая иллюстрируется примером, представленным на рис. 15.

Факультет Группа ДисциплинаВид_работы
ФИСУГ1Д1В1
ФИСУГ2Д1В1
ФИСУГ1Д1В2
ФИСУГ1Д2В1

Рис. 13. Отношение R5 - ВИДЫ_РАБОТ_ПО_ДИСЦИПЛИНАМ


Вид_работы ПреподавательДолжность
В1П1А1
В2П2А2
В1П2А2

Рис. 14. Отношение R6 - ЗАКРЕПЛЕНИЕ_РАБОТ

Операция эквисоединения отношений R5 и R6 по атрибуту Вид_работы:

SELECT *
FROM R5, R6
WHERE R5.Вид_Работы=R6.Вид_Работы;

дает отношение

Факультет Группа ДисциплинаВид_работы ПреподавательДолжность
ФИСУГ1Д1В1П1А1
ФИСУГ1 Д1В1 П2А2
ФИСУГ2Д1В1П1А1
ФИСУГ2 Д1В1 П2А2
ФИСУГ1Д1В2П2А2
ФИСУГ1Д2В1П2А2
ФИСУГ1 Д2В1 П1А1

Рис. 15. Пример ловушки соединения для отношений R5 и R6

Как видно из рис.15 в результирующей таблице появились строки (отмеченные красным цветом), которых не было в исходной таблице (рис. 8).

[ Назад  Начало раздела  Далее  Содержание]