- •7.7.6. Определить общее количество поставщиков
- •7.7.7. Определить в поставках максимальное
- •7.7.8. Для каждой поставляемой детали указать номер и общий объем поставки в штуках
- •7.7.9. Указать номера всех типов деталей, поставляемых более чем одним поставщиком
- •7.7.10. Определить имена поставщиков детали с номером т2'
- •7.7.11. Определить имена поставщиков по крайней мере одной красной детали
- •7.7.12. Указать номера поставщиков, статус которых меньше текущего максимального статуса
- •7.7.13. Указать имена поставщиков детали с номером 'р2'
- •7.7.14. Выбрать имена поставщиков, которые не поставляют деталь с номером 'р2'
- •7.7.15. Определить имена поставщиков всех типов деталей
- •7.7.16. Определить номера деталей, которые либо весят более 16 фунтов, либо поставляются поставщиком с номером 's2', либо и то, и другое
- •7.8. Резюме
- •8.2. Ограничения типа
- •8.3. Ограничения атрибута
- •8.4. Ограничения переменной-отношения
- •8.5. Ограничения баз данных
- •8.6. "Золотое правило"
- •8.7. Ограничения состояния и ограничения перехода
- •8.8. Ключи
- •3. Пусть r1 и r2 — ссылающаяся и ссылочная переменные-отношения соответственно.
- •8.9. Средства языка sql
- •8.10. Резюме
- •9.1. Введение
- •9.2. Для чего нужны представления
- •9.3. Выборка данных из представлений
- •9.4. Обновление данных в представлениях
- •9.5. Моментальные снимки
- •9.6. Поддержка представлений в языке sql
- •9.7. Резюме
- •Часть III
- •10.1. Введение
- •10.2. Основные определения
- •10.3. Тривиальные и нетривиальные зависимости
- •10.4. Замыкание множества зависимостей
- •10.5. Замыкание множества атрибутов
- •10.6. Неприводимые множества зависимостей
- •10.7. Резюме
- •Глава 1 1
- •I Переменные-отношения в знф I
- •11.2. Декомпозиция без потерь
- •11.3. Первая, вторая и третья нормальные формы
- •11.4. Сохранение зависимостей
- •11.5. Нормальная форма Бойса-Кодда
- •11.6. Замечание по поводу атрибутов, содержащих в качестве значений отношения
- •11.7. Резюме
- •12.1. Введение
- •12.2. Многозначные зависимости и четвертая нормальная форма
- •12.3. Зависимости соединения и пятая нормальная форма
- •Соединение по комбинации атрибутов j#,s#
- •Исходное состояние spj
- •12.4. Общая схема процедуры нормализации
- •12.5. Денормализация
- •12.6. Ортогональное проектирование (небольшое отступление от темы)
- •12.7. Другие нормальные формы
- •12.8. Резюме
- •12.3. Brosda V., Vossen g. Update and Retrieval Through a Universal Schema Interface // acm tods. — December, 1988. — 13, № 4.
- •12.5. Date c.J. Will the Real Fourth Normal Form Please Stand Up? // c. J. Date and Hugh Darwen. Relational Database Writings 1989-1991.— Reading, Mass.: Addison-Wesley, 1992.
- •12.20.Kent w. The Universal Relation Revisited // acm tods. — December, 1983. — 8, № 4.
- •12.22.Maier d., Ullman j.D. Fragments of Relations // Proc. 1983 sigmod Intern. Conf. On Management of Data. — San Jose, Calif. — May, 1983.
- •12.24.Maier d., Ullman j.D. Maximal Objects and the Semantics of Universal Relation Databases // acm tods. — March, 1983. — 8, № 1.
- •Глава 13
- •13.1. Введение
- •13.2. Общий подход
- •Каждыи экземпляр сущности ности «Произведение"
- •13.3. Модель "сущность/связь"
- •13.5. Проектирование базы данных с помощью метода er-моделирования
- •13.6. Краткий анализ er-модели
- •13.7. Резюме
12.1. Введение
В предыдущей главе были описаны основные идеи дальнейшей нормализации вплоть до нормальной формы Бойса-Кодда (НФБК) включительно (т.е. до формы, которой можно достичь, используя понятие функциональной зависимости). В этой главе обсуждение вопроса дальнейшей нормализации завершается рассмотрением четвертой и пятой нормальных форм (4НФ и 5НФ). Как будет показано ниже, для определения 4НФ необходимо ввести понятие многозначной зависимости (МЗЗ), которое является обобщением понятия функциональной зависимости. Аналогично для определения понятия 5НФ необходимо ввести новый тип зависимости, которая называется зависимостью соединения (ЗС). Она является обобщением понятия многозначной зависимости подобно тому, как многозначная зависимость является обобщением понятия функциональной зависимости. В разделе 12.2 будут рассмотрены понятия многозначной зависимости и 4НФ, в разделе 12.3 — понятия зависимости соединения и 5НФ; также будет разъяснено, почему 5НФ в некотором смысле можно считать окончательной нормальной формой. Сразу же следует отметить, что описания многозначной зависимости и зависимости соединения будут менее формальными и полными, чем описание функциональных зависимостей, данное в главе 10. Более подробную информацию заинтересованный читатель может найти в работах, представленных в списке рекомендуемой литературы в конце этой главы.
После описания основных понятий в разделе 12.4 дается обзор процедуры нормализации в целом с дополнительными комментариями. Затем в разделе 12.5 кратко обсуждается понятие ^нормализации. В разделе 12.6 описывается еще один важный принцип проектирования — ортогональное проектирование (orthogonal design). Наконец, в разделе 12.7 коротко обсуждаются некоторые возможные направления будущих исследований в области нормализации, а заключительный раздел 12.8 представляет собой краткое резюме всей главы.
12.2. Многозначные зависимости и четвертая нормальная форма
Пусть дана переменная-отношение НСТХ (где Н обозначает "иерархическая" (hierarchic)), содержащая информацию о курсах обучения, преподавателях и учебниках. В этой переменной-отношении атрибуты, описывающие преподавателей и учебники, принимают в качестве значений отношения (рис. 12.1). Каждый кортеж переменной-отношения НСТХ состоит из ат
рибутов названия курса (COURSE), а также атрибута-отношения с именами преподавателей (TEACHERS) и атрибута-отношения с названиями учебников (TEXTS) (на рис. 12.1 показаны два таких кортежа). Смысл каждого кортежа состоит в том, что соответствующий курс может преподаваться любым из указанных преподавателей с использованием всех указанных учебников. Предположим, что для заданного курса может быть определено произвольное количество соответствующих преподавателей и учебников. Более того, допустим, хотя это и не совсем реалистичное допущение, что преподаватели и рекомендуемые учебники совершенно независимы друг от друга. Это значит, что независимо от того, кто преподает данный курс, всегда используется один и тот же набор учебников. Наконец, допустим, что определенный преподаватель или определенный учебник может быть связан с любым количеством курсов.
НСТХ
COURSE
TEACHERS
TEXTS
Physics
TEACHER
TEXT
Prof. Green Prof. Brown
Basic Mechanics Principles of Optics
Math
TEACHER
TEXT
Prof. Green
Basic Mechanics Vector Analysis Trigonometry
Puc. 12.1. Пример значений данных в переменной-отношении НСТХ
Пусть необходимо (как в разделе 11.6 предыдущей главы) исключить атрибуты, принимающие в качестве значений отношения. Один из способов (но не тот, который описан в ответе к упр. 11.3; к нему мы вернемся в конце этого раздела) заключается в простой замене переменной-отношения НСТХ переменной-отношением СТХ с тремя скалярными атрибутами, COURSE, TEACHER и TEXT, как показано на рис. 12.2. Как видно из этого рисунка, каждый кортеж исходной переменной-отношения НСТХ порождает т * п кортежей в переменной-отношении СТХ, где т и п являются значениями кардинальности для отношений TEACHERS и TEXTS в данном кортеже переменной-отношения НСТХ. Обратите внимание, что все атрибуты результирующей переменной-отношения СТХ входят в состав ее ключа (в отличие от переменной-отношения НСТХ, потенциальный ключ которой {COURSE} состоял из единственного атрибута).
СТХ |
COURSE |
TEACHER |
TEXT |
|
Physics |
Prof. Green |
Basic Mechanics |
|
Physics |
Prof. Green |
Principles of Optics |
|
Physics |
Prof. Brown |
Basic Mechanics |
|
Physics |
Prof. Brown |
Principles of Optics |
|
Math |
Prof. Green |
Basic Mechanics |
|
Math |
Prof. Green |
Vector Analysis |
|
Math |
Prof. Green |
Trigonometry |
Puc. 12.2. Набор значений данных в переменной-отношении СТХ, эквивалентный приведенному выше примеру значений данных в переменной-отношении НСТХ
Данные, помещаемые в переменную-отношение СТХ, имеют следующий смысл: кортеж {C0URSE;c, TEACHER:t, ТЕХТ:х} появляется в переменной-отношении СТХ тогда и только тогда, когда курс с читается преподавателем t с использованием учебника х. Тогда, принимая во внимание, что для каждого курса указаны все возможные комбинации имени преподавателей и названий учебников, можно утверждать, что для переменной-отношения СТХ верно следующее ограничение.
ЕСЛИ кортежи (с,tl,xl) и{с,t2,х2) присутствуют одновременно,
ТО кортежи (с,tl,х2) и {с, t2, xl) также присутствуют одновременно.
(В данном случае для представления кортежей вновь использована сокращенная запись без указания имен атрибутов.)
Очевидно, что переменная-отношение СТХ характеризуется значительной избыточностью, вследствие чего возникнут аномалии обновления. Например, для добавления информации о том, что курс физики может читаться новым преподавателем, необходимо создать два новых кортежа, по одному для каждого используемого учебника. Как можно избежать появления таких проблем? Здесь нетрудно заметить две следующие особенности.
Рассматриваемые проблемы возникают в результате того, что преподаватели и учебники совершенно не зависят друг от друга.
Ситуацию можно существенно улучшить, если выполнить декомпозицию переменной-отношения СТХ на две проекции (например, с именами СТ и СХ) с атрибутами {COURSE, TEACHER} и {COURSE, TEXT} соответственно (рис. 12.3).
СТ СХ
COURSE |
TEACHER |
|
COURSE |
TEXT |
Physics |
Prof. Green |
|
Physics |
Basic Mechanics |
Physics |
Prof. Brown |
|
Physics |
Principles of Optics |
Math |
Prof. Green |
|
Math |
Basic Mechanics |
|
|
Math |
Vector Analysis | |
|
|
Math |
Trigonometry |
Рис. 12.3. Значения данных в проекциях СТ и СХ, которые соответствуют содержанию переменной-отношения СТХ, показанному на рис. 12.2
В этом случае для добавления новой информации о том, что курс физики будет читаться новым преподавателем, достаточно вставить единственный кортеж в переменную-отношение СТ. (Отметим также, что переменная-отношение СТХ может быть восстановлена за счет обратного соединения проекций СТ и СХ, и потому данная декомпозиция была выполнена без потерь.) Таким образом, вполне разумно было бы предположить, что для переменных-отношений, подобных СТХ, существует некий способ "дальнейшей нормализации".
Замечание. Здесь читатель может возразить, что избыточность данных в переменной-отношении СТХ вовсе не была необходимой по определению, а потому соответствующие ей аномалии обновления также совершенно необязательно были неизбежны. Точнее говоря, можно предположить, что для описания некоторого курса в переменную-отно
шение СТХ необязательно включать все возможные комбинации "преподаватель — учебник". Например, двух кортежей вполне достаточно, чтобы показать, что курс физики преподается двумя преподавателями с использованием двух учебников. Проблема заключается в том, какие именно два кортежа следует выбрать? Любой вариант выбора приводит к переменной-отношению с совершенно неочевидной интерпретацией и довольно странным характером обновления. (Попробуйте подобрать предикат для такой переменной-отношения, т.е. задать критерии приемлемости для данной переменной-отношения операции обновления того или иного типа.)
С неформальной точки зрения очевидно, что переменная-отношение СТХ спроектирована плохо и ее декомпозиция на проекции СТ и СХ является более удачным решением. Но проблема в данном случае заключается в том, что с формальной точки зрения это совсем неочевидно. Заметим, в частности, что переменная-отношение СТХ вообще не имеет функциональных зависимостей (за исключением таких тривиальных, как COURSE —> COURSE). Фактически переменная-отношение СТХ находится в НФБК, поскольку, как отмечалось ранее, все ее атрибуты входят в состав ее ключа, а любая подобная переменная-отношение обязательно находится в НФБК. (Обратите внимание на то, что и проекции СТ и СХ являются полностью ключевыми, а потому также находятся в НФБК.) Следовательно, изложенные в предыдущей главе идеи никак не могут помочь в разрешении этой проблемы.
Существование "проблем", которые связаны с переменными-отношениями в НФБК, подобными переменной-отношению СТХ, было замечено достаточно давно, и способы их разрешения также вскоре были определены, по крайней мере интуитивно. Однако только в 1971 году эти идеи были сформулированы Фейгином (Fagin) в строгом теоретическом виде с использованием понятия многозначной зависимости, или МЗЗ [12.13]. Многозначную зависимость можно считать обобщением понятия функциональной зависимости в том смысле, что каждая функциональная зависимость также является многозначной (однако обратное утверждение неверно, поскольку существуют многозначные зависимости, которые не являются функциональными). В переменной-отношении СТХ есть две многозначные зависимости.
COURSE TEACHER
COURSE TEXT
Обратите внимание на двойную стрелку, которая в многозначной зависимости А —>-» В означает, что В многозначно зависит от А или А многозначно определяет В. Первая из
этих зависимостей, COURSE TEACHER, означает, что, хотя для каждого курса не существует одного соответствующего только ему преподавателя, т.е. не выполняется функциональная зависимость COURSE —> TEACHER, каждый курс имеет вполне определенное множество соответствующих преподавателей (в общем случае их может быть несколько). Если говорить точнее, под понятием "вполне определенное множество" в нашем случае подразумевается, что для данного курса с и данного учебника х множество преподавателей t, соответствующее паре (с, х) переменной-отношения СТХ, зависит от значения с и совершенно не зависит от значения х. Вторая многозначная зависимость имеет аналогичную интерпретацию.
Исходя из изложенного, можно привести формальное определение многозначной зависимости.
■ Пусть А, В и С являются произвольными подмножествами множества атрибутов переменной-отношения R. Тогда подмножество В многозначно зависит от подмножества А, что символически выражается записью
А -™")"^ В
(читается как "А многозначно определяет В" или "А двойная стрелка В"), тогда и только тогда, когда множество значений В, соответствующее заданной паре (значение А, значение С) переменной-отношения R, зависит от А, но не зависит от С.
Нетрудно показать (это обсуждается в работе Фейгина [12.13]), что для данной переменной-отношения R{A, В, С} многозначная зависимость А —»-> В выполняется тогда и только тогда, когда также выполняется многозначная зависимость А С. Таким образом, многозначные зависимости всегда образуют связанные пары, поэтому обычно их представляют вместе в символическом виде.
А В | С
Для рассматриваемого примера такая запись будет иметь следующий вид. COURSE TEACHER | TEXT
Ранее уже утверждалось, что многозначные зависимости являются обобщениями функциональных зависимостей в том смысле, что всякая функциональная зависимость является многозначной. Точнее говоря, функциональная зависимость — это многозначная зависимость, в которой множество зависимых значений, соответствующее заданному значению детерминанта, всегда является одноэлементным множеством. Таким образом, если А —> В, то А —»■» В.
Теперь, возвращаясь к исходной задаче с переменной-отношением СТХ, можно отметить следующее: описанная ранее проблема с переменными-отношениями этого типа возникает из-за того, что они содержат многозначные зависимости, которые не являются функциональными. (Следует отметить совсем неочевидный факт, что именно наличие таких МЗЗ требует вставки двух кортежей, когда необходимо добавить сведения о новом преподавателе физики. Данные два кортежа необходимы для поддержания ограничения целостности, представленного этой МЗЗ.) Проекции СТ и СХ не содержат многозначных зависимостей, а потому они действительно представляют собой некоторое усовершенствование исходной структуры. Поэтому было бы желательно заменить исходную переменную-отношение СТХ двумя рассматриваемыми проекциями. Это действие будет правомочным в соответствии с теоремой Фейгина [12.13], которая приведена ниже.
■ Теорема Фейгина. Пусть А, В и С являются множествами атрибутов переменной-отношения R{A, В, С}. Переменная-отношение R будет равна соединению ее проекций {А, В} и {А, С} тогда и только тогда, когда для переменной-отношения R выполняется многозначная зависимость А —»-» В | С.
(Обратите внимание, что эта теорема является более строгой версией теоремы Хита, описанной в главе 11.) Теперь, следуя работе Фейгина [12.13], можно дать определение четвертой нормальной формы. (Эта нормальная форма получила такое название потому, что в момент ее появления НФБК все еще считалась третьей нормальной формой.)
■ Переменная-отношение R находится в четвертой нормальной форме (4НФ) тогда и только тогда, когда в случае существования таких подмножеств А и В атрибутов этой переменной-отношения R, для которых выполняется нетривиальная3многозначная зависимость А —>-» В, все атрибуты переменной-отношения R также функционально зависят от атрибута А.
Иначе говоря, в переменной-отношении R могут находиться только нетривиальные зависимости (функциональные или многозначные) вида К —> X (т.е. некоторый атрибут X функционально зависит от суперключа К). Это можно также сформулировать в следующей эквивалентной форме: переменная-отношение R находится в 4НФ, если она находится в НФБК и все многозначные зависимости в переменной-отношении R фактически представляют собой функциональные зависимости от ее ключей. Обратите внимание, что, исходя из этого определения, нахождение в 4НФ предполагает обязательное нахождение в НФБК.
Переменная-отношение СТХ не находится в 4НФ, поскольку содержит многозначную зависимость, которая не является функциональной, не говоря уже о том, что последняя должна быть еще и функциональной зависимостью от ключа. Однако обе ее проекции, СТ и СХ, находятся в 4НФ. Следовательно, 4НФ обеспечивает лучшую структуру данных по сравнению с НФБК, поскольку позволяет исключить некоторые нежелательные зависимости. Кроме того, в [12.13] Фейгин показал, что 4НФ всегда является достижимой, т.е. любая переменная-отношение может быть подвергнута декомпозиции без потерь в эквивалентный набор переменных-отношений в 4НФ. Однако, как показано в разделе 11.5 на примере переменной-отношения SJT, такая декомпозиция (или даже декомпозиция до НФБК) не всегда оказывается полезной и нужной.
Замечание. Следует отметить, что хотя идеи Риссанена, изложенные в посвященной независимым проекциям работе [11.6], сформулированы с использованием функциональных зависимостей, они также справедливы в отношении многозначных зависимостей. Напомним, что в соответствии с этими идеями переменную-отношение R{A, В, С}, удовлетворяющую функциональным зависимостям А —> В и В —» С, необходимо разбивать на проекции (А, В} и (В, С}, а не на проекции {А, В} и {А, С). Это утверждение также будет верно, если вместо функциональных зависимостей использовать многозначные зависимости А -»+ В и В —С.
В заключение вернемся, как было обещано, к вопросу об исключении атрибутов, принимающих в качестве значений отношения, или АО (атрибутов-отношений) для краткости. В частности, рассмотрим процедуру такого исключения, описанную в ответе к упр. 11.3 из предыдущей главы. Суть в том, что на практике для достижения 4НФ достаточно учитывать следующее: если мы имеем дело с переменной-отношением с двумя или более независимыми АО, то прежде всего следует разделить эти АО. Данное правило имеет не только интуитивно понятный смысл. Это именно то, что было сделано в ответе к упр. 11.3! Например, в случае переменной-отношения НСТХ прежде всего следует заменить исходную переменную-отношение двумя ее проекциями HCT{COURSE, TEACHERS} и HCX{COURSE, TEXTS}, где перемен
ные-отношения TEACHERS и TEXTS все еще сохраняют АО. Далее эти АО можно будет исключить из двух полученных проекций (с приведением их к НФБК) обычным способом, и тогда "проблема", свойственная находящейся в НФБК переменной-отношению СТХ, просто никогда не возникнет. Как видите, понятия многозначных зависимостей и 4НФ предоставляют формальное обоснование тех правил, которые в противном случае остались бы чисто эмпирическими.