Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОБД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
622.08 Кб
Скачать

Н омер служащего *

И МЯ СЛУЖАЩЕГО *

ЗАРПЛАТА

Н ОМЕР ПРОЕКТА

ДАТА ОКОНЧАНИЯ

Если В функционально зависит от А, то из вершины А проводится стрелка в вершину В.

Пример 3:

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

Деятельность программиста

Номер *

программиста

Номер *

программы

Имя *

программиста

Имя *

программы

Количество рабочих часов

Атрибут КОЛИЧЕСТВО РАБОЧИХ ЧАСОВ функционально зависит от составного ключа (НОМЕР ПРОГРАММИСТА, НОМЕР ПРОГРАМЫ) или от одного из следующих возможных ключей: (НОМЕР ПРОГРАММИСТА, ИМЯ ПРОГРАММЫ), (ИМЯ ПРОГРАММИСТА, НОМЕР ПРОГРАММЫ) или (ИМЯ ПРОГРАММИСТА, ИМЯ ПРОГРАММЫ). Предполагается, что среди программистов нет однофамильцев и что две программы не могут иметь одинаковых имен. Функциональные зависимости этого отношения:

Н ОМЕР ПРОГРАММИСТА *

Н ОМЕР ПРОГРАММЫ *

И МЯ ПРОГРАММИСТА *

И МЯ ПРОГРАММЫ *

КОЛИЧЕСТВО РАБОЧИХ ЧАСОВ

Нетрудно убедится, что в нормализованном отношении все не ключевые атрибуты функционально зависят от ключа отношения.

Полная функциональная зависимость

Атрибут (или набор атрибутов) В из отношения R называется полностью зависимым от другого набора атрибутов А отношения R, если В функционально зависит от всего множества А, но не зависит от ни от какого подмножества А.

И, другими словами: неключевой атрибут функционально полно зависит от составного ключа, если он функционально зависит от ключа, но не находится в функциональной зависимости ни от какой отдельной части составного ключа.

Рассмотрим пример 1 отношение R2.

Атрибуты ФИО, ОКЛАД, КОМНАТА, ТЕЛЕФОН не находятся в полной функциональной зависимости от ключа отношения, поскольку они функционально зависят от части ключа – ТАБЕЛЬНОГО НОМЕРА. Имеет место дублирование информации, поскольку у сотрудника может быть много детей и для каждого из них будут храниться сведения об окладе родителя, в какой комнате он работает и телефоне.

При изменении оклада, комнаты и телефона понадобится корректировать не одну, а несколько записей. Также проблема возникает с сотрудниками, у которых нет детей и база данных не может содержать сведения о таких сотрудниках.

Рассмотрим пример 3.

Атрибут КОЛИЧЕСТВО РАБОЧИХ ЧАСОВ является полностью зависимым от составного ключа (НОМЕР ПРОГРАММИСТА, НОМЕР ПРОГРАММЫ), т.к. он задает количество рабочего времени, затраченного данным программистом на конкретную программу. При этом ни один из атрибутов НОМЕР ПРОГРАММИСТА или НОМЕР ПРОГРАММЫ в отдельности не определяет значение атрибута КОЛИЧЕСТВО РАБОЧИХ ЧАСОВ (единственного в данном случае атрибута, который полностью зависит от составного ключа). Атрибут ИМЯ ПРОГРАММИСТА полностью зависит от одного атрибута НОМЕР ПРОГРАММИСТА; атрибут ИМЯ ПРОГРАММЫ полностью зависит от атрибута НОМЕР ПРОГРАММЫ.

Мы подошли к определению второй нормальной формы: отношение R задано во второй нормальной форме, если оно является отношением в первой нормальной форме, и каждый атрибут, не являющийся основным атрибутом в этом отношении, полностью зависит от любого возможного ключа этого отношения R.

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

Рассмотрим пример 1 отношение R2. Это отношение находится в первой нормальной форме, но не находится во второй .

Чтобы отношение привести ко второй нормальной форме, необходимо:

  1. построить его проекцию, исключив атрибуты, которые не находятся в полной функциональной зависимости от составного ключа;

  2. построить дополнительно одну или несколько проекций на часть составного ключа и атрибуты, функционально зависящие от этой части ключа.

Отношение R2 преобразуем в два отношения R3 и R4, каждое из которых находится во второй нормальной форме.

R3

Табельный номер

Имя ребенка

Возраст

211

Саша

10

211

Женя

7

211

Вася

3

358

Вова

5

360

Женя

8

360

Вова

6

R4

Табельный номер

ФИО

Оклад

комната

Телефон

211

Иванов Л.А.

150

12

358

Темкин М.т.

170

12

360

Кошкин в.к.

240

5

Рассмотрим пример 2. Если все возможные ключи отношения содержат по одному атрибуту, то это отношение задано во второй нормальной форме, т.к. в этом случае все атрибуты, не являющиеся основными, полностью зависят от возможных ключей.

Если ключи состоят более чем из одного атрибута, отношение, заданное в первой нормальной форме, может не быть отношением во второй нормальной форме.

Рассмотрим пример 3. Отношение в этом примере задано во второй нормальной форме, потому что атрибут КОЛИЧЕСТВО РАБОЧИХ ЧАСОВ – единственный атрибут, не являющийся основным, полностью зависит от каждого возможного ключа.

Следующее отношение не является отношением во второй нормальной форме:

Источник снабжения

Номер поставщика

Номер партии товара

Имя поставщика

Сведения о поставщике

Цена

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

Функциональные зависимости:

Н ОМЕР ПОСТАВЩИКА *

Н ОМЕР ПАРТИИ ТОВАРА *

ИМЯ ПОСТАВЩИКА

СВЕДЕНИЯ О ПОСТАВЩИКЕ

ЦЕНА

Атрибуты ИМЯ ПОСТАВЩИКА и СВЕДЕНИЯ О ПОСТАВЩИКЕ, не будучи основными, функционально зависят от атрибута НОМЕР ПОСТАВЩИКА, который является подмножеством составного ключа.

Нарушение условий второй нормальной формы приводит к ряду неудобств:

  1. графа СВЕДЕНИЯ О ПОСТАВЩИКЕ не может быть заполнена до фактической поставки конкретной партии данным поставщиком, либо необходимо задать какой-нибудь фиктивный номер партии;

  2. если поставщик временно задержал поставку некоторой партии, то удаление записи, соответствующей данному значению атрибута НОМЕР ПОСТАВЩИКА, вызовет удаление сведений о нем. Как правило, такие сведения желательно сохранять.

  3. если требуется изменить значение атрибута СВЕДЕНИЯ О ПОСТАВЩИКЕ, то придется внести одни и те же изменения сразу в несколько записей, число таких записей может меняться во времени.

Подобные трудности можно устранить, расщепив исходное отношение на два отношения, заданные во второй нормальной форме.

Н ОМЕР ПОСТАВЩИКА *

ИМЯ ПОСТАВЩИКА

СВЕДЕНИЯ О ПОСТАВЩИКЕ

Н ОМЕР ПОСТАВЩИКА *

Н ОМЕР ПАРТИИ ТОВАРА *

ЦЕНА

Только атрибут ЦЕНА полностью зависит от составного ключа, а все остальные атрибуты выделяются в отдельное отношение, имеющие отдельный ключ – НОМЕР ПОСТАВЩИКА.

В общем случае каждый атрибут должен полностью зависеть от всего ключа; в противном случае его следует выделить в отдельное отношение.

1.4.3. Третья нормальная форма

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

Транзитивная зависимость.

Пусть А,В и С – три атрибута или три набора атрибутов отношения R. Если С зависит от В, а В - от А, то С зависит от А. Если при этом обратное соответствие неоднозначно (т.е. А не зависит от В или В не зависит от С), то говорят, что С транзитивно зависит от А.

На диаграмме транзитивную зависимость С от А изображают следующим образом:

А

В

С

Преобразование в третью нормальную форму состоит в расщеплении исходного отношения на два:

А В

В С

Рассмотрим пример 1 отношение R4. В нем можно увидеть пример транзитивной зависимости:

табельный номер –> комната -> телефон.

Хранение в отношении атрибутов, находящихся в транзитивной зависимости от ключа, порождает ряд неудобств. Рассмотрим их на примере атрибута ТЕЛЕФОН в отношении R4.

Номер телефона есть характеристика комнаты, поэтому сведения о телефоне будут многократно дублироваться для всех сотрудников, рабочие места которых расположены в одной комнате. Кроме прочего, изменение номера телефона потребует корректировки большого числа записей.

Сложности возникают, когда в комнате, например, временно нет рабочих мест или когда единственный обитатель комнаты переселился в другую. Отношение R4 позволяет содержать информацию о комнате и установленном в ней телефоне только тогда, когда за комнатой закреплено рабочее место хотя бы одно сотрудника.

Рассмотрим пример 2. Атрибут ДАТА ОКОНЧАНИЯ зависит от атрибута НОМЕР ПРОЕКТА, который, в свою очередь, зависит от атрибута НОМЕР СЛУЖАЩЕГО. Таким образом, ДАТА ОКОНЧАНИЯ транзитивно зависит от атрибута НОМЕР СЛУЖАЩЕГО.

Отношение имеет следующие недостатки:

  1. до момента привлечения конкретного служащего к работе над данным проектом дату окончания некуда было бы записывать. Можно, конечно, записать ее где-нибудь вместе с другой информацией о проектах, но это неоправданно увеличит избыточность информации в базе.

  2. Если вдруг все служащие прекратили работу над данным проектом, и проект был бы приостановлен до привлечения новых служащих, в БД были бы уничтожены все записи, содержащие дату окончания проекта. Такая ситуация кажется маловероятной, но для некоторых файлов подобный процесс вполне реален.

  3. Изменение даты окончания проекта приводит к необходимости внесения изменений в несколько записей; число таких записей может меняться во времени, как и в случае второй нормальной формы.

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

Пример 1. Отношение R4 в результате преобразований должно быть приведено к двум отношениям R5 и R6.

R5

Табельный номер

ФИО

Оклад

Комната

211

Иванов Л.А.

150

12

358

Темкин М.Т.

170

12

360

Кошкин В.К.

240

5

R6

Комната

телефон

12

616

5

306

Как видим, в процессе приведения отношений ко второй и третьей нормальным формам число отношений в модели БД увеличивается. Однако всегда сохраняется возможность получить исходное отношение посредством выполнения операций соединения.

Пример 2. Это отношение можно привести к третьей нормальной форме путем расщепления:

Н ОМЕР СЛУЖАЩЕГО *

И МЯ СЛУЖАЩЕГО *

ЗАРПЛАТА

НОМЕР ПРОЕКТА

Н ОМЕР ПРОЕКТА *

ДАТА ОКОНЧАНИЯ

Пара отношений предпочтительнее первоначального отношения, потому что информация об окончании проекта может потребоваться независимо от информации о служащем, а атрибут ДАТА ОКОНЧАНИЯ относится скорее к проекту, чем к служащему.

Пара отношений в третьей нормальной форме не содержит транзитивных и неполных зависимостей.