logo search
ГОСы - ответы [2012]

2. Декомпозиция отношений. Первая, вторая и третья нормальные формы.

Отношение (таблица) находится в некоторой нормальной форме, если удовлетворяет заданному условию.

Отношение находится в первой нормальной форме тогда и только тогда, когда оно содержит только скалярные значения. Коддом были определены первая, вторая и третья НФ, вторая НФ более желательна, чем первая и т.д. Бойсом и Коддом переработана 3НФ и в более строгом смысле названа нормальной формой Бойса-Кодда. Есть еще четвертая, определена Фейгином, а так же пятая – проективно-соединительная.

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

Пусть R{A, B, C} есть отношение, где A, B, C – атрибуты этого отношения. Если R удовлетворяет зависимости A->B, то R равно соединению его проекций {A, B} и {B, C}.

Пример:

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

Одна из целей проектирования БД – получение НФБК и форм более высокого порядка. Первая, вторая и третья НФ являются промежуточным результатом.

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

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

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

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

D – деталь, P- поставщик.