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

11.5. Нормальная форма Бойса-Кодда

В этом разделе отбрасывается применявшееся выше допущение о том, что каждая пе­ременная-отношение имеет только один потенциальный ключ (а именно — первичный ключ), и рассматривается более общий случай. Дело в том, что первоначальное опреде­ление, данное Коддом для ЗНФ [10.4], не во всех случаях оказывается удовлетворитель­ным. В частности, оно неадекватно при выполнении следующих условий.

  1. Переменная-отношение имеет два (или более) потенциальных ключа.

  2. Эти потенциальные ключи являются составными.

  3. Два или более потенциальных ключей перекрываются (т.е. имеют по крайней мере один общий атрибут).

Поэтому впоследствии исходное определение ЗНФ было заменено более строгим оп­ределением Бойса-Кодда (Boyce/Codd) [11.2], для которого было установлено собствен­ное название — нормальная форма Бойса-Кодда (или НФБК)10.

На самом деле строгое определение "третьей" нормальной формы, эквивалентное опреде­лению нормальной формы Бойса-Кодда, впервые было дано Хитом (Heath) в 1971 году [11.4] и эту форму следовало бы назвать "нормальная форма Хита ".

Замечание.Комбинация условий 1-3 на практике встречается нечасто, а ЗНФ и НФБК полностью эквивалентны для любой переменной-отношения, в которой эти три условия не выполняются.

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

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

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

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

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

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

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

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

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

s#

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

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

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

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

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

SSP { SI, SNAME, Pt, QTY }

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

SSP

s#

SNAME

P#

QTY

SI

Smith

PI

300

SI

Smith

P2

200

SI

Smith

P3

400

SI

Smith

P4

200

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

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

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

Замечание. Под термином "ЗНФ" здесь подразумевается определение, данное Коддом в [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 и Т, которые представляют студента, изучаемый предмет и преподавате­ля соответственно (следует предупредить, что это всего лишь пример, к тому же доста­

точно экзотический). Смысл каждого кортежа {S:s, J: j, T:t} переменной-отношения SJT состоит в том, что некоторый студент s изучает некоторый предмет j у некоторого преподавателя t. При этом на информацию накладываются следующие два ограничения.

  • Каждый студент изучает определенный предмет только у одного преподавателя.

  • Каждый преподаватель ведет только один предмет, однако каждый предмет может преподаваться несколькими преподавателями.

На рис. 11.14 показан пример данных в переменной-отношении SJT.

SJT

S

J

T

Smith

Math

Prof. White

Smith

Physics

Prof. Green

Jones

Math

Prof. White

Jones

Physics

Prof. Brown

Рис. 11.14. Пример данных в переменной-отношении SJT

Какие функциональные зависимости существуют в этой переменной-отношении? Из пер­вого ограничения следует зависимость атрибута Т от комбинации атрибутов {S, J}, а из вто­рого— зависимость атрибута J от атрибута Т. Следовательно, диаграмма функциональных зависимостей переменной-отношении SJT будет иметь вид, представленный на рис. 11.15.

S

J

1 1

Рис. 11.15. Диаграмма функциональных зави­симостей в переменной-отношении SJT

И вновь в рассматриваемом примере присутствуют два перекрывающихся потенци­альных ключа, а именно: комбинация {S, J} и комбинация {S, Т}. Как и в первом при­мере, исходная переменная-отношение SJT находится в ЗНФ, но не в НФБК, в связи с чем для нее будут характерны некоторые аномалии обновления. Например, если потре­буется удалить сведения о том, что студент Джонс ('Jones') изучает физику, этого нель­зя будет сделать, не утратив одновременно информацию о том, что профессор Браун ('Prof. Brown') преподает этот предмет. Подобные трудности вызваны тем, что атрибут Т является детерминантом, но не является потенциальным ключом. И вновь для решения указанной проблемы исходную переменную-отношение SJT следует разбить на две про­екции, каждая из которых будет находиться в НФБК.

ST { S, Т } TJ { Т, J }

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

Однако следует отметить, что все еще существует иная проблема. Суть ее в том, что декомпозиция исходного отношения на проекции ST и TJ позволила исключить одни аномалии, однако привела к появлению других. Причиной является тот факт, что проек­ции ST и TJ не являются независимыми в смысле Риссанена (подробности приводятся выше в данной главе). Точнее говоря, функциональная зависимость {S, J} —> Т не мо­жет быть выведена из той единственной функциональной зависимости, которая присут­ствует в двух данных проекциях (Т —> J).

В результате две полученные проекции не могут обновляться независимо. Напри­мер, попытка вставить в переменную-отношение ST кортеж для студента Смита ('Smith') и профессора Брауна ('Prof. Brown') должна быть отвергнута системой, поскольку профессор Браун преподает физику, а Смит уже обучается физике у про­фессора Грина ('Prof. Green'). Однако обнаружить этот факт, не проверив содержи­мое переменной-отношения TJ, система не может. Таким образом, мы пришли к не­приятному выводу о том, что попытка достижения двух целей, а именно — декомпо­зиции исходной переменной-отношения на переменные-отношения, находящиеся в НФБК, и декомпозиции исходной переменной-отношения на независимые компоненты, в некоторых случаях может привести к конфликтной ситуации. Поэтому достичь обе цели одновременно не всегда возможно.

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

В качестве третьего и последнего примера переменной-отношения с перекры­вающимися потенциальными ключами рассмотрим переменную-отношение EXAM с атрибутами S (студент), J (предмет) и Р (позиция). Каждый кортеж {S:s, J: j, Р:р) переменной-отношения EXAM отражает сведения о том, что некоторый студент s эк­заменуется по определенному предмету j и занимает определенную позицию р в списке экзаменующихся. Дополнительно условимся, что в нашем примере имеет ме­сто следующее ограничение.

■ Никакие два студента не могут занимать одну и ту же позицию в списке экзаме­нующихся по одному и тому же предмету.

В этом случае диаграмма функциональных зависимостей будет иметь вид, представ­ленный на рис. 11.16.

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

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

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

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