Скачиваний:
102
Добавлен:
02.05.2014
Размер:
2.3 Mб
Скачать

11.4. Сохранение зависимостей

CITY

1

s#

1

STATUS

В процессе нормализации часто возникает ситуация, когда переменная-отношение может быть подвергнута декомпозиции без потерь несколькими разными способами. Вновь обратимся к приведенной выше переменной-отношению SECOND с функциональ­ными зависимостями St —> CITY и CITY -» STATUS и, сле­довательно, с еще одной транзитивной зависимостью St —> STATUS (на рис. 11.11 эта транзитивная зависимость показана пунктирной стрелкой).

В разделе 11.3 отмечалось, что аномалии обновления, сопровождающие переменную-отношение SECOND, можно преодолеть посредством ее декомпозиции с последующей заменой двумя проекциями в ЗНФ. Рис. 11.11. Функциональные

зависимости в пере-

SC { St, CITY } менной-отношении

CS { CITY, STATUS } SECOND

Назовем эту декомпозицию просто "декомпозиция А", имея в виду, что существует альтернативный вариант декомпозиции (декомпозиция В).

SC { Si, CITY } SS { Si, STATUS }

При этом проекции SC одинаковы и для варианта А, и для варианта В. Декомпозиция В также выполняется без потери информации, и обе ее проекции находятся в ЗНФ. Однако по некоторым причинам декомпозиция В менее желательна, чем декомпозиция А. На­пример, после выполнения декомпозиции В по-прежнему будет невозможно ввести ин­формацию о том, что некоторый город имеет определенный статус, не указав конкретно­го поставщика из этого города.

Рассмотрим этот пример подробнее. Прежде всего заметим, что зависимости, исполь­зованные для создания проекций в декомпозиции А, соответствуют сплошными стрелкам (см. рис. 11.11), тогда как одна из зависимостей, использованная для создания проекций в декомпозиции В, отмечена пунктирной стрелкой. В декомпозиции А обе проекции не­зависимы одна от другой в том смысле, что обновления в каждой из них могут выпол­няться совершенно независимо9. Если гарантируется, что выполняемые обновления бу­дут допустимы в контексте данной проекции (т.е. уникальность ее первичного ключа не нарушается), то соединение этих двух проекций после обновления всегда будет иметь результатом допустимое значение переменной-отношения SECOND. Это следует пони­мать так, что при соединении не будут нарушаться ограничения, наложенные на функ­циональные зависимости в переменной-отношении SECOND. Однако в случае декомпози­ции В вносимые в любую из двух проекций обновления должны тщательно контролиро­ваться, чтобы исключить возможные нарушения функциональной зависимости CITY —» STATUS. (Нарушения могут иметь место, если два и более поставщиков находят­ся в одном и том же городе; в этом случае они должны иметь один статус. В качестве примера разберите случай, когда в декомпозиции В поставщик с номером ' S1' переме­щается из Лондона в Париж.) Иначе говоря, две проекции декомпозиции В не являются независимыми одна от другой.

Основная проблема заключается в том, что в декомпозиции В функциональная зави­симость CITY —> STATUS превращается (в соответствии с терминологией главы 8) в огра­ничение базы данных, охватывающее две переменные-отношения. (Следует отметить, что во многих современных программных продуктах подобные ограничения поддержи­ваются с помощью собственных пользовательских процедур.) В противоположность этому в декомпозиции А ограничением базы данных является транзитивная зависимость Si —» STATUS, которая автоматически выполняется в случае выполнения двух ограниче­ний переменных-отношений: Si —> STATUS и CITY —> STATUS. Реализовать эти ограни­чения очень просто, поскольку по сути они представляют собой требования поддержки уникальности значений первичных ключей в соответствующих переменных-отношениях.

9 Конечно, за исключением соблюдения ограничения целостности, установленного для перемен­ных-отношений SC и CS

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

предпочтительнее вариантов, в которых проекции будут зависимы. Риссанен (Rissanen) [11.6] показал, что проекции R1 и R2 переменной-отношения R будут независимы в упо­мянутом выше смысле тогда и только тогда, когда:

  • каждая функциональная зависимость в переменной-отношении R является логиче­ским следствием функциональных зависимостей в ее проекциях R1 и R2;

  • общие атрибуты проекций R1 и R2 образуют потенциальный ключ по крайней мере для одной из этих проекций.

Рассмотрим заданные выше декомпозиции А и В. В декомпозиции А обе проекции не­зависимы, поскольку их общий атрибут CITY является первичным ключом для перемен­ной-отношения CS и каждая функциональная зависимость переменной-отношения SECOND либо представлена в одной из проекций, либо является логическим следствием других имеющихся в них ФЗ. В декомпозиции В, наоборот, две составляющие ее проекции не являются независимыми, поскольку функциональная зависимость CITY -> STATUS не может быть выведена из ФЗ, существующих в этих проекциях, даже несмотря на то, что их общий атрибут St является потенциальным ключом для обеих проекций.

Замечание. Третий вариант декомпозиции с заменой переменной-отношения SECOND проекциями {Si, STATUS} и {CITY, STATUS} не является допустимой деком­позицией, поскольку сопровождается потерей информации. (Упражнение. Докажите это утверждение.)

Переменная-отношение, которая не может быть подвергнута декомпозиции с получе­нием независимых проекций, называется атомарной [11.6]. Однако это вовсе не означа­ет, что каждую неатомарную (в указанном смысле) переменную-отношение следует не­пременно разбить на атомарные компоненты. Например, переменные-отношения S и Р из упоминавшейся выше базы данных поставщиков и деталей не являются атомарными, од­нако дальнейшая их декомпозиция имела бы мало смысла. Переменная-отношение SP, наоборот, является атомарной.

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

  1. Пусть дана переменная-отношение R, которая после выполнения всех этапов нор­мализации заменяется множеством переменных-отношений Rl, R2, Rn (конечно, все они являются проекциями переменной-отношения R).

  2. Пусть также задано множество функциональных зависимостей S, имеющих место в исходной переменной-отношении R, и множество функциональных зависимостей SI, S2, Sri, выполняющихся в переменных-отношениях Rl, R2, Rn.

  3. Каждая функциональная зависимость в множестве Si будет иметь отношение толь­ко к атрибутам проекции Ri (где i=l, 2, 3, п). В результате реализация огра­ничений (устанавливаемых существующими ФЗ) для любого данного множества Si представляется достаточно простой задачей. Однако в действительности необхо­димо реализовать все ограничения, определяемые исходным множеством функ­циональных зависимостей S. Следовательно, целесообразно выбрать такой вариант

декомпозиции исходной переменной-отношения на проекции Rl, R2, Rn, при котором совместный эффект от реализации ограничений для отдельных множеств SI, S2, Sn будет эквивалентен реализации всех ограничений для исходного множества функциональных зависимостей S. Иначе говоря, декомпозиция должна выполняться с сохранением зависимостей.

  1. Пусть S' является объединением множеств зависимостей SI, S2, Sn. Обратите внимание на то, что в общем случае равенство S'=S не выполняется. Для декомпо­зиции с сохранением зависимостей достаточно, чтобы были равны замыкания множеств S и S' (понятие замыкания множества функциональных зависимостей рассматривалось в разделе 10.4).

  2. В общем случае не существует эффективного метода вычисления замыкания S+ для заданного множества функциональных зависимостей, поэтому на практике вычис­ление и сравнение двух необходимых замыканий осуществить сложно. Тем не ме­нее существует эффективный метод проверки, будет ли декомпозиция выполняться с сохранением зависимостей. Описание подробностей этого алгоритма выходит за рамки данной книги, однако заинтересованный читатель сможет найти его в книге Ульмана (Ullman) [7.13].

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

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]