Тема_5 (1122344), страница 4
Текст из файла (страница 4)
Кузнецов. Базы данных.47 Проектирование РБДМинимальные FD и вторая нормальная форма (1)Пусть имеется переменная отношенияСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ с заголовком{СЛУ_НОМ, СЛУ_УРОВ, СЛУ_ЗАРП, ПРО_НОМ, СЛУ_ЗАДАН}Атрибуты СЛУ_УРОВ и СЛУ_ЗАДАН содержат,соответственно, данные о разряде служащего и о задании,которое выполняет служащий в данном проектеБудем считать, что разряд служащего определяет размер его заработнойплаты, и что каждый служащий может участвовать в несколькихпроектах, но в каждом проекте выполняет только одно заданиеТогда очевидно, что единственно возможным ключомотношения СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ являетсясоставной атрибут {СЛУ_НОМ, ПРО_НОМ}22.10.2009С.Д.
Кузнецов. Базы данных.48 Проектирование РБДМинимальные FD и вторая нормальная форма (2)22.10.2009С.Д. Кузнецов. Базы данных.49 Проектирование РБДМинимальные FD и вторая нормальная форма (3)Аномалии обновления из-за наличия не минимальных FD (1)Во множество FD отношенияСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ входит несколько FD, вкоторых детерминантом является не возможный ключотношениясоответствующие стрелки в диаграмме начинаются не с {СЛУ_НОМ,ПРО_НОМ},т. е. некоторые функциональные зависимости атрибутов отвозможного ключа не являются минимальнымиЭто приводит к проявлению так называемых аномалийобновленияПод аномалиями обновления понимаются трудности, скоторыми приходится сталкиваться при выполнении операцийдобавления кортежей в отношение (INSERT),удаления кортежей (DELETE) имодификации кортежей (UPDATE)22.10.2009С.Д.
Кузнецов. Базы данных.50 Проектирование РБДМинимальные FD и вторая нормальная форма (4)Аномалии обновления из-за наличия не минимальных FD (2)Обсудим сначала аномалии обновления, вызываемыеналичием FD СЛУ_НОМ → СЛУ_УРОВЭти аномалии связаны с избыточностью хранения значенийатрибутов СЛУ_УРОВ и СЛУ_ЗАРП в каждом кортеже,описывающем задание служащего в некотором проектеДобавление кортежейНевозможно дополнить отношениеСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ данными о служащем,который в данное время еще не участвует ни в одномпроекте ПРО_НОМ является частью первичного ключа и не можетсодержать неопределенных значенийМежду тем часто бывает, что сначала служащего принимаютна работу, устанавливают его разряд и размер зарплаты, алишь потом назначают для него проект22.10.2009С.Д.
Кузнецов. Базы данных.51 Проектирование РБДМинимальные FD и вторая нормальная форма (5)Аномалии обновления из-за наличия не минимальных FD (3)Удаление кортежейНевозможно сохранить в отношенииСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ данные о служащем,завершившем участие в своем последнем проекте по той причине, что значение атрибута ПРО_НОМ для этогослужащего стало бы неопределеннымМежду тем характерна ситуация, когда между проектамивозникают перерывы, не приводящие к увольнениюслужащих.Модификация кортежей Чтобы изменить разряд служащего, придетсямодифицировать все кортежи с соответствующим значениематрибута СЛУ_НОМ В противном случае будет нарушена естественная FDСЛУ_НОМ → СЛУ_УРОВу одного служащего имеется только один разряд22.10.2009С.Д.
Кузнецов. Базы данных.52 Проектирование РБДМинимальные FD и вторая нормальная форма (6)Возможная декомпозиция (1)На основании теоремы Хита этадекомпозиция является декомпозициейбез потерь, поскольку в исходномотношении имелась FD{СЛУ_НОМ, ПРО_НОМ} → СЛУ_ЗАДАН22.10.2009С.Д. Кузнецов. Базы данных.53 Проектирование РБДМинимальные FD и вторая нормальная форма (7)Возможная декомпозиция (2)Теперь можно легко справиться с операциями обновленияДобавление кортежей Чтобы сохранить данные о принятом на работу служащем,который еще не участвует ни в каком проекте, достаточнодобавить соответствующий кортеж в отношение СЛУЖУдаление кортежей Если некоторый служащий прекращает работу в некоторомпроекте, достаточно удалить соответствующий кортеж изотношения СЛУЖ_ПРО_ЗАДАН При увольнении служащего нужно удалить кортежи ссоответствующим значением атрибута СЛУ_НОМ изотношений СЛУЖ и СЛУЖ_ПРО_ЗАДАНМодификация кортежей Если у служащего меняется разряд (и, следовательно,размер зарплаты), достаточно модифицировать один кортежв отношении СЛУЖ22.10.2009С.Д.
Кузнецов. Базы данных.54 Проектирование РБДМинимальные FD и вторая нормальная форма (8)Вторая нормальная форма (1)В отношениях СЛУЖ и СЛУЖ_ПРО_ЗАДАН отсутствуют FD, неявляющиеся минимальнымиНаличие таких FD в переменной отношенияСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ вызывало аномалии обновленияВ действительности, проблема заключалась в том, что атрибутСЛУЖ_УРОВ относился к сущности служащий, в то время какпервичный ключ идентифицировал сущностьзадание_служащего_в_проектеОпределение 5.11. Вторая нормальная формаПеременная отношения находится во второй нормальной форме (2NF)тогда и только тогда, когда она находится в первой нормальной форме,и каждый ее неключевой атрибут минимально функционально зависитот первичного ключаНеключевым атрибутом называется атрибут, не входящий ни в одинвозможный ключ22.10.2009С.Д.
Кузнецов. Базы данных.55 Проектирование РБДМинимальные FD и вторая нормальная форма (9)Вторая нормальная форма (2)Переменные отношений СЛУЖ и СЛУЖ_ПРО_ЗАДАН находятся в2NFПеременная отношения СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ ненаходится в 2NFнапример, FD {СЛУ_НОМ, ПРО_НОМ} → СЛУ_УРОВ не являетсяминимальнойЛюбая переменная отношения, находящаяся в 1NF, может бытьприведена к набору из переменных отношений, находящихся в 2NFВ результате декомпозиции мы получаем набор проекций исходнойпеременной отношения, естественное соединение любых значенийкоторых воспроизводит допустимое значение исходной переменнойотношениявсе неключевые атрибуты отношений минимально зависят отпервичных ключей СЛУ_НОМ и {СЛУ_НОМ, ПРО_НОМ} соответственнот. е.
это декомпозиция без потерьДля переменных отношений СЛУЖ и СЛУЖ_ПРО_ЗАДАН исходноеотношение СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ воспроизводится ихестественным соединением по общему атрибуту СЛУ_НОМ22.10.2009С.Д. Кузнецов. Базы данных.56 Проектирование РБДМинимальные FD и вторая нормальная форма (10)Вторая нормальная форма (3)Заметим, что допустимое значение переменной отношенияСЛУЖ может содержать кортежи, информационноенаполнение которых выходит за пределы допустимыхзначений переменной отношенияСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯНапример, в теле отношения СЛУЖ может находитьсякортеж с данными о служащем с номером 4438, который ещене участвует ни в одном проектеНаличие такого кортежа не влияет на результатестественного соединения, тело которого все равно будетсовпадать с телом допустимого значения переменнойотношения СЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ22.10.2009С.Д.
Кузнецов. Базы данных.57 Проектирование РБДНетранзитивные FD и 3NF (1)В произведенной декомпозиции переменной отношенияСЛУЖАЩИЕ_ПРОЕКТЫ_ЗАДАНИЯ множество FDпеременной отношения СЛУЖ_ПРО_ЗАДАН предельнопросто – детерминантом единственной нетривиальнойфункциональной зависимости является возможный ключПри использовании этой переменной отношения какие-либоаномалии обновления не возникаютОднако переменная отношения СЛУЖ не является такой жесовершенной22.10.2009С.Д. Кузнецов. Базы данных.58 Проектирование РБДНетранзитивные FD и 3NF (2)Аномалии обновления из-за наличия транзитивных FD (1)Функциональные зависимости переменной отношения СЛУЖпо-прежнему порождают некоторые аномалии обновленияОни вызываются наличием транзитивной FD СЛУ_НОМ →СЛУ_ЗАРП через FD СЛУ_НОМ → СЛУ_УРОВ и СЛУ_УРОВ →СЛУ_ЗАРПЭти аномалии связаны с избыточностью хранения значенияатрибута СЛУ_ЗАРП в каждом кортеже, характеризующемслужащих с одним и тем же разрядом22.10.2009С.Д.
Кузнецов. Базы данных.59 Проектирование РБДНетранзитивные FD и 3NF (3)Аномалии обновления из-за наличия транзитивных FD (2)Добавление кортежей Невозможно сохранить данные о новом разряде (исоответствующем ему размере зарплаты), пока не появитсяслужащий с новым разрядомАтрибут СЛУ_НОМ, входящий в состав первичного ключа, неможет содержать неопределенные значенияУдаление кортежей При увольнении последнего служащего с данным разрядомбудет утрачена информация о наличии такого разряда исоответствующем размере зарплатыМодификация кортежей При изменении размера зарплаты, соответствующейнекоторому разряду, придется изменить значение атрибутаСЛУ_ЗАРП в кортежах всех служащих, которым назначенэтот разрядиначе не будет выполняться FD СЛУ_УРОВ → СЛУ_ЗАРП22.10.2009С.Д.
Кузнецов. Базы данных.60 Проектирование РБДНетранзитивные FD и 3NF (4)Возможная декомпозиция (1) По теореме Хита, это снова декомпозициябез потерь по причине наличия, например,FD СЛУ_НОМ → СЛУ_УРОВ Мы избавились от трудностей привыполнении операций обновления22.10.2009С.Д. Кузнецов. Базы данных.61 Проектирование РБДНетранзитивные FD и 3NF (5)Возможная декомпозиция (2)Добавление кортежейУдаление кортежейЧтобы сохранить данные о новом разряде, достаточнодобавить соответствующий кортеж к отношению УРОВПри увольнении последнего служащего, обладающегоданным разрядом, удаляется соответствующий кортежиз отношения СЛУЖ1, но данные о разрядесохраняются в отношении УРОВМодификация кортежейПри изменении размера зарплаты, соответствующейнекоторому разряду, изменяется значение атрибутаСЛУ_ЗАРП ровно в одном кортеже отношения УРОВ22.10.2009С.Д.