Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технологии БД / Методичка Технологии БД (блоки 1-2).doc
Скачиваний:
82
Добавлен:
01.05.2014
Размер:
922.11 Кб
Скачать

Теорема Хеза.

Пусть задано отношение r {A, B, C}(A,BиC, в общем случае, являются составными атрибутами) и выполняетсяFD AB.

Рис. 7. Результат естественного соединения отношений СЛУЖ и ЗАРП_ПРО

Тогда r = (r PROJECT {A, B}) NATURAL JOIN (r PROJECT {A, C}).

Для иллюстрации общего случая применения теоремы Хезарассмотрим отношениеСЛУЖАЩИЕ_ОТДЕЛЫ_ПРОЕКТЫ {СЛУ_НОМ, СЛУ_ОТД, ПРО_НОМ}(Рис. 8). АтрибутСЛУ_ОТДсодержит номера отделов, в которых работают служащие, аПРО_НОМ– номера проектов, в которых служащие принимают участие. Каждый служащий работает только в одном отделе, т. е. имеетсяFD СЛУ_НОМСЛУ_ОТД, но один служащий может участвовать в нескольких проектах.

Рис. 8.  Декомпозиция без потерь по теореме Хеза

В отношении СЛУЖАЩИЕ_ОТДЕЛЫ_ПРОЕКТЫатрибутСЛУ_НОМне является возможным ключом, но, как показано на Рис. 8, наличияFD СЛУ_НОМСЛУ_ОТДоказывается достаточно длядекомпозиции этого отношения без потерь.

      1. Диаграммы функциональных зависимостей

Далее, для иллюстраций в следующей лекции нам пригодятся диаграммы FD, с помощью которых можно наглядно представлятьминимальные множества FD. Например, на Рис. 9 приведенадиаграмма минимального множества FDотношенияСЛУЖАЩИЕ_ПРОЕКТЫ.

Рис. 9.  Диаграмма минимального множества FD отношения СЛУЖАЩИЕ_ПРОЕКТЫ

В левой части диаграммывсе стрелки начинаются с атрибутаСЛУ_НОМ, который является единственным возможным (и, следовательно, первичным) ключом отношенияСЛУЖАЩИЕ_ПРОЕКТЫ. Обратите внимание на отсутствие стрелки отСЛУ_НОМкПРОЕКТ_РУК. Конечно, посколькуСЛУ_НОМявляется возможным ключом, должна выполняться иFD СЛУ_НОМПРОЕКТ_РУК. Но этаFDявляетсятранзитивной(черезПРО_НОМ) и поэтому не входит вминимальное множество FD. Заметим, что в процессе нормализации, к рассмотрению которого мы приступим в следующей лекции, издиаграмм множества FDудаляются стрелки, начинающиеся не от возможных ключей.

      1. Первая нормальная форма

Определение: Первая нормальная форма

Отношение Rнаходится в первой нормальной форме, если обладает следующими свойствами:

  • в отношении нет одинаковых кортежей.

  • кортежи не упорядочены.

  • атрибуты не упорядочены.

  • все значения атрибутов атомарны

      1. Минимальные функциональные зависимости и вторая нормальная форма

Пусть имеется переменная отношения СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ {СЛУ_НОМ, СЛУ_УРОВ, СЛУ_ЗАРП, ПРО_НОМ, СЛУ_ЗАДАН}. Новые атрибутыСЛУ_УРОВиСЛУ_ЗАДАНсодержат, соответственно, данные о разряде служащего и о задании, которое выполняет служащий в данном проекте. Будем считать, что разряд служащего определяет размер его заработной платы, и что каждый служащий может участвовать в нескольких проектах, но в каждом проекте он выполняет только одно задание. Тогда очевидно, что единственно возможным ключом отношенияСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯявляется составной атрибут{СЛУ_НОМ, ПРО_НОМ}. Диаграмма минимального множества FD показана на Рис. 10, а возможное тело значения отношения – на Рис. 11.

Рис. 10. Диаграмма множества FD отношения СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ

Рис. 11. Возможное значение переменной отношения СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ

Аномалии обновления, возникающие из-за наличия неминимальных функциональных зависимостей

Во множество FD отношения СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯвходит много FD, в которых детерминантом является не возможный ключ отношения (соответствующие стрелки в диаграмме начинаются не с{СЛУ_НОМ, ПРО_НОМ}, т. е. некоторые функциональные зависимости атрибутов от возможного ключа не являются минимальными). Это приводит к так называемым аномалиям обновления. Поданомалиями обновленияпонимаются трудности, с которыми приходится сталкиваться при выполнении операций добавления кортежей в отношение (INSERT), удаления кортежей (DELETE) и модификации кортежей (UPDATE). Обсудим сначала аномалии обновления, вызываемые наличием FDСЛУ_НОМСЛУ_УРОВ(эти аномалии связаны с избыточностью хранения значений атрибутовСЛУ_УРОВиСЛУ_ЗАРПв каждом кортеже, описывающем задание служащего в некотором проекте).

  • Добавление кортежей.Мы не можем дополнить отношениеСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯданными о служащем, который в данное время еще не участвует ни в одном проекте (ПРО_НОМявляется частью первичного ключа и не может содержать неопределенных значений). Между тем часто бывает, что сначала служащего принимают на работу, устанавливают его разряд и размер зарплаты, а лишь потом назначают для него проект.

  • Удаление кортежей.Мы не можем сохранить в отношенииСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯданные о служащем, завершившем участие в своем последнем проекте (по той причине, что значение атрибутаПРО_НОМдля этого служащего становится неопределенным). Между тем характерна ситуация, когда между проектами возникают перерывы, не приводящие к увольнению служащих.

  • Модификация кортежей.Чтобы изменить разряд служащего, мы будем вынуждены модифицировать все кортежи с соответствующим значением атрибутаСЛУ_НОМ. В противном случае будет нарушена естественная FDСЛУ_НОМСЛУ_УРОВ(у одного служащего имеется только один разряд).