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

1 ... 133 134 135 [ 136 ] 137 138 139 ... 348


жет привести к возникновению описанных ниже аномалий обновления. (В данном случае основное внимание будет сосредоточено на избыточности данных типа город - статус , отвечающей функциональной зависимости CITY -> STATUS.)

Операция INSERT. Нельзя поместить в базу данных сведения об определенном городе, обладающем некоторым статусом (например, нельзя указать, что все поставщики из Рима должны обладать статусом 50), до тех пор, пока в этом городе не появится конкретный поставщик.

Операция DELETE. При удалении из переменной-отнощения SECOND кортежа для некоторого города, представленного в ней этим единственным кортежем, будут удалены не только сведения о поставщике из данного города, но и информация о том, каким статусом обладал сам город. Например, при удалении из переменной-отношения SECOND кортежа для поставщика с номером S5 будет утрачена информация о том, что для Афин был установлен статус 30. (И в этом случае операции вставки и удаления фактически являются двумя сторонами одной и той же медали.)

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

Операция UPDATE. В переменной-отношении SECOND значение статуса для каждого города повторяется несколько раз (поэтому она все еще обладает некоторой избыточностью). Следовательно, при необходимости изменить для Лондона значение статуса 20 на 30 потребуется отыскать в переменной-отношении SECOND все кортежи, в которых значения London и 20 связаны между собой (для внесения соответствующих изменений). В противном случае база данных окажется в противоречивом состоянии (в одних кортежах статус для Лондона будет равен 20, а в других - 30).

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

SC { SI, CITY }

CS { CITY, STATUS }

Диаграммы функциональных зависимостей для этих переменных-отношений показаны на рис. 11.9, а их содержимое - на рис. 11.10. Обратите внимание, что информация о статусе Рима (Rome) включена только в переменную-отношение CS. Данное преобразование обратимо, поскольку переменная-отношение SECOND может быть получена посредством соединения переменных-отношений SC и CS по атрибуту CITY.

CITY

CITY

STATUS

Рис. 11.9. Функциональные зависимости в переменных-отношениях SC и CS



CITY

CITY

STATUS

London

Athens

Paris

London

Paris

Paris

London

Rome

Athens

Puc. 11.10. Данные в переменных-отношениях SC и CS

И на этот раз вполне очевидно, что подобное изменение структуры переменных-отношений позволяет устранить все описанные выше проблемы в операциях обновления. Читателю предлагается самостоятельно разобраться в подробностях решения этих проблем. Сравнивая рис. 11.9 и 11.7, можно заметить, что благодаря дальнейшей декомпозиции удалось исключить транзитивную зависимость атрибута STATUS от атрибута St. Это позволило избавиться ото всех сушествовавших трудностей. Интуитивно понятное объяснение состоит в том, что в переменной-отношении SECOND атрибут STATUS описывал сущность, отличную от сущности, которая идентифицировалась первичным ключом отношения (т.е. номером поставщика), т.е. город поставщика. Именно смешивание этих двух типов информации в одной переменной-отношении приводило к возникновению описанных выше проблем.

Теперь можно дать определение третьей нормальной формы.

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

Переменные-отношения SC и CS находятся в третьей нормальной форме, причем первичными ключами в них являются атрибуты {St} и {CITY} соответственно. Переменная-отношение SECOND не находится в третьей нормальной форме. Переменная-отношение, которая находится в 2НФ, но не находится в ЗНФ, всегда может быть преобразована в эквивалентный набор переменных-отношений в ЗНФ. Как говорилось ранее, этот процесс обратим и, следовательно, никакая информация при подобном преобразовании не утрачивается. Однако результирующий набор отношений в ЗНФ способен содержать такую информацию, которая не могла быть представлена в исходной переменной-отношении в 2НФ (например, сведения о том, что статус Рима равен 50).

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

Отсюда следует, что как комбинация переменных-отношений SECOND- SP может рассматриваться в качестве более корректного представления реального мира по сравнению с переменной-отношением FIRST, так и комбинация переменных-отношений SC- CS корректнее переменной-отношения SECOND, находящейся в 2НФ.



R { А, в, с }

PRIMARY KEY { А }

/* Предполагается наличие функциональной зависимости В -> С */

Процедура нормализации предусматривает замену этой переменной-отношения следующими двумя проекциями R1 и R2.

R1 { В, С }

PRIMARY KEY { В }

R2 { А, В }

PRIMARY KEY { А }

FOREIGN KEY { В } REFERENCES Rl

Переменная-отношение R всегда может быть восстановлена посредством соединения переменных-отношений Rl и R2 по внешнему и соответствующему ему первичному ключам этих переменных-отношений.

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

11.4. Сохранение зависимостей

в процессе нормализации часто возникает ситуация, когда переменная-отношение может быть подвергнута декомпозиции без потерь несколькими разными способами. Вновь обратимся к приведенной выше переменной-отношению SECOND с функциональными зависимостями Sl -> CITY и CITY -> STATUS и, следовательно, с еще одной транзитивной зависимостью Sl STATUS (на рис. П.II эта транзитивная зависимость показана пунктирной стрелкой).

В разделе 11.3 отмечалось, что аномалии обновления, сопровождающие переменную-отношение SECOND, можно преодолеть посредством ее декомпозиции с последующей заменой двумя проекциями в ЗНФ.

CITY

- STATUS

SC { SI, CITY }

CS { CITY, STATUS }

Puc. 11.11. Функциональные зависимости в переменной-отношении SECOND



1 ... 133 134 135 [ 136 ] 137 138 139 ... 348

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