Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза

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

Для ответов на эти вопросы нужно ответить на вопрос - что же представляет собой декомпозиция отношений с точки зрения операций реляционной алгебры? При декомпозиции мы из одного отношения получаем два или более отношений, каждое из которых содержит часть атрибутов исходного отношения. В полученных новых отношениях необходимо удалить дубликаты строк, если таковые возникли. Это в точности означает, что декомпозиция отношения есть не что иное, как взятие одной или нескольких проекций исходного отношения так, чтобы эти проекции в совокупности содержали (возможно, с повторениями) все атрибуты исходного отношения. Т.е., при декомпозиции не должны теряться атрибуты отношений. Но при декомпозиции также не должны потеряться и сами данные. Данные можно считать не потерянными в том случае, если возможна обратная операция - по декомпозированным отношениям можно восстановить исходное отношение в точности в прежнем виде. Операцией, обратной операции проекции, является операция соединения отношений. Имеется большое количество видов операции соединения (см. гл. 4). Т.к. при восстановлении исходного отношения путем соединения проекций не должны появиться новые атрибуты, то необходимо использовать естественное соединение.

Определение 6. Проекция Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru на множество атрибутов Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru называется собственной, если множество атрибутов Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru является собственным подмножеством множества атрибутов отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru (т.е. множество атрибутов Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru не совпадает с множеством всех атрибутов отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru ).

Определение 7. Собственные проекции Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru называются декомпозицией без потерь, если отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru точно восстанавливается из них при помощи естественного соединения для любого состояния отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru :

Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru .

Рассмотрим пример, показывающий, что декомпозиция без потерь происходит не всегда.

Пример 2. Пусть дано отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru :

НОМЕР ФАМИЛИЯ ЗАРПЛАТА
Иванов
Петров

Таблица 7 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

Рассмотрим первый вариант декомпозиции отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru на два отношения:

НОМЕР ЗАРПЛАТА

Таблица 8 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

ФАМИЛИЯ ЗАРПЛАТА
Иванов
Петров

Таблица 9 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

Естественное соединение этих проекций, имеющих общий атрибут "ЗАРПЛАТА", очевидно, будет следующим (каждая строка одной проекции соединится с каждой строкой другой проекции):

НОМЕР ФАМИЛИЯ ЗАРПЛАТА
Иванов
Петров
Иванов
Петров

Таблица 10 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

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

Рассмотрим другой вариант декомпозиции:

НОМЕР ФАМИЛИЯ
Иванов
Петров

Таблица 11 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

НОМЕР ЗАРПЛАТА

Таблица 12 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

По данным проекциям, имеющие общий атрибут "НОМЕР", исходное отношение восстанавливается в точном виде. Тем не менее, нельзя сказать, что данная декомпозиция является декомпозицией без потерь, т.к. мы рассмотрели только одно конкретное состояние отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , и не можем сказать, будет ли и в других состояниях отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru восстанавливаться точно. Например, предположим, что отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru перешло в состояние:

НОМЕР ФАМИЛИЯ ЗАРПЛАТА
Иванов
Петров
Сидоров

Таблица 13 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

Кажется, что этого не может быть, т.к. значения в атрибуте "НОМЕР" повторяются. Но мы же ничего не говорили о ключе этого отношения! Сейчас проекции будут иметь вид:

НОМЕР ФАМИЛИЯ
Иванов
Петров
Сидоров

Таблица 14 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

НОМЕР ЗАРПЛАТА

Таблица 15 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

Естественное соединение этих проекций будет содержать лишние кортежи:

НОМЕР ФАМИЛИЯ ЗАРПЛАТА
Иванов
Петров
Петров
Сидоров
Сидоров

Таблица 16 Отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru

Вывод. Таким образом, без дополнительных ограничений на отношение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru нельзя говорить о декомпозиции без потерь.

Такими дополнительными ограничениями и являются функциональные зависимости. Имеет место следующая теорема Хеза [54]:

Теорема (Хеза). Пусть Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru является отношением, и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru - атрибуты или множества атрибутов этого отношения. Если имеется функциональная зависимость Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , то проекции Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru образуют декомпозицию без потерь.

Доказательство. Необходимо доказать, что Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru для любого состояния отношения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . В левой и правой части равенства стоят множества кортежей, поэтому для доказательства достаточно доказать два включения для двух множеств кортежей: Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru .

Докажем первое включение. Возьмем произвольный кортеж Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Докажем, что он включается также и в Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . По определению проекции, кортежи Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . По определению естественного соединения кортежи Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , имеющие одинаковое значение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru общего атрибута Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , будут соединены в процессе естественного соединения в кортеж Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Таким образом, включение доказано.

Докажем обратное включение. Возьмем произвольный кортеж Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Докажем, что он включается также и в Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . По определению естественного соединения получим, что в имеются кортежи Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Т.к. Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , то существует некоторое значение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , такое что кортеж Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Аналогично, существует некоторое значение Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , такое что кортеж Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Кортежи Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru и Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru имеют одинаковое значение атрибута Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , равное Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Из этого, в силу функциональной зависимости Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru , следует, что Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Таким образом, кортеж Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Обратное включение доказано. Теорема доказана.

Замечание. В доказательстве теоремы Хеза наличие функциональной зависимости не использовалось при доказательстве включения Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза - student2.ru . Это означает, что при выполнении декомпозиции и последующем восстановлении отношения при помощи естественного соединения, кортежи исходного отношения не будут потеряны. Основной смысл теоремы Хеза заключается в доказательстве того, что при этом не появятся новые кортежи, отсутствовавшие в исходном отношении.

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

Выводы

При разработке базы данных можно выделить несколько уровней моделирования:

  • Сама предметная область
  • Модель предметной области
  • Логическая модель данных
  • Физическая модель данных
  • Собственно база данных и приложения

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

  • Адекватность базы данных предметной области
  • Легкость разработки и сопровождения базы данных
  • Скорость выполнения операций обновления данных (вставка, обновление, удаление)
  • Скорость выполнения операций выборки данных

Первая нормальная форма (1НФ) - это обычное отношение. Отношение в 1НФ обладает следующими свойствами:

  • В отношении нет одинаковых кортежей.
  • Кортежи не упорядочены.
  • Атрибуты не упорядочены.
  • Все значения атрибутов атомарны.

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

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

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

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

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

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

Корректность процедуры нормализации (декомпозиция без потери информации) доказывается теоремой Хеза.

Наши рекомендации