Введение в системы БД (542480), страница 109
Текст из файла (страница 109)
Замечание. Комбинация условий 1 — 3 на практике встречается нечасто, а ЗНФ и НФБК полностью эквивалентны для любой переменной-отношения, в которой эти три условия не выполняются. На самом деле строгое определение "трет~ей" нормальной формы, эквивалентное определению нормальной формы Бойса-Кодда, впервые было дано Хитом ~Неа/й/ в /97/ году ///.4! и эту форму следоваю бы назват~ "нормальная форма Хита ". 442 Часть Ш Проектирование базы данных Для объяснения концепции НФБК необходимо воспользоваться понятием детерминанта, введенным в главе 10 для ссылок на левую часть описания некоторой функциональной зависимости, а также понятием тривиальной функциональной зависимости, обозначающим такую ФЗ, левая часть которой является супермножеством правой части.
Дадим определение НФБК. ° Переменная-отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда каждая ее нетривиальная и неприводимая слева функциональная зависимость имеет в качестве детерминанта некоторый потенциальный ключ. Можно дать и другой, менее формальный вариант определения, ° Переменная-отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты всех ее ФЗ являются потенциальными ключами.
Иначе говоря, на диаграмме функциональных зависимостей стрелки будут начинаться только с элементов, представляюШих потенциальные ключи. Согласно данному выше определению никакие другие стрелки не допускаются и, следовательно, никакие стрелки не могут быть исключены с помошью описанной выше процедуры нормализации. Замечание. Различие между двумя приведенными определениями НФБК состоит в том, что в менее формальном из них неявно подразумевается, что детерминанты "не слишком велики" и все ФЗ нетривиальны. Для простоты изложения далее в этой главе будут использованы такие же допущения, за исключением особо оговоренных случаев. Стоит также отметить, что определение НФБК концептуально проще, чем данное ранее определение ЗНФ, поскольку в нем нет явных ссылок на первую и вторую нормальные формы, а также не используется концепция транзитивной зависимости. Кроме того, хотя (как отмечалось выше) определение НФБК является сушественно более строгим, чем определение ЗНФ, любая переменная-отношение может быть подвергнута декомпозиции без потерь информации на некоторый эквивалентный набор переменных-отношений в НФБК.
Прежде чем рассматривать примеры переменных-отношений с несколькими потенциальными ключами, убедимся, что переменные-отношения Р1ЕЯТ и ЯЕСОЕО, которые не находятся в ЗНФ, также не находятся в НФБК. Кроме того, убелимся, что переменные- отношения ЯР, ЯС и СЯ, которые находятся в ЗНФ, также находятся в НФБК. Переменная- отношение Р1ЕЯТ содержит три детерминанта, а именно — Я1, С1ТУ и 1Я$, РЗ), из которых только 1ЯЕ, Р3) является ее потенциальным ключом. Поэтому переменная- отношение Р1ЕЯТ не находится в НФБК.
Аналогичное утверждение верно для переменной-отношения ЯЕСОИО, поскольку детерминант С1ТУ не является ее потенциальным ключом. С другой стороны, переменные-отношения ЯР, ЯС и СЯ находятся в НФБК, поскольку в каждом случае единственный потенциальный ключ является единственным детерминантом для данной переменной-отношения. Теперь рассмотрим пример, содержащий два неперекрываюшихся потенциальных ключа. Допустим, что в переменной-отношении поставщиков Я с атрибутами 1Я1, ЯИАИЕ, ЯТАТОЯ, С1ТУ) атрибуты Я$ и ЯИАИЕ являются ее потенциальными ключами (т.е, в этом случае каждый поставщик имеет уникальный номер и уникальное имя). Также предположим (как, впрочем, и всюду в этой книге), что атрибуты ЯТАТОЯ и С1ТУ являются независимыми, т.е. введенная выше для некоторых частных целей функциональная зависимость С1ТУ вЂ” > ЯТАТОЯ больше не имеет места.
Тогда диаграмма функциональных зависимостей будет иметь вид, представленный на рис. 11.!2. Глава 11. Дальнейшая нормализация: формы!НФ, 2НФ, 3НФ и НФБК 443 Данная переменная-отношение Б находится в НФБК. Хотя ее диаграмма ФЗ существенно "сложнее" диаграммы ФЗ для переменной-отношения в 3НФ, в этом случае все детерминанты являются потенциальными ключами, а все стрелки начинаются с потенциальных ключей. Таким образом, из данного примера можно сделать Рис. 11.12.Диаграмма функциональных за- вывод, что наличие нескольких потенцивисииастей в переменной-отношении альных ключей не так уж и плохо. (Однако Я для скучая, когда атрибут ЯИАИЕяв- весьма желательно, чтобы атрибут ЯИАИЕ ляется ее потенциальным «лючаи (и был описан как потенциальный ключ еще зависимость СТТТ вЂ”, БТАТЯЯ не вы- при определении базы данных, что позвопачняется) лит СУБД обеспечить строгую уникальность его значений.) Теперь рассмотрим несколько примеров, в которых потенциальные ключи перекрываются.
Потенциальные ключи перекрываются, если они содержат по два или более атрибутов и имеют хотя бы один общий атрибут. Замечание. В соответствии с доводами, которые приводились в главе 8, в примерах этой главы из имеющихся потенциальных ключей первичный ключ выбираться не будет. Поэтому в представленных ниже таблицах никакие столбцы не будут выделяться с помощью двойной линии. В первом примере рассмотрим переменную-отношение, в которой предполагается, что имена поставщиков уникальны. ББР ( Я$, ЯИАИЕ, Р$, ()ТТ ) Потенциальными ключами в ней являются пары атрибутов (8$, Р$) и (БИАИЕ, Р$).
Однако эта переменная-отношение не находится в НФБК, так как она содержит два детерминанта, Б$ и ЯЫАИЕ, которые не являются ее потенциальными ключами (Я$ и ЯИАИŠ— детерминанты, поскольку они определяют друг друга). Пример значений данных для переменной-отношения БЯР показан на рис. 11.13. Рис, 11.! 3.
Часть примера набора данных для переменной-отношения ЯЯР Как можно видеть, переменной-отношению ЯЯР свойственна некоторая доля избыточности, присутствовавшей в переменной-отношении ЯСР (см. раздел 11.3) н в переменных-отношениях РТЕЯТ и БЕСОЮ (см. раздел 11.1), поэтому она характеризуется такими же аномалиями обновления. Например, изменение имени поставщика с номером '81' либо потребует найти все относящиеся к нему кортежи, либо приведет к переходу базы 444 Часть 111. 11роектирование базы данных данных в противоречивое состояние.
Тем не менее переменная-отношение ББР находится в ЗНФ, поскольку согласно старому определению не требуется, чтобы атрибут был неприводимо зависим от каждого потенциального ключа, если он сам является компонентом некоторого потенциального ключа данной переменной-отношения. В результате тот факт, что атрибут БЕАЕЕ приволнмо зависим от атрибутов (Я$, Р() ), данным определением игнорируется. Замечание. Под термином "ЗНФ" злесь подразумевается определение, данное Коддом в (10.4], а не упрощенное определение, данное нами в разделе 11.3. Для решения указанной проблемы переменную-отношение ЯЯР следует разбить на две проекции.
ЯЯ ( ЯЗ, ББАИЕ ЯР ( Я(), Р(, ()ТХ ) Однако можно выбрать и альтернативный вариант разбиения. ЯЯ ( Я$, ББАИЕ ) БР ( ББАЕЕ, РЕ, ОТХ ) Обратите внимание, что в этом примере существует два варианта декомпозиции, причем в одинаковой мере допустимых, поскольку все входящие в них проекции нахолятся в НФБК. Здесь следует сделать небольшое отступление и пояснить, что же происходит "в действительности". Ясно, что исходный вариант, состоящий из одной переменной- отношения ЯЯР, неудачен и возникающие в связи с этим проблемы вполне очевидны.
Маловероятно, чтобы подобный проект предложил более или менее опытный разработчик баз данных, лаже если он совершенно не знаком с концепцией НФБК (и т.д.). Простой здравый смысл подскажет нам, что вариант с двумя переменными-отношениями ЯБ и БР, несомненно, лучше. Однако что в паннам случае подразумевается под "здравым смыслом" и в соответствии с какими принципами разработчику следует отдать предпочтение варианту с переменными-отношениями ЯБ и ЯР вместо варианта с переменной- отношением БЯР? Безусловно, ответ заключается в том, что зто именно принципы функциональной зависимости и нормальная форма Бойса-Кодда. Иначе говоря, рассматриваемые нами концепции (ФЗ, НФБК и все прочие формальные идеи, изложенные в этой и следующей главах) являются не более и не менее чем соображениями здравого смысяа, записанными в формазьнам виде.