Нормализация через декомпозицию
Всегда можно начать с того, что, взяв некоторую схему отношения
, не находящуюся в 3НФ относительно множества F-зависимостей , разложить ее в схему базы данных, имеющую 3НФ относительно .Разложение схемы отношений означает разбиение схемы отношения на пару схем отношений
и (возможно, пересекающихся) так, чтобы любое отношение , удовлетворяющее , разлагалось без потерь на и . Возможно, нужно будет повторить процесс декомпозиции отношений и , если какое-нибудь из них не окажется в 3НФ. Декомпозиция продолжается до тех пор, пока все полученные отношения не окажутся в третьей нормальной форме относительно .На самом деле процесс декомпозиции схемы не бесконечен. Каждый раз, когда разлагается схема отношения, обе получившиеся в результате схемы становятся меньше, а в схеме отношения, содержащей только два атрибута, не может быть никакой транзитивной зависимости [10].
Пример 2.12. Пусть
(РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ-НАЗНАЧЕНИЯ, ВРЕМЯ-ВЫЛЕТА, ВРЕМЯ-ПРИБЫТИЯ, ДЛИТЕЛЬНОСТЬ-ПОЛЕТА, ТИП-САМОЛЕТА, I-КЛАСС, II-КЛАСС, КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ, ПИТАНИЕ)где I-КЛАСС и II -КЛАСС – количество посадочных мест в каждом салоне. Пусть множество выделенных ключей
К={РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ПРИБЫТИЯ}.
Предполагается, что в одно и то же время не может быть двух рейсов с одинаковыми пунктами отправления и назначения. Пусть все выделенные ключи действительно являются ключами, и пусть имеются также следующие F-зависимости в множестве
:ТИП-САМОЛЕТА
I-КЛАСС II-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ,ВРЕМЯ-ВЫЛЕТА ДЛИТЕЛЬНОСТЬ-ПОЛЕТА
ПИТАНИЕ,ВРЕМЯ-ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА
ПИТАНИЕ,I-КЛАСС II-КЛАСС
КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ,I-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ-Ш-КЛАСС,
II-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ
I-КЛАСС.Казалось бы, ВРЕМЯ-ВЫЛЕТА ВРЕМЯ-ПРИБЫТИЯ
ДЛИТЕЛЬНОСТЬ-ПОЛЕТА также должна быть F-зависимостью, но, из-за того что время прибытия и время отправления указывается местное, ДЛИТЕЛЬНОСТЬ-ПОЛЕТА зависит от часовых поясов, к которым принадлежат соответствующие аэропорты.Сначала удалим транзитивную зависимость атрибута ПИТАНИЕ от РЕЙСА через ВРЕМЯ-ВЫЛЕТА ДЛИТЕЛЬНОСТЬ-ПОЛЕТА. Получим схему отношения
(РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ-НАЗНАЧЕНИЯ, ВРЕМЯ-ПРИБЫТИЯ, ДЛИТЕЛЬНОСТЬ-ПОЛЕТА, ТИП-САМОЛЕТА, I-КЛАСС, II-КЛАСС, КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ)
с выделенными ключами
={РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ПРИБЫТИЯ}
и схему отношения
(ВРЕМЯ-ОТПРАВЛЕНИЯ, ДЛИТЕЛЬНОСТЬ-ПОЛЕТА,
ПИТАНИЕ)
с выделенным ключом
={ВРЕМЯ-ОТПРАВЛЕНИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА}.
Схема находится в 3НФ, а схема – нет, так как I-КЛАСС, II-КЛАСС и КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ транзитивно зависят от РЕЙСА через ТИП-САМОЛЕТА. Схема разлагается на схему
(РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ-НАЗНАЧЕНИЯ, ВРЕМЯ-ВЫЛЕТА, ВРЕМЯ-ПРИБЫТИЯ, ДЛИТЕЛЬНОСТЬ-ПОЛЕТА, ТИП-САМОЛЕТА)
с выделенными ключами
={РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ПРИБЫТИЯ}
и схему
(ТИП-САМОЛЕТА, I-КЛАСС, II-КЛАСС, КОЛИЧЕСТВО-ПОСАД ОЧНЫХ-МЕСТ)
с выделенным ключом
К12={ТИП-САМОЛЕТА}.
Схема отношения находится теперь в 3НФ относительно , a – нет, поскольку КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ транзитивно зависит от ТИПА-САМОЛЕТА через 1-КЛАСС II-КЛАСС. Схема разлагается на
(ТИПА-САМОЛЕТА, I-КЛАСС, II-КЛАСС)
с выделенным ключом
={ТИП-САМОЛЕТА}.
и схему отношения
(1-КЛАСС, II-КЛАСС, КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ)
с выделенным ключом
={I-КЛАСС II-КЛАСС}.
Декомпозиция реализована до такой стадии, когда каждая схема отношения находится в 3НФ относительно . Следовательно, схема базы данных
R
находится в 3НФ.
Схема базы данных R не однозначна. Есть точки, в которых можно выбирать пути декомпозиции определенного отношения с целью удаления транзитивно зависимого атрибута. Так, на первом шаге можно было выбрать
(ВРЕМЯ-ПРИБЫТИЯ, ДЛИТЕЛЬНОСТЬ-ПОЛЕТА, ПИТАНИЕ),
так как ПИТАНИЕ также транзитивно зависит от РЕЙСА через ВРЕМЯ-ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА. На третьем шаге существует три варианта декомпозиции (Какие?) Некоторые ключи для схем отношений не указаны как выделенные, например I-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ и II-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ для .