Главная » SQL, Базы данных » ОБЩАЯ СХЕМА ПРОЦЕДУРЫ НОРМАЛИЗАЦИИ

0

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

1.         Переменную отношения в 1НФ следует разбить на такие проекции, которые по зволят исключить все функциональные зависимости, не являющиеся неприводи мыми. В результате будет получен набор переменных отношения в 2НФ.

2.         Полученные переменные отношения в 2НФ следует разбить на такие проекции, которые позволят исключить все существующие транзитивные функциональные зависимости. В результате будет получен набор переменных отношения в ЗНФ.

3.         Полученные переменные отношения в ЗНФ следует разбить на проекции, позво ляющие исключить все оставшиеся функциональные зависимости, в которых де терминанты не являются потенциальными ключами. В результате такого приведе ния будет получен набор переменных отношения в НФБК.

Примечание. Правила 1—3 могут быть объединены в одно: "Исходную переменную отношения следует разбить на проекции, позволяющие исключить все функциональные  зависимости,  в  которых  детерминанты  не  являются  потенциальными ключами".

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

5.         Полученные переменные отношения в 4НФ следует разбить на проекции, позво ляющие исключить все зависимости соединения, которые не определяются потен циальными ключами (хотя в данном случае в определение следовало бы добавить фразу "если удастся их выявить"). В результате будет получен набор переменных от ношения в 5НФ.

2  Если переменная отношения R включает какие-либо (необходимые) атрибуты со значением в  виде отношения, то предполагается, что такая ее структура была принята сознательно. Нежелательные атрибуты со значением в виде отношения могут быть устранены, как было описано в разделе 13.2.

По поводу приведенных выше правил можно сделать несколько дополнительных замечаний.

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

1.           Обратите внимание, что существует довольно привлекательный набор следующих альтернативных определений НФБК, 4НФ и 5НФ (как было впервые отмечено Фейгином в [13.15]):

■    переменная отношения R находится в НФБК тогда и только тогда, когда каждая функциональная зависимость, удовлетворяемая переменной  отношения R, определяется ее потенциальными ключами;

■     переменная отношения R находится в 4НФ тогда и только тогда, когда каждая многозначная зависимость, удовлетворяемая переменной отношения R, опре деляется ее потенциальными ключами;

■     переменная отношения R находится в 5НФ тогда и только тогда, когда каждая зависимость соединения, удовлетворяемая переменной отношения R, опреде ляется ее потенциальными ключами.

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

2.           Общее назначение процесса нормализации заключается в следующем:

■     исключение некоторых типов избыточности;

■     устранение некоторых аномалий обновления;

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

■     упрощение процедуры применения необходимых ограничений целостности.

Последний пункт данного списка следует рассмотреть отдельно. Общая идея (как отмечалось в других главах этой книги) состоит в том, что из одних ограничений целостности следуют другие. В качестве простейшего примера можно привести ограничение для суммы зарплаты, которая должна быть выше 10 000 долл., а следовательно, выше нуля. Таким образом, если из ограничения А следует ограничение в, то  соблюдение  ограничения  А  автоматически  влечет  за  собой  соблюдение ограничения В (поэтому даже нет необходимости явно задавать ограничение в, за исключением  того,   что  оно  может  быть  упомянуто  в  комментарии).  Тогда приведение  к  5НФ  представляет  собой  простой  способ  наложения  некоторых важных   и   весьма   распространенных   ограничений.   Главное   —   обеспечить поддержку  уникальности  потенциальных  ключей,  после  чего  все  зависимости соединения  (а  также  все  многозначные  и  функциональные  зависимости)  будут реализованы     СУБД    автоматически,     поскольку     все     они     определяются потенциальными ключами.

3.          Необходимо вновь подчеркнуть тот факт, что данные рекомендации по поводу нормализации являются всего лишь рекомендациями и, вероятно, могут сущест вовать соображения, по которым нормализацию не следует выполнять до конца. Классическим примером ситуации, когда полная нормализация не желательна, является переменная отношения имени и адреса NADDR (см. упр. 12.7 главы 12), хотя следует признать, что этот пример не совсем убедителен. Как правило, нор мализацию рекомендуется выполнять полностью.

4.          Необходимо еще раз повторить сделанное в главе 12 замечание о том, что понятия зависимости и дальнейшей нормализации по своему характеру являются семанти ческими, т.е. они связаны со смыслом данных, тогда как реляционная алгебра и ре ляционное исчисление, а также построенные на их основе языки наподобие SQL, наоборот, имеют дело со значениями данных и не требуют (да и не могут требовать) выполнения нормализации выше первого уровня. Рекомендации по выполнению дальнейшей нормализации должны рассматриваться прежде всего как методика, позволяющая разработчику базы данных (и, следовательно, ее пользователю) вы разить определенную часть семантики реального мира (пусть даже небольшую) в простой и понятной форме.

5.          Исходя из сказанного выше, необходимо отметить, что идеи нормализации чрез вычайно полезны для проектирования баз данных, но они отнюдь не являются универсальным средством. Ниже перечислены некоторые причины подобного по ложения дел (этот список дополнен в [13.9]).

■     Нормализация (как упоминалось выше, в главе 9) действительно позволяет реализовать (в очень простой форме) определенные ограничения целостности, но

на практике, помимо зависимостей соединения, функциональных и многозначных

зависимостей, существуют и другие типы ограничений.

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

■     Как упоминалось в разделе 12.5 (пример декомпозиции переменной отноше ния SJT), преследование одновременно двух целей (т.е. приведение к НФБК и сохранение зависимостей) в некоторых случаях приводит к конфликтной си туации.

■     Процедура нормализации позволяет избавиться от избыточности за счет раз биения на проекции, но не всякую избыточность можно устранить таким обра зом (это — "проблема переменной отношения CTXD", см. аннотацию к [13.13]).

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

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии