Введение в системы БД (542480), страница 107
Текст из файла (страница 107)
Таким образом, первый этап процедуры нормализации состоит в создании проекций, которые позволяют исключить функциональные зависимости, не являющиеся неприводимыми. Пусть лана переменная-отношение К, имеющая следующий вид. к ( А, в, с, О > РК1ИАКУ КЕУ ( А, В ) /* Предполагается наличие функциональной зависимости А -> О */ Процедура нормализации предусматривает замену этой переменной-отношения следующими двумя проекциями К1 и К2.
К1 ( А, О > РК1КАНТ КЕУ ( А ~ Н2 ( А, В, С РК1ИАКТ КВУ ( А, в 1 ГОКЕ1ОК КЕУ ( А г КЕГЕНЕКСЕБ К1 Переменная-отношение К всегда может быть восстановлена посредством соединения переменных-отношений Н1 и К2 по внешнему и соответствующему ему первичному ключам этих переменных-отношений. Вернемся к нашему примеру. Следует отметить, что выбранная структура переменных-отношений ЯЕСОКВ и ЯР все еще может вызвать некоторые проблемы. Структура переменной-отношения ЯР вполне удовлетворительна, поскольку она фактически находится в ЯНФ.
Поэтому мы больше не будем уделять ей внимание до конца данного раздела. Однако в переменной-отношении ЯЕСОНО неключевые атрибуты все еше не являются взаимно независимыми. Диаграмма функциональных зависимостей для нее по-прежнему имеет вид более сложный, чем это требуется для диаграммы ФЗ переменной-отношения, находящейся в ЗНФ. В частности, зависимость атрибута БТАТСЯ от атрибута Я$ хотя и является функциональной и действительно неприводимой, одновременно является транзитивной (через атрибут С1ТУ).
Это означает, что каждое значение атрибута Яе определяет значение атрибута С1ТУ, а значение атрибута С1ТУ, в свою очередь, опрелеляет значение атрибута БТАТВБ. В общем случае, как уже объяснялось в главе 1О, если имеют место две функциональные зависимости А — э В и  — э С, то имеет Место и транзитивная функциональная зависимость А — ь С. Однако наличие транзитивных зависимостей мо- За исключением того факта, что переченная-отношение ЯЕСОЕВ может содержат~ дополнительные кортежи (наприиер, кортеж для пастатцика с номером 'Я5'), которые не будут ичеть аналога в перел~виной-отношении ГТЕЯТ (сч. рис.
П.8) Иначе говоря новая структура может содержать информацию, которую невоэчожно будет представить в исходной структуре. В этом смысле новую структуру можно рассматривать как более корректное представление реального мира. 436 Часть Пл. Проектирование базы данных жет привести к возникновению описанных ниже аномалий обновления. (В данном случае основное внимание будет сосредоточено на избыточности данных типа "город— статус", отвечающей функциональной зависимости С1ТУ -+ ЯТАТОЯ.) ° Операция 1ЕЯЕЕТ. Нельзя поместить в базу данных сведения об определенном городе, обладающем некоторым статусом (например, нельзя указать, что все поставщики из Рима должны обладать статусом 50), до тех пор, пока в этом городе не появится конкретный поставщик. ° Операция ОЕЬЕТЕ.
При удалении из переменной-отношения ЯЕСОЮ кортежа для некоторого города, представленного в ней этим елинственным кортежем, будут удалены не только сведения о поставщике из данного города, но и информация о том, каким статусом обладал сам горол. Например, при удалении из переменной- отношения ЯЕСОЮ кортежа для поставщика с номером 'Я5' будет утрачена информация о том„что для Афин был установлен статус 30. (И в этом случае операции вставки и удаления фактически являются двумя сторонами одной и той же медали.) Замечание. И вновь причиной подобных неприятностей является смешивание информации; переменная-отношение ЯЕСОЮ содержит информацию о поставщиках и вместе с ней информацию о городах. Для выхода из этой ситуации следует поступить так же, как и раньше, т,е, разделить смешанную информацию и перенести одну ее часть в переменную-отношение со сведениями о поставщиках, а другую — в переменную-отношение со сведениями о городах.
° Операция ОРОАТЕ. В переменной-отношении ЯЕСОЮ значение статуса для каждого города повторяется несколько раз (поэтому она все еше обладает некоторой избыточностью). Следовательно, при необходимости изменить для Лондона значение статуса 20 на 30 потребуется отыскать в переменной-отношении ЯЕСОЮ все кортежи, в которых значения '1лпбоп' и 20 связаны между собой (для внесения соответствующих изменений). В противном случае база данных окажется в противоречивом состоянии (в одних кортежах статус для Лондона будет равен 20, а в других — 30). И вновь для решения этой проблемы следует заменить исхолную переменную- отношение ЯЕСОЮ двумя следующими проекциями. ЯС ( Я$, С1ТУ СЯ ( С1ТХ, ЯТАТОЯ ) Диаграммы функциональных зависимостей для этих переменных-отношений показаны на рис.
! 1.9, а их содержимое — на рис. !! .10. Обратите внимание, что информация о статусе Рима (йоце) вкзючена только в переменную-отношение СЯ. Данное преобразование обратимо, поскольку переменная-отношение ЯЕСОЮ может быть получена посредством соединения переменных-отношений ЯС и СЯ по атрибуту С1ТУ. Рис. 119. Функииональные зависимости в переменных- отношениях ЯС и СЯ Глава 11. Дальнейшая нормализаз(ияг формы 1НФ, 2НФ, ЗНФ и НФБК 437 Рис.
11. 10. Данные в переменных-отнашениях ЯС и СЯ И на этот раз вполне очевидно, что подобное изменение структуры переменных- отношений позволяет устранить все описанные выше проблемы в операциях обновления. Читателю предлагается самостоятельно разобраться в подробностях решения этих проблем. Сравнивая рис. ! 1.9 и 11.7, можно заметить, что благодаря дальнейшей декомпозиции удалось исключить транзитивную зависимость атрибута ЯТАТУЯ от атрибута Я1.
Это позволило избавиться ото всех существовавших трудностей. Интуитивно понятное объяснение состоит в том, что в переменной-отношении ЯЕСОЕО атрибут ЯТАТОЯ описывал сущность, отличную от сущности, которая идентифицировалась первичным ключом отношения (т.е. номером поставщика), т.е, город поставщика. Именно смешивание этих двух типов информации в одной переменной-отношении приводило к возникновению описанных выше проблем.
Теперь можно дать определение третьей нормальной формы. ° Третья нормальная форма Гв определении предполагается наличие талька одного потенциальнага ключа, который и явчявплс» первичным ключа и отношения), Переменная-отношение находится в третьей нормальной форме тогда и только тогда, когда она находится во второй нормальной форме и каждый неключевой атрибут нетранзитивно зависит от ее первичного ключа. Заиечание. Под нетранзитивной зависимостью подразумевается отсутствие какой-либо взаимной зависимости в изложенном выше смысле.
Г1еременные-отношения ЯС и СЯ находятся в третьей нормальной форме, причем первичными ключами в них являются атрибуты (Я1) и (С1ТХ) соответственно. Переменная- отношение ЯЕСОМО не находится в третьей нормальной форме. Переменная-отношение, которая находится в 2НФ, но не находится в ЗНФ, всегда может быть преобразована в эквивалентный набор переменных-отношений в ЗНФ. Как говорилось ранее, этот процесс обратим и, следовательно, никакая информация при подобном преобразовании не утрачивается.
Однако результирующий набор отношений в ЗНФ способен содержать такую информацию, которая не могла быть представлена в исходной переменной- отношении в 2НФ (например, сведения о том, что статус Рима равен 50)З. Полводя итог сказанному, можно отметить, что второй этап нормализации состоит в создании проекций для исключения транзитивных зависимостей.
Иначе говоря, пусть дана переменная-отношение й, имеющая следующий вид. в Олкюда следует, что как комбинация переменных-атнашений "ЯЕСОЕΠ— ЯР" малкет рассматриватыя в качестве более корректного представления реального мира па сравнению с переменной-атнашенитч Р1ЕЯТ, так и ксмбинация переменных-отношений "ЯС вЂ” СЯ" корректнее переменной-атнашения ЯЕСО_#_0, нахадяи!ейся в 2НФ. 438 Часть 111. Проектирование базы данных к ( л, в, с ) РК1МАКУ КЕУ ( А ) /* Предполагается наличие функциональной зависимости В -э С */ Процедура нормализации предусматривает замену этой переменной-отношения следующими двумя проекциями К1 и К2.
К1 ( В, С ) РК1ИАКУ КЕХ ( В К2 ( А, В ) РК1ВАКТ КЕУ ( Л ) РОКЕ1ОМ КЕХ ( В ) КЕРЕКЕВСЕЯ К1 11.4. Сохранение зависимостей В процессе нормализации часто возникает ситуация, когда переменная-отношение может быть подвергнута декомпозиции без потерь несколькими разными способами. Вновь обратимся к привеленной выше переменной-отношению БЕСОВО с функциональными зависимостями Б$ — з С1ТТ и С1ТУ вЂ” з БТАТПБ и, следовательно, с еще одной транзитивной зависимостью Бз -ь БТАТПЯ (на рис.
11.1! эта транзитивная зависимость показана пунктирной стрелкой). В разделе! 1.3 отмечалось, что аномалии обновления, сопровождающие переменную-отношение БЕСОВО, можно преодолеть посредством ее декомпозиции с последующей заменой двумя проекциями в ЗНФ. Рис. /А/!. Функционачьные зависимости в переменной-атнашении ЯЕСОИО ЯС ( Я!1, С1ТХ ) СЯ ( С1ТУ, ЯТАТПЯ ) Глава 1/. Дальнейшая нормализация: форлзы 1НФ, 2НФ, ЗНФ и НФБК 439 Переменная-отношение К всегда может быть восстановлена посредством соединения переменных-отношений КТ и К2 по внешнему и соответствующему ему первичному ключам этих переменных-отношений.
В заключение следует подчеркнуть, что уровень нормализации переменной- отношения определяется семантикой данных, а не их конкретными значениями в некоторое время. Нельзя с первого взгляда на набор данных некоторой переменной-отношения однозначно определить, находится ли она, например, в ЗНФ. Для этого также необходимо представлять себе сущность этих данных, т.е. существующие между ними зависимости. Следует также отметить, что, даже зная о зависимостях в некоторой переменной-отношении, нельзя на основании конкретного набора ее данных доказать, что она находится в ЗНФ.