Скачиваний:
48
Добавлен:
01.04.2014
Размер:
690.69 Кб
Скачать

10.2. Декомпозиция без потерь и функциональные зависимости

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

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

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

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

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

S

S#

STATUS

CITY

S3

S5

30

30

Paris

Athens

а) SST

S#

STATUS

S3

S5

30

30

SC

S#

CITY

S3

S5

Paris

Athens

б) SST

S#

STATUS

S3

S5

30

30

STC

STATUS

CITY

30

30

Paris

Athens

Рис. 10.3. Отношение S и две его возможные декомпозиции

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

Обратите внимание, что в случае (а) сохранение информации в полном объеме означает, что при обратном соединении отношений SST и SC будет получено исходное отношение S. В случае (б), наоборот, при обратном соединении отношений SST и SC не будет получено исходное отношение S, а это значит, что некоторая информация будет утрачена. (Точнее, в исходном отношении S вместе со всеми кортежами будут содержаться "ложные" кортежи. Поскольку не существует общего метода для различения ложных и подлинных кортежей, информация в этом случае будет утеряна.) Иначе говоря, "обратимость" означает, что исходное отношение равно соединению его проекций. Если оператором декомпозиции в процедуре нормализации является операция проектирования, то обратной операцией должна быть операция соединения (конечно, в смысле естественного соединения по атрибутам с общими именами).

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

S#  STATUS

S#  CITY

При условии, что данное отношение удовлетворяет приведенным ФЗ, можно предположить, что отношение S равно соединению его проекций {S#, STATUS} и {S#, CITY}. И это действительно так, что подтверждается теоремой Хеза (Неаth) [ 10.4].

  • Теорема Хеза. Пусть R {A, B, C} является отношением, где А, В, С –атрибуты этого отношения. Если R удовлетворяет зависимости А В, то R равно соединению его проекций {A,B} и {A, C}.

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

В то же время уже известно, что отношение S не может быть разбито без потери ин­формации на проекции {S#, STATUS} и {STATUS, CITY}. Теорема Хеза не дает объяс­нения, почему так происходит. (Дело в том, что она формулируется как "если..., то...", а не "тогда и только тогда, когда...". Об этом также идет речь в упражнениях в конце главы. Более строгая формулировка теоремы Хеза будет представлена в главе 11.) Однако интуи­тивно можно предположить, что при такой декомпозиции утрачивается одна из функ­циональных зависимостей, т.е. зависимость S# STATUS еще будет присутствовать (благодаря проекции {S#, STATUS}), а зависимость S# CITY будет утрачена.

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

В завершение перечислим некоторые дополнительные замечания, касающиеся ФЗ.

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

{ S#, Р# }  CITY

Однако атрибут Р# в левой части является избыточным для этой ФЗ, и она может быть переписана:

S#  CITY

(Атрибут CITY функционально зависит от S#.) Эта последняя ФЗ является непри­водимой слева. Таким образом, можно сказать, что атрибут CITY неприводимо за­висим от S#, но не неприводимо зависим от {S#,P#}. (Здесь термины "неприводимо зависим" и "неприводимая слева ФЗ" используются вместо терми­нов "полная ФЗ" и "полностью зависимая", которые часто можно встретить в ли­тературе и прежних изданиях этой книги. Хотя последние термины отличаются краткостью, они менее информативны и потому не очень удобны.)

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

P#

Р

QTY

ис. 10.4. Диаграмма ФЗ для отношенийS, SP и Р

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

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

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

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

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

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

  • Способом задания ограничения в определении базы данных является объявление ФЗ.

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

Соседние файлы в папке Дейтл Введ в БД