Программирование >>  Хронологические базы данных 

1 ... 135 136 137 [ 138 ] 139 140 141 ... 348


Для объяснения концепции НФБК необходимо воспользоваться понятием детерминанта, введенным в главе 10 для ссылок на левую часть описания некоторой функциональной зависимости, а также понятием тривиальной функциональной зависимости, обозначающим такую ФЗ, левая часть которой является супермножеством правой части. Дадим определение НФБК.

Переменная-отнощение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда каждая ее нетривиальная и неприводимая слева функциональная зависимость имеет в качестве детерминанта некоторый потенциальный ключ.

Можно дать и другой, менее формальный вариант определения.

Переменная-отнощение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты всех ее ФЗ являются потенциальными ключами.

Иначе говоря, на диафамме функциональных зависимостей стрелки будут начинаться только с элементов, представляющих потенциальные ключи. Согласно данному выще определению никакие другие стрелки не допускаются и, следовательно, никакие стрелки не могут быть исключены с помощью описанной выще процедуры нормализации.

Замечание. Различие между двумя приведенными определениями НФБК состоит в том, что в менее формальном из них неявно подразумевается, что детерминанты не слишком велики и все ФЗ нетривиальны. Для простоты изложения далее в этой главе будут использованы такие же допущения, за исключением особо оговоренных случаев.

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

Прежде чем рассматривать примеры переменных-отношений с несколькими потенциальными ключами, убедимся, что переменные-отношения FIRST и SECOND, которые не находятся в ЗНФ, также не находятся в НФБК. Кроме того, убедимся, что переменные-отношения SP, SC и CS, которые находятся в ЗНФ, также находятся в НФБК. Переменная-отношение FIRST содержит три детерминанта, а именно - Sl, CITY и {SI, Р}, из которых только {SI, Р} является ее потенциальным ключом. Поэтому переменная-отношение FIRST не находится в НФБК. Аналогичное утверждение верно для переменной-отношения SECOND, поскольку детерминант CITY не является ее потенциальным ключом. С другой стороны, переменные-отношения SP, SC и CS находятся в НФБК, поскольку в каждом случае единственный потенциальный ключ является единственным детерминантом для данной переменной-отношения.

Теперь рассмотрим пример, содержащий два неперекрывающихся потенциальных ключа. Допустим, что в переменной-отношении поставщиков S с атрибутами {SI, SNAME, STATUS, CITY} атрибуты Sl и SNAME являются ее потенциальными ключами (т.е. в этом случае каждый поставщик имеет уникальный номер и уникальное имя). Также предположим (как, впрочем, и всюду в этой книге), что атрибуты STATUS и CITY являются независимыми, т.е. введенная выше для некоторых частных целей функциональная зависимость CITY -> STATUS больше не имеет места. Тогда диафамма функциональных зависимостей будет иметь вид, представленный на рис. 11.12.



SNAME

CITY

STATUS

Puc. 11.12. Диаграмма функциональных зависимостей в переменной-отношении S для ачучая, когда атрибут SNAME является ее потенциальным ключом (и зависимость CITY STATUS не выполняется)

Данная переменная-отношение S находится в НФБК. Хотя ее диаграмма ФЗ существенно сложнее диаграммы ФЗ для переменной-отношения в ЗНФ, в этом случае все детерминанты являются потенциальными ключами, а все стрелки начинаются с потенциальных ключей. Таким образом, из данного примера можно сделать вывод, что наличие нескольких потенциальных ключей не так уж и плохо. (Однако весьма желательно, чтобы атрибут SNAME был описан как потенциальный ключ еще при определении базы данных, что позволит СУБД обеспечить строгую уникальность его значений.)

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

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

В первом примере рассмотрим переменную-отношение, в которой предполагается, что имена поставщиков уникальны.

SSP { SI, SNAME, Ft, QTY }

Потенциальными ключами в ней являются пары атрибутов {S#, Р#} и {SNAME, Р}. Однако эта переменная-отношение не находится в НФБК, так как она содержит два детерминанта, SI и SNAME, которые не являются ее потенциальными ключами (SI и SNAME - детерминанты, поскольку они определяют друг друга). Пример значений данных для переменной-отношения SSP показан на рис. 11.13.

SNAME

Smith

Smith

Smith

Smith

Puc. 11.13. Часть примера набора данных для переменной-отношения SSP

Как можно видеть, переменной-отношению SSP свойственна некоторая доля избыточности, присутствовавшей в переменной-отношении SCP (см. раздел 11.3) и в переменных-отношениях FIRST и SECOND (см. раздел 11.1), поэтому она характеризуется такими же аномалиями обновления. Например, изменение имени поставщика с номером S1 либо потребует найти все относящиеся к нему кортежи, либо приведет к переходу базы



данных в противоречивое состояние. Тем не менее переменная-отношение SSP находится в ЗНФ, поскольку согласно старому определению не требуется, чтобы атрибут был неприводимо зависим от каждого потенциального ключа, если он сам является компонентом некоторого потенциального ключа данной переменной-отношения. В результате тот факт, что атрибут SNAME приводимо зависим от атрибутов {S#, Р}, данным определением игнорируется.

Замечание. Под термином ЗНФ здесь подразумевается определение, данное Коддом в [10.4], а не упрошенное определение, данное нами в разделе 11.3.

Для решения указанной проблемы переменную-отношение SSP следует разбить на две проекции.

SS { SI, SNAME } SP { SI, PI, QTY }

Однако можно выбрать и альтернативный вариант разбиения.

SS { SI, SNAME }

SP { SNAME, PI, QTY }

Обратите внимание, что в этом примере существует два варианта декомпозиции, причем в одинаковой мере допустимых, поскольку все входящие в них проекции находятся в НФБК.

Здесь следует сделать небольшое отступление и пояснить, что же происходит в действительности . Ясно, что исходный вариант, состоящий из одной переменной-отношения SSP, неудачен и возникающие в связи с этим проблемы вполне очевидны. Маловероятно, чтобы подобный проект предложил более или менее опытный разработчик баз данных, даже если он совершенно не знаком с концепцией НФБК (и т.д.). Простой здравый смысл подскажет нам, что вариант с двумя переменными-отношениями SS и SP, несомненно, лучше. Однако что в данном случае подразумевается под здравым смыслом и в соответствии с какими принципами разработчику следует отдать предпочтение варианту с переменными-отношениями SS и SP вместо варианта с переменной-отнощением SSP?

Безусловно, ответ заключается в том, что это именно принципы функциональной зависимости и нормальная форма Бойса-Кодда. Иначе говоря, рассматриваемые нами концепции (ФЗ, НФБК и все прочие формальные идеи, изложенные в этой и следующей главах) являются не более и не менее чем соображениями здравого смысла, записанными в фор-мачъном виде. Сутью излагаемой здесь теории является поиск и формулирование этих принципов здравого смысла, что, конечно же, является весьма непростой задачей. Однако, если такая задача будет нами решена, найденные принципы могут быть положены в основу решений автоматизагцш, т.е. можно будет написать программу, позволяющую выполнять проектирование с помощью компьютера. Критики методов нормализации обычно упускают этот момент из виду, совершенно справедливо заявляя, что данные идеи, в основном, представляют собой всего лишь соображения здравого смысла. Однако при этом не принимается во внимание, что возможность формальной и строгой формулировки соображений здравого смысла уже сама по себе является значительным достижением.

Теперь вернемся к основной теме данного раздела и рассмотрим второй пример с перекрывающимися потенциальными ключами. Обратимся к переменной-отношению SJT с атрибутами S, J и Т, которые представляют студента, изучаемый предмет и преподавателя соответственно (следует предупредить, что это всего лишь пример, к тому же доста-



1 ... 135 136 137 [ 138 ] 139 140 141 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика