Введение в системы БД (542480), страница 115
Текст из файла (страница 115)
Рассмотрим процесс обработки заказов, который должен выполняться программой учета заказов, Предположим, что в поступившем заказе указан номер клиента, адрес доставки и характеристики заказанной детали (номер детали и ее количество). ВЕТВ1ЕЧЕ СПЯТ ЯНЕКЕ СПБТ$ = Тпрц1.СПБТя <проверка остатка на счету, установленного размера хредита и т.д.> ВЕТВ1ЕУЕ ЯН1РТО МНЕВЕ АППВЕББ = Торий.АППВЕЯЯ 1 АМП СПЯТ( = 1прп~.СПЯТЯ Глава 11.
Дальнейшая нормализация: формы 1НФ, 2НФ, 3НФ и НФБК 4б5 /* проверка адреса доставки */ ; 1У <все в порядке>, ТНЕМ <продолжить обработку заказов> ; ЕМР 1Г; Если 99'Уо клиентов имеют только один адрес доставки, было бы весьма неэффективно помещать адрес в какую-либо другую переменную-отношение, кроме СПЯТ (если рассматривать только эти 99%, то АРРНЕЯБ функционально зависит от СПЯТ().
Исправить ситуацию можно следуюшим образом. Для каждого клиента укажем один адрес доставки в качестве первичного адреса, который для 99'lч клиентов будет единственным. Любые другие адреса будут рассматриваться как вгпоричныв. Тогда переменную-отношение СПЯТ можно переопределить следующим образом, СПЯТ ( СПЯТ(, АРРНЕЯЯ, ВАР, СНЕРР1М, Р1ЯСОПМТ ) КЕУ ( СПБТя ) А переменную-отношение БН1РТО можно заменить такой переменной-отношением. БЕСОМР ( АРРНЕЯЯ, СПБТя ) КЕТ ( АРРНЕЯЯ ) Здесь переменная-отношение СПЯТ содержит первичные адреса, а переменная- отношение ЯЕСОМР— вторичные адреса (и соответствующие номера клиентов). Обе переменные-отношения находятся в НФБК.
Программа обработки заказов в этом случае будет выглядеть следуюшим образом. НЕТН1ЕЧЕ СПЯТ ННЕНЕ СПЯТ$ = 1прц1.СПЯТ$ 1 <проверка остатка иа счету, установленного размера кредита и т.д.> ; 1У СПЯТ.АРРНЕЯЯ а Марис.АРРНЕЯЯ ТНЕМ НЕТН1ЕЧЕ ЯЕСОЮ ННЕНЕ АРРНЕЯБ = ТлриС.АРРНЕЯБ АЮ СПЯТ( = 1лрпС.СПЯТ( /* проверка адреса доставки '/ ; ЕМР 1У; 1Г <все в порядке>, ТНЕН <продолжить обработку заказов>; ЕЮ 1Е; Ниже перечислены некоторые преимущества такого подхода. ° Для 99ЯЕ клиентов обработка заказов становится проше и эффективнее.
° Если в поступающем заказе опушен адрес доставки, то по умолчанию будет использован первичный адрес. ° Предположим, что клиент имеет различные скидки лля разных адресов доставки. При первом подходе (показанном в виде ответа к предыдушему упражнению) атрибут Р1БСОПМТ должен быть помешен в переменную-отношение ЯН1РТО, что приводит к значительному усложнению обработки заказов.
Однако при усовершенствованном подходе первичная скидка (соответствуюшая первичному адресу) может быть представлена посредством введения атрибута Р1ЯСОПМТ в переменную-отношение СПЯТ, а вторичная скилка — путем введения атрибута Р1ЯСОПМТ в переменную-отношение ЯЕСОМР. При этом обе переменные-отношения все еще остаются в НФБК, а обработка заказов упрощается для 99ЕЕ клиентов.
466 Чисть 111. Проектирование базы данных В заключение следует отметить, что выделение исключительных случаев является, вероятно, хорошим методом использования лучших свойств обоих подходов, т.е. сочетания преимушеств НФБК с упрошением операций выборки данных, которые могут возникнуть при нарушении ограничений НФБК. 11.б. На рис. 11.22 показаны наиболее важные функциональные зависимости; возмож- ный набор переменных-отношений приведен ниже. Рис.
! !.22. Диаграчма функциональных зависичосмей для упр. ! !.б ЯСНЕВ ( Ь, Т, С, В, Р ) КЕХ ( Ь ) КЕХ ( Т, В, Р ) КЕХ ( С, В, Р ) ЯТВВХ ( Я, Ь ) КЕХ ( Я, Ь ) 11.7. Переменная-отношение МАВВН находится в 2НФ, но не в ЗНФ (и, следовательно, не в НФБК). Усовершенствованный вариант может иметь следующий вид. МЯ2 ( МАМЕ, ЯТНЕЕТ, 21Р ) КЕХ ( МАМЕ ) 2СЯ ( 21Р, С1ТХ, ЯТАТЕ ) КЕХ ( 21Р ) Обе переменные-отношения находятся в НФБК, однако следует принять во внимание перечисленные ниже замечания. ° Поскольку атрибуты ЯТНЕЕТ (улица), С1ТХ (город) и ЯТАТЕ (штат) почти всегда используются совместно (например, при создании списка рассылки), а почтовые индексы меняются не очень часто, приведенная выше декомпозиция вряд ли потребуется. (Иначе говоря, нормализацию следует выполнять по отношению к подходяигич для этого зависимостям, а не ко всем без исключения.) ° В частности, при извлечении полного адреса для заданного в атрибуте МАМЕ имени потребуется выполнить соединение (хотя явное выполнение этого соединения можно заменить определением переменной-отношения МАВВН как представления на базе переменных-отношений МЯ2 и 2СЯ).
Иначе говоря, нор- Глава 11. Дальнейшая нормализация: формы 1НФ, 2НФ, 3НФ и НФБК 467 мализация до уровня НФБК хороша для обновления, но плоха для извлечения данных, поскольку избыточность, которая имеет место при отсутствии полной нормализации, способна вызвать проблемы, связанные с обновлением, но может оказаться весьма полезной при извлечении данных'4.
Трудности вызываются лишь неконтролируемой избыточностью, тогда как контролируемая избыточность (т.е. избыточность, которая известна и контролируется СУБД) в некоторых ситуациях может быть вполне приемлемой. ° Функциональная зависимость ( ЯТЕЕЕТ, С1ТТ, ЯТаТЕ ) л 21Р явно не представлена в этом макете, а поддерживается отдельно: либо декларативно (если в СУБД поддерживается декларативный язык указания ограничений целостности, аналогичный языку, кратко описанному в главе 8), либо процедурно. На самом деле переменные-отношения ИБВ и ЕСЯ не являются независимыми в смысле определения Риссанена [11.6]. 44 С другой стороны, такая избыточности может значителлно усложнить некоторые варианты выборки данных бт е прелести к замедлению выполнения соответствующих запросов), что будет показано в разделе 12 5 в следующей главе.
468 Часть И1. Проектирование базы данньп Глава 12 Дальнейшая нормализация: более высокие нормальные формы 12.1. Введение В предыдущей главе были описаны основные идеи дальнейшей нормализации вплоть до нормальной формы Бойса-Кодла (НФБК) включительно (т.е. до формы, которой можно достичь, используя понятие функциональной зависимости).
В этой главе обсуждение вопроса дальнейшей нормализации завершается рассмотрением четвертой и пятой нормальных форм (4НФ и 5НФ). Как будет показано ниже, для определения 4НФ необходимо ввести понятие многозначной зависимости (МЗЗ), которое является обобщением понятия функциональной зависимости, Аналогично для определения понятия 5НФ необходимо ввести новый тип зависимости, которая называется зависимостью соединения (ЗС).
Она является обобщением понятия многозначной зависимости подобно тому, как многозначная зависимость является обобщением понятия функциональной зависимости. В разделе 12.2 будут рассмотрены понятия многозначной зависимости и 4НФ, в разделе 12.3 — понятия зависимости соединения и 5НФ; также будет разъяснено, почему 5НФ в некотором смысле можно считать окончамвпьной нормальной формой. Сразу же следует отметить, что описания многозначной зависимости и зависимости соединения будут менее формальными и полными, чем описание функциональных зависимостей, данное в главе !0.
Более подробную информацию заинтересованный читатель может найти в работах, представленных в списке рекомендуемой литературы в конце этой главы. После описания основных понятий в разделе 12,4 дается обзор процедуры нормализации в целом с дополнительными комментариями. Затем в разделе 12.5 кратко обсуждается понятие денормализации.
В разделе 12.б описывается еще один важный принцип проектирования— ортогональное проектирование (оп1юйопа1 без!Бп). Наконец, в разделе 12.7 коротко обсуждаются некоторые возможные направления будущих исследований в области нормализации, а заключительный раздел 12.8 представляет собой краткое резюме всей главы. 12.2. Многозначные зависимости и четвертая нормальная форма Пусть дана переменная-отношение НСТХ (где Н обозначает "иерархическая" (ЫегагсЫс)), содержащая информацию о лурсах обучения, преподавателях и учебниках. В этой переменной-отношении атрибуты, описывающие преподавателей и учебники, принимиот в качестве значений отношения (рис. 12.1). Каждый кортеж переменной-отношения НСТХ состоит из ат- Глава 12.
Дальнейшая нормализация: более высокие нормальные формы 469 рибугов названия курса (СООКЯЕ), а также атрибута-отношения с именами преподавателей (ТЕАСНЕКЯ) и атрибута-отношения с названиями учебников (ТЕХТЯ) (на рнс. !2.1 показаны два таких кортежа). Смысл каждого кортежа состоит в том, что соответствуюшнй курс может преподаваться любым из указанных преподавателей с использованием всех указанных учебников, Предположим, что для заданного курса может быть определено произвольное количество соответствуюших преподавателей и учебников.