Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Белобжеский_Лекции_по_ББД.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5.5 Mб
Скачать

Процесс нормализации

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

Зачастую нормализация осуществляется в несколько последовательно выполняющихся этапов, каждый из которых соответствует некоторой нормальной форме, обла­дающей известными свойствами. В ходе нормализации формат отношений становит­ся все более строгим и менее уязвимым по отношению к аномалиям обновления. При работе с реляционной моделью данных важно понимать, что только удовлетворение требований первой нормальной формы (1НФ) обязательно для создания отношений приемлемого качества. Все остальные формы могут использоваться по желанию проектировщиков. Однако, для того чтобы избежать аномалии обновления, описанных в разделе 6.2, нормализацию рекомендуется выполнять как минимум до ЗНФ, а лучше – до нормальной формы Бойса-Кодда (НФБК).

На рис. 18 показана схема процесса нормализации и продемонстрирована взаи­мосвязь между разными нормальными формами. Видно, что одни 1НФ-отношения могут находиться во 2НФ, другие 2НФ-отношения — в ЗНФ и т.д.

Р

ис.18. Взаимосвязь между отдельными нормальными формами

Декомпозиция без потерь и функциональные зависимости

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

В качестве примера рассмотрим отношение поставщиков деталей S с атрибутами {S#, STATUS, CITY}, где. S# - номер поставщика, STATUS – статус поставщика, CITY – город.

На рис. 18.1 показан пример записей этого отношения с указанием двух его возможных декомпозиций: (а) и (б).

Внимательно ознакомившись с этими декомпозициями, можно заметить две особенности.

1. В случае (а) информация не утрачивается, поскольку отношения SST и SC все еще содержат данные о том, что поставщик S3 имеет статус 30 и находится в Париже (Paris), а поставщик S5 имеет статус 30 и находится в Афинах (Athens). Иначе говоря, первая декомпозиция действительно является декомпозицией без потерь.

2. В случае (б), наоборот, некоторая информация утрачивается, поскольку оба поставщика имеют статус 30, но при этом нельзя сказать, какой из них в каком городе находится. Иначе говоря, вторая декомпозиция не является декомпозицией без потерь.

Рис. 18.1. Отношение S и две его возможные декомпозиции

Почему получилось так, что одна декомпозиция происходит без потерь, а другая — с потерей информации? Прежде всего, следует отметить, что процесс, который до сих пор назывался "декомпозицией", на самом деле является проектированием, т.е. каждое из показанных на рис. 18.1 отношений — SST, SC и STC — в действительности является проекцией исходного отношения S. Таким образом, оператор декомпозиции в процедуре нормализации фактически является оператором проектирования.

Обратите внимание, что в случае (а) сохранение информации в полном объеме означает, что при обратном( естественном) соединении отношении SST и SC будет получено исходное отношение S. В случае (б), наоборот, при обратном естественном соединении отношений SST и SC не будет получено исходное отношение S, а это значит, что некоторая информация будет утрачена. (Точнее, в исходном отношении S вместе со всеми кортежами будут содержаться "ложные" кортежи. Поскольку не существует общего метода для различения ложных и подлинных кортежей, информация в этом случае будет утеряна.) Результат естественного соединения отношений SST и STC (случай б) будет выглядеть так (обратите внимание на ложные строки, которых нет в отношении S)

S#

STATUS

CITY

S3

30

Paris

S3

30

A

Ложные строки

thens

S5

30

P aris

S5

30

Athens

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