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

11.2. Декомпозиция без потерь

и функциональные зависимости

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

a) SST

6) SST

В качестве примера рассмотрим уже знакомую переменную-отношение поставщиков S с заголовком {Si, STATUS, CITY} (для упрощения задачи атрибут SNAME в данном слу­чае игнорируется). На рис. 11.3 показан пример значений данных в этой переменной-отношении и указаны два возможных варианта ее декомпозиции: а и б.

S

s#

STATUS

CITY

S3

30

Paris

S5

30

Athens

S#

STATUS

SC

s#

CITY

S3

30

S3

Paris

S5

30

S5

Athens

s#

STATUS

STC

STATUS

CITY

S3

30

30

Paris

S5

30

30

Athens

Рис. 11.3. Переменная-отношение S и два возможных варианта ее декомпозиции

Внимательно ознакомившись с предложенными вариантами декомпозиции, можно заметить две особенности.

  1. В случае а информация не утрачивается, поскольку переменные-отношения SST и SC все еще содержат данные о том, что поставщик с номером 'S3' имеет статус 30 и находится в Париже ('Paris'), а поставщик с номером 'S5' имеет статус 30 и находится в Афинах ('Athens'). Иначе говоря, первая декомпозиция действительно является декомпозицией без потерь.

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

Почему же получилось так, что одна декомпозиция была проведена без потери, а другая — с потерей информации? Прежде всего следует отметить, что процесс, который до сих пор назывался декомпозицией, на самом деле является операцией проекции, т.е. каж­дая из показанных на рис. 11.3 переменных-отношений — SST, SC и STC — в действитель­ности является проекцией исходной переменной-отношения S. Таким образом, оператор декомпозиции в процедуре нормализации фактически является оператором проекции.

Замечание. Как и в части II этой книги, высказывание вида "SST является проекцией переменной-отношения S" используется вместо более точного высказывания вида "SST является переменной-отношением, значение которой в определенное время является проекцией значения переменной-отношения S, которое она имеет в это же время". Наде­емся, что такое сокращение не собьет читателя с толку.

Обратите внимание, что в случае а сохранение информации в полном объеме означа­ет, что при обратном соединении переменных-отношений SST и SC будет получена ис­ходная переменная-отношение S. В случае б ситуация противоположная, поскольку при

обратном соединении переменных-отношений SST и SC исходная переменная-отношение S получена не будет, а это значит, что некоторая информация будет утрачена2. Иначе го­воря, "обратимость" означает, что исходная переменная-отношение равна соединению ее проекций. Если оператором декомпозиции в процедуре нормализации является операция проекции, то обратной операцией должна быть операция соединения.

Исходя из сказанного выше, можно задать следующий вопрос. Пусть R1 и R2 явля­ются проекциями некоторой переменной-отношения R, содержащими все атрибуты пе­ременной-отношения R. Какие условия должны быть соблюдены для того, чтобы при обратном соединении проекций Rl и R2 гарантировать получение исходной перемен­ной-отношения R? Именно для получения ответа на этот вопрос необходимо обратить­ся к функциональным зависимостям. В рассматриваемом примере переменная-отношение S удовлетворяет представленному ниже неприводимому множеству функ­циональных зависимостей.

St -> STATUS St -> CITY

При условии, что данная переменная-отношение удовлетворяет приведенным функ­циональным зависимостям, можно предположить, что переменная-отношение S равна соединению ее проекций {St, STATUS} и {St, CITY}. И это действительно так, что под­тверждается теоремой Хита (Heath) [11.4].

■ Теорема Хита. Пусть R{A, В, С} является переменной-отношением, где А, В и С — множества атрибутов этой переменной-отношения. Если R удовлетворяет функциональной зависимости А —> В, то R равна соединению ее проекций {А, В} и {А, С}.

Если принять, что А— это атрибут St, В— это атрибут STATUS, а С— это атрибут CITY, то данная теорема подтверждает, как отмечалось выше, что переменная-отношение S может быть разбита с помощью операции декомпозиции на проекции {St, STATUS} и {St, CITY} без потери информации.

Точнее, в исходной переменной-отношении S вместе со всеми кортежами будут содер­жаться "ложные" кортежи, поскольку при обратной операции никогда нельзя получить пере­менную-отношение, которая была бы меньше исходной переменной-отношения S (Упражнение Попробуйте доказать это утверждение) Поскольку не существует общего метода различения ложных и подлинных кортежей, информация в этом случае действительно будет утеряна

3 Дело в том, что она формулируется в выражениях "если , то ", а не "тогда и только тогда, когда " Об этом также идет речь в упр 111 Более строгая формулировка теоремы Хита будет представлена в следующей главе (в разделе 12 2)

В то же время уже известно, что переменная-отношение S не может быть разбита без потери информации на проекции {St, STATUS} и {STATUS, CITY}. Теорема Хита не дает объяснения, почему так происходит3. Однако интуитивно можно предположить, что при такой декомпозиции утрачивается одна из функциональных зависимостей, т.е. зависи­мость St —> STATUS будет присутствовать (благодаря проекции {St, STATUS}), а зави­симость St —> CITY будет утрачена.

Еще о функциональных зависимостях

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

1. Неприводимые слева ФЗ. Вспомним из главы 10, что функциональная зависи- мость называется неприводимой слева, если ее левая часть "не очень велика". Рас- смотрим, например, переменную-отношение SCP, приведенную в разделе 11.1, ко- торая удовлетворяет следующей функциональной зависимости.

{ Si, PI } -> CITY

Однако атрибут Р| в левой части этой функциональной зависимости является избы­точным и она может быть переписана в следующем виде.

Si -> CITY

(Иначе говоря, атрибут CITY функционально зависит от Si.) Эта последняя функ­циональная зависимость является неприводимой слева, а предыдущая— нет. Та­ким образом, можно сказать, что атрибут CITY неприводимо зависим от атрибута Si, но не неприводимо зависим от множества атрибутов {Si, Pi}4.

Неприводимые слева ФЗ и неприводимые зависимости играют важную роль при опре­делении второй и третьей нормальной форм (подробности приводятся в разделе 11.3).

2. Диаграммы ФЗ. Пусть дана переменная-отношение R и пусть к ней применимо не- которое неприводимое множество функциональных зависимостей I (более подроб- ные сведения о неприводимых множествах ФЗ приводятся в главе 10). Удобнее всего представить это множество ФД в виде диаграммы функциональных зависимостей (диаграммы ФЗ). Например, на рис. 11.4 показаны вполне очевидные по смыслу диа- граммы функциональных зависимостей для переменных-отношений S, SP и Р соот- ветственно. Такие диаграммы будут часто использоваться далее в этой главе.

PNAME

SNAME

S#

COLOR

S#

STATUS

QTY

p#H

WEIGHT

CITY

CITY

Рис. 11.4. Диаграмма функциональных зависимостей для пере­менных-отношений S, SP и Р

4 Здесь термины "неприводимая слева ФЗ" и "неприводимо зависим" используются вместо терминов "полная ФЗ" и "полностью зависим", которые часто можно встретить в литера­туре и прежних изданиях этой книги. Хотя последние термины отличаются краткостью, они менее информативны и потому не очень удобны.

Как можно видеть, на рис. 11.4 каждая стрелка начинается с потенциального ключа (на самом деле— с первичного ключа) соответствующей переменной-отношения. По определению стрелки должны начинаться с каждого потенциально­

го ключа3, поскольку одному значению такого ключа всегда соответствует еще по крайней мере одно какое-либо значение. Некоторые из существующих стрелок в определенных случаях необходимо будет исюючить ввиду того, что они вызыва­ют определенные затруднения, однако стрелки, начинающиеся с потенциальных ключей, никогда не могут быть исключены. Таким образом, процедуру нормализа­ции можно неформально охарактеризовать как процедуру исключения стрелок, ко­торые не начинаются с потенциальных ключей. 3. ФЗ как семантическое понятие. Конечно, функциональные зависимости— это особый вид ограничений целостности, а потому они, несомненно, являются поня­тием семантическим. Распознавание функциональных зависимостей представляет собой часть процесса выяснения смысла тех или иных данных. Тот факт, что пере­менная-отношение S удовлетворяет зависимости Si —> CITY, по сути, означает, что каждый поставщик находится точно в одном городе. Иначе эту ситуацию можно охарактеризовать следующим образом.

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

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

  • Для этого ограничение необходимо описать в определении базы данных таким образом, чтобы оно могло быть приведено в действие средствами СУБД.

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

Как будет показано ниже, концепции нормализации позволяют использовать весьма простые способы объявления ФЗ.

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