Введение в системы БД (542480), страница 108
Текст из файла (страница 108)
Самое лучшее, чего можно достичь в подобном случае, — это лишь показать, что рассматриваемые данные не нарушают никаких зависимостей, и, если это так, высказать предположение о том, что этот набор данных не противоречат гипотезе о принадлежности переменной-отношения к ЗНФ. Однако данное утверждение не гарантирует, что предложенная гипотеза верна. Назовем эту декомпозицию просто "декомпозиция й", имея в виду, что существует альтернативный вариант декомпозиции (декомпозиция В). ЯС 1 ЯМ, С1ТУ ЯЯ ( 81, БТАТОЯ ) При этом проекции ЯС одинаковы и для варианта А, и для варианта В. Декомпозиция В также выполняется без потери информации, и обе ее проекции находятся в 3НФ.
Однако по некоторым причинам декомпозиция В менее желательна, чем декомпозиция й. Например, после выполнения декомпозиции В по-прежнему будет невозможно ввести информацию о том, что некоторый город имеет определенный статус, не указав конкретного поставшика из этого города. Рассмотрим этот пример подробнее. Прежде всего заметим, что зависимости, использованные для создания проекций в декомпозиции А, соответствуют сплошными стрелкам (см. рис, 11.11), тогда как одна из зависимостей, использованная для создания проекций в декомпозиции В, отмечена пунктирной стрелкой.
В декомпозиции А обе проекции независимы одна от другой в том смысле, что обновления в каждой из них могут выполняться совершенно независимоч. Если гарантируется, что выполняемые обновления будут допустимы в контексте данной проекции (т.е. уникальность ее первичного ключа не нарушается), то соединение этих двух проекций после обновления всегда будет иметь результаточ допустимое значение переменной-алшашения ЯЕСОй0. Это следует понимать так, что при соединении не будут нарушаться ограничения, наложенные на функциональные зависимости в переменной-отношении БЕСОВО.
Однако в случае декомпозиции В вносимые в любую из двух проекций обновления должны тшательно контролироваться, чтобы исключить возможные нарушения функциональной зависимости С1ТУ вЂ” э БТАТУБ. (Нарушения могут иметь место, если два и более поставшиков находятся в одном и том же городе; в этом случае они должны иметь адин статус. В качестве примера разберите случай, когда в декомпозиции В поставщик с номером '81' перемешается из Лондона в Париж.) Иначе говоря, две проекции декомпозиции В не являются независимыми одна от другой. Основная проблема заключается в том, что в декомпозиции В функциональная зависимость С1ТУ вЂ” э БТАТОЯ преврашается (в соответствии с терминологией главы 8) в ограничение базы данных, охватывающее две переменные-отношения.
(Следует отметить, что во многих современных программных продуктах подобные ограничения поддерживаются с помощью собственных пользовательских процедур.) В противоположность этому в декомпозиции А ограничением базы данных является транэитивная зависимость 81 -э БТйТОБ, которая автоматически выполняется в случае выполнения двух ограничений переменных-отношений; 83 — э БТАТОБ и С1ТУ вЂ” > ЯТАТОЯ. Реализовать эти ограничения очень просто, поскольку по суги они представляют собой требования поддержки уникальности значений первичных ключей в соответствуюших переменных-отношениях.
Таким образом, концепция независимых проекций предоставляет критерий выбора одного из возможных вариантов декомпозиции. В частности, вариант декомпозиции, обеспечивающий независимость проекций в приведенном выше смысле, в обшем случае г Конечно, за ясключеняем соблюдения ограничения целостности, установленного для переменныл-отношений ЯС и СЯ 440 Часть 111. Проектирование базы данных предпочтительнее вариантов, в которых проекции будут зависимы.
Риссанен (%заалел) 1! !.б! показал, что проекции И1 и Е2 переменной-отношения Е будут независимы в упомянутом выше смысле тогда и только тогда, когда: ° каждая функциональная зависимость в переменной-отношении И является логическим следствием функциональных зависимостей в ее проекциях Е1 и Е2; ° общие атрибуты проекций И1 и Е 2 образуют потенциальный ключ по крайней мере для одной из этих проекций. Рассмотрим заданные выше декомпозиции А и В. В декомпозиции А обе проекции независимы, поскольку их общий атрибут С1ТТ является первичным ключом для переменной-отношения СЯ и каждая функциональная зависимость переменной-отношения ЯЕСОИО либо представлена в одной из проекций, либо является логическим следствием лругих имеющихся в них ФЗ.
В декомпозиции Я, наоборот, две составляющие ее проекции не являются независимыми, поскольку функциональная зависимость С1ТТ вЂ” ь ЯТАТОЯ не может быть выведена из ФЗ, существующих в этих проекциях, даже несмотря на то, что их общий атрибут Я!! является потенциальным ключом для обеих проекций. Замечание. Третий вариант декомпозиции с заменой переменной-отношения ЯЕСОМО проекциями (Я!(, ЯТАТОЯ) и (С1ТТ, ЯТАТОЯ) не является допустимой декомпозицией, поскольку сопровождается потерей информации.
(Упражнение. Докажите это утверждение.) Переменная-отношение, которая не может быть подвергнута декомпозиции с получением независимых проекций, называется атомарной 11 !.6). Однако это вовсе не означает, что каждую неатомарную (в указанном смысле) переменную-отношение следует непременно разбить на атомарные компоненты. Например, переменные-отношения Я и Р из упоминавшейся выше базы данных поставщиков и деталей не являются атомарными, однако дальнейшая их декомпозиция имела бы мало смысла. Переменная-отношение ЯР, наоборот, «вляется атомарной. Идея о том, что нормализация всегда должна предусматривать декомпозицию переменных-отношений на независимые проекции (в определенном Риссаненом смысле) получила название требования сохранения зависимостей.
В заключение приведем несколько более строгих замечаний по поводу этой концепции. 1. Пусть дана переменная-отношение й, которая после выполнения всех этапов нормализации заменяется множеством переменных-отношениИ Е1, И2, ..., Ап (конечно, все они являются проекциями переменной-отношения й). 2.
Пусть также задано множество функциональных зависимостей Я, имеющих место в исходной переменной-отношении й, и множество функциональных зависимостей Я1, Я2, ..., Ял, выполняющихся в переменных-отношениях И1, Е2, ..., Ип. 3. Каждая функциональная зависимость в множестве ЯТ будет иметь отношение только к атрибутам проекции ЕТ (где 1=1, 2, 3, ..., л). В результате реализация ограничений (устанавливаемых существующими ФЗ) для любого данного множества ЯТ представляется достаточно простой задачей. Однако в действительности необходимо реализовать все ограничения, определяемые исходным множеством функциональных зависимостей Я. Следовательно, целесообразно выбрать такой вариант Глава 11. Дальнейшая нормализация: формы 1НФ, 2НФ, ЗНФ и НФБК 441 декомпозиции исходной переменной-отношения на проекции К1, К2, ..., Кп, при котором совместный эффект от реализации ограничений для отдельных множеств Я1, Я2, ..., Яп будет эквивалентен реализации всех ограничений для исходного множества функциональных зависимостей Я.
Иначе говоря, декомпозиция должна выполняться с сохранением зависимостей. 4. Пусть Я' является объединением множеств зависимостей Я1, Я2, ..., Яп. Обратите внимание на то, что в общем случае равенство Я'=Я не выполняется. Для декомпозиции с сохранением зависимостей достаточно, чтобы были равны замыкания множеств Я и Я' (понятие замыкания множества функциональных зависимостей рассматривалось в разделе 10.4). 5. В общем случае не существует эффективного метода вычисления замыкания Я' для заданного множества функциональных зависимостей, поэтому на практике вычисление и сравнение двух необходимых замыканий осуществить сложно. Тем не менее существует эффективный метод проверки, будет ли декомпозиция выполняться с сохранением зависимостей.
Описание подробностей этого алгоритма выходит за рамки данной книги, однако заинтересованный читатель сможет найти его в книге Ульмана ((/11шап) 17.13). Замечание. В ответе к упр.! 1.3 приведен алгоритм выполнения декомпозиции без потерь (и с сохранением существующих функциональных зависимостей) для произвольной переменной-отношения, позволяющий разбить ее на некоторое множество проекций в ЗНФ.
11.5. Нормальная форма Бойса-Кодда В этом разделе отбрасывается применявшееся выше допущение о том, что каждая переменная-отношение имеет только один потенциальный ключ (а именно — первичный ключ), и рассматривается более общий случай, Дело в том, что первоначальное определение, данное Коддом для ЗНФ 110.4), не во всех случаях оказывается удовлетворительным.
В частности, оно неадекватно при выполнении следующих условий. 1. Переменная-отношение имеет два (или более) потенциальных ключа. 2. Эти потенциальные ключи являются составными. 3. Два илн более потенциальных ключей перекрываются (т.е. имеют по крайней мере один общий атрибут). Поэтому впоследствии исходное определение ЗНФ было заменено более строгим определением Бойса-Колда (Воусе/Содд) (11.2), для которого было установлено собственное название — нормальная форма Бойса-Кодда (нли НФБК)'в.