- •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.3. Зависимости соединения и пятая нормальная форма
До сих пор в настоящей главе и на протяжении всей предыдущей главы предполагалось, что единственной необходимой или допустимой операцией в процессе нормализации является замена переменной-отношения по правилам декомпозиции без потерь только двумя ее проекциями. Такое допущение нас вполне устраивало вплоть до достижения 4НФ. Однако, хотя это может показаться удивительным, существуют переменные-отношения, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции без потерь на три или более проекций. Подобные переменные-отношения обозначим не очень удачным, но достаточно удобным термином "n-декомпозируемая переменная-отношение" (для некоторого п > 2). Это значит, что для данной переменной-отношения возможна декомпозиция без потерь на п проекций, но не на m проекций для любого m < п. Таким образом, переменную-отношение, для которой можно выполнить декомпозицию на две проекции, следовало бы называть 2-декомпозируемой.
Замечание. Впервые возможность n-декомпозируемости для п > 2 была упомянута в работе Ахо (Aho), Бери (Beeri) и Ульмана (Ullman) [12.1], а частный случай для п = 3 был описан Николасом (Nicolas) [12.25].
В качестве примера рассмотрим переменную-отношение SPJ из базы данных поставщиков, деталей и проектов, представленную на рис. 12.4 (в целях упрощения изложения атрибут QTY исключен). Обратите внимание, что эта переменная-отношение состоит только из ключевых атрибутов, не содержит нетривиальных функциональных и многозначных зависимостей и потому находится в 4НФ. Заметим также, что на этом рисунке показаны следующие компоненты.
Три бинарные проекции, SP, Р J и JS, переменной-отношения SP J.
Результат соединения проекций SP и PJ по атрибуту Р#.
Соединение этого результата с проекцией JS по комбинации атрибутов (Jt, SI).
Обратите внимание, что в результате первого соединения получается копия исходной переменной-отношения SPJ с одним дополнительным (излишним) кортежем, а в результате второго соединения этот лишний кортеж исключается. Иначе говоря, исходная переменная-отношение SPJ является 3-декомпозируемой.
Замечание. Независимо от того, какая пара проекций будет выбрана для первого соединения, в итоге будет получен один результат, хотя промежуточные результаты будут в каждом случае разными. Упражнение. Читателю предлагается проверить это утверждение.
SPJ SP |
P# |
J# |
S1 |
P1 |
J2 |
S1 |
P2 |
Л |
S2 |
P1 |
Л |
S1 |
|
Л |
s# |
P# |
PJ |
P# |
J# |
от |
J# |
s# |
S1 |
PI |
|
P1 |
J2 |
|
J2 |
S1 |
S1 |
P2 |
|
P2 |
J1 |
|
J1 |
S1 |
S2 |
P1 |
|
P1 |
Л |
|
Л |
S2 |
SPJ
Излишний кортеж
Соединение по комбинации атрибутов j#,s#
1
Исходное состояние spj
Рис. 12.4. Переменная-отношение SPJ может быть получена только в результате соединения всех трех ее бинарных проекций, но не любых двух из них
Далее, представленный на рис. 12.4 пример, безусловно, выполнен в терминах отношений, а не переменных-отношений. Однако 3-декомпозируемость переменной-отношения SPJ может быть более фундаментальным и не зависящим от времени свойством (т.е. свойством, которое удовлетворяется для всех допустимых значений данной переменной-отношения), если данная переменная-отношение удовлетворяет определенному не зависящему от времени ограничению целостности. Для того чтобы понять, каким именно должно быть это ограничение, прежде всего заметим, что утверждение "переменная-отношение SPJ равна соединению трех своих проекций SP, PJ и JS" в точности эквивалентно следующему утверждению.
ЕСЛИ
И
И
ТО пара пара пара тройка
(si, pi)
(Pi, J1)
(jl, si) (si, pi, jl) присутствует в SP присутствует в PJ, присутствует в JS, присутствует в SPJ.
Это верно, поскольку очевидно, что тройка (si, pi, j 1) обязательно присутствует в соединении проекций SP, PJ и JS. (Обратное утверждение, т.е. если тройка (si, pi, jl) присутствует в переменной-отношении SPJ, то, например, пара (si, pi) присутствует в проекции SP, является истинным для любой переменной-отношения SPJ третьего порядка.) Так как пара (si, pi) присутствует в отношении SP тогда и только тогда, когда тройка (si, pi, J2) присутствует в отношении SPJ для некоторого значения J2 (аналогично для (pi, jl) и (jl, si)), приведенное выше утверждение можно переписать в виде ограничения, накладываемого на переменную-отношение SPJ.
ЕСЛИ кортежи (si, pi, j2j, (s2, pi, jl), (si, p2, jl) присутствуют в SPJ
TO кортеж (si, pi, jl) также присутствует в SPJ.
Если это утверждение выполняется всегда, т.е. для всех допустимых значений переменной-отношения SPJ, то будет получено не зависящее от времени (хотя и несколько странное) ограничение для данной переменной-отношения. Обратите внимание на циклическую структуру этого ограничения ("если значение si связано с pi и pi связано с jl, a jl связано опять с si, то si, pi и jl должны находиться в одном кортеже"). Переменная-отношение будет п-декомпозируемой для п>2 тогда и только тогда, когда она удовлетворяет некоторому циклическому ограничению.
Предположим теперь, что переменная-отношение SPJ действительно удовлетворяет этому не зависящему от времени ограничению (представленный на рис. 12.4 пример данных соответствует такой гипотезе). Далее ограничение 3-декомпозируемости для краткости будем называть ЗД-ограничением. Что означает ЗД-ограничение с практической точки зрения? Для получения ответа на этот вопрос рассмотрим пример, в котором под такими ограничениями подразумевается, что если в реальном мире для переменной-отношения SPJ верны утверждения
а) Смит поставляет гаечные ключи,
б) Гаечные ключи используются в Манхэттенском проекте,
в) Смит является поставщиком для Манхэттенского проекта, то
г) Смит поставляет гаечные ключи для Манхэттенского проекта.
Обратите внимание, что (как уже упоминалось в главе 1, раздел 1.3) из взятых в совокупности утверждений а, б и в обычно не следует утверждение г. Действительно, точно такой же пример был рассмотрен в главе 1 для демонстрации "ловушки соединения". Однако в данном частном случае следует отметить, что никакой ловушки здесь нет, поскольку существует дополнительное ЗД-ограничение, имеющее место в реальном мире, благодаря чему вывод утверждения г на основе утверждений а, б к в является вполне правомочным.
Возвращаясь к главной теме нашего обсуждения, отметим, что, поскольку ЗД-ограничение удовлетворяется тогда и только тогда, когда переменная-отношение равносильна соединению некоторых ее проекций, такое ограничение называется зависимостью соединения (ЗС). Зависимость соединения является таким же ограничением для данной переменной-отношения, как многозначная и функциональная зависимости. Ниже дается определение этого понятия.
■ Пусть R является переменной-отношением, а А, В, ..., Z — произвольными подмножествами множества ее атрибутов. Переменная-отношение R удовлетворяет зависимости соединения
*{А, В, ... , Z} (читается "звездочка А, В, Z")
тогда и только тогда, когда любое допустимое значение переменной-отношения R эквивалентно соединению ее проекций по подмножествам атрибутов А, В,Z.
Например, если использовать сокращенную символьную запись SP для подмножества {St, Pi} множества атрибутов переменной-отношения SPJ и аналогично использовать сокращения PJ и JS для двух других подмножеств, то переменная-отношение SPJ будет удовлетворять зависимости соединения *{SP, PJ, JS}.
Отсюда ясно, что переменная-отношение SPJ с зависимостью соединения *{SP, PJ, JS} может быть 3-декомпозируемой. Однако вопрос состоит в том, следует ли выполнять такую декомпозицию? По всей видимости, следует, так как в связи с наличием зависимости соединения переменная-отношение SPJ характеризуется многочисленными аномалиями обновления, которые можно устранить лишь с помощью 3-декомпозиции. Некоторые примеры подобных аномалий приведены на рис. 12.5. Ответить на вопрос, что произойдет после выполнения 3-декомпозиции, читателям предлагается самостоятельно в качестве упражнения.
SPJ
SPJ |
s# |
р# |
J# |
|
S1 |
Р1 |
J2 |
|
S1 |
Р2 |
Л |
Если вставляется кортеж (S2,P1,J1), то также должен быть вставлен кортеж (S1,P1,J1)
Обратное утверждение не является истинным
Если удаляется кортеж (S1.P1.J1), то также должен быть удален еще один кортеж (но какой?)
Рис. 12.5. Примеры аномалий обновления в переменной-отношении SPJ
Теорема Фейгина (которая рассматривалась в разделе 12.2) утверждает, что переменная-отношение R{A, В, С} может быть декомпозирована без потерь на проекции с атрибутами {А, В} и {А, С} тогда и только тогда, когда для переменной-отношения R выполняются многозначные зависимости А —»-» В и А —^ С.
Теперь теорема Фейгина может быть сформулирована иначе.
■ Переменная-отношение R{A, В, С} удовлетворяет зависимости соединения *{АВ, АС} тогда и только тогда, когда она удовлетворяет многозначной зависимости А ->-» В I С.
Поскольку эту теорему можно использовать в качестве определения многозначной зависимости, то либо многозначная зависимость является частным случаем зависимости соединения, либо (что эквивалентно) зависимость соединения является обобщением понятия многозначной зависимости.
Формально получим следующее.
А В I С = *{ АВ, АС }
Замечание. Более того, из определения зависимости соединения сразу же следует, что из всех возможных форм это наиболее общая форма зависимости (конечно, имеется в виду, что термин "зависимость" употребляется в узком специальном смысле). Это значит, что для переменных-отношений, которые подвергаются декомпозиции на проекции и обратной композиции с соединением проекций, не существует более высокой степени зави
симости, по отношению к которой зависимость соединения является всего лишь частным случаем. (Однако если ввести другие операторы декомпозиции, то возможно появление других типов зависимости, которые будут кратко описаны в разделе 12.7.)
Возвратившись к рассматриваемому примеру, можно обнаружить следующую проблему: переменная-отношение SPJ содержит зависимость соединения, которая не является ни многозначной, ни функциональной. (Упражнение. Объясните, почему возникает эта проблема?) Можно также заметить, что можно (и, по всей вероятности, желательно) декомпозировать такую переменную-отношение на меньшие компоненты, а именно— на проекции, определяемые зависимостью соединения. Данный процесс декомпозиции может повторяться до тех пор, пока все результирующие переменные-отношения не будут находиться в пятой нормальной форме. Дадим определение этой нормальной формы.
■ Переменная-отношение R находится в пятой нормальной форме (5НФ), которую иногда иначе называют проекционно-соединительной нормальной формой
(ПСНФ), тогда и только тогда, когда каждая нетривиальная4 зависимость соединения в переменной-отношении R подразумевается ее потенциальными ключами.
Замечание. Понятие зависимости соединения, "подразумеваемой потенциальными ключами", разъясняется ниже.
Переменная-отношение SPJ не находится в 5НФ. Она удовлетворяет некоторой зависимости соединения, а именно — ЗД-ограничению, которое, конечно же, не подразумевается ее единственным потенциальным ключом (этот ключ является комбинацией всех ее атрибутов). Иначе говоря, переменная-отношение SPJ не находится в 5НФ, поскольку она может быть 3-декомпозирована и возможность такой декомпозиции не подразумевается тем фактом, что комбинация атрибутов {St, Pi, Ji} является ее потенциальным ключом. Наоборот, после 3-декомпозиции проекции SP, PJ и JS находятся в ЗНФ, поскольку в них вовсе нет нетривиальных зависимостей соединения.
Поскольку еще не было дано объяснение выражения "зависимость соединения, подразумеваемая потенциальными ключами", вероятно, пока не вполне очевиден тот факт, что любая переменная-отношение в 5НФ автоматически находится в 4НФ. Однако это так, поскольку многозначная зависимость является частным случаем зависимости соединения. Действительно, Фейгин в [12.14] показал, что любая многозначная зависимость, подразумеваемая потенциальным ключом, на самом деле должна быть функциональной зависимостью, в которой потенциальный ключ является детерминантом. В той же работе Фейгин показал, что любая переменная-отношение может быть подвергнута декомпозиции без потерь на эквивалентный набор переменных-отношений в 5НФ, т.е. 5НФ всегда достижима.
Теперь следует объяснить, что означает понятие "зависимость соединения, подразумеваемая потенциальными ключами". Для начала в качестве простого примера (который использовался в разделе 11.5 главы 11) рассмотрим переменную-отношение поставщиков S с потенциальными ключами Si и SNAME. Такая переменная-отношение удовлетворяет нескольким зависимостям соединения, в частности следующей зависимости.
*{ { Si, SNAME, STATUS }, { Si, CITY } }
Это значит, что переменная-отношение S равносильна соединению ее проекций с атрибутами {St, SNAME, STATUS} и {Sf, CITY}. Поэтому она может быть подвергнута декомпозиции без потерь на указанные проекции. (Заметьте, что ее не следует, а лишь можно подвергать подобной декомпозиции.) Существование данной зависимости соединения предполагается на основании того факта, что атрибут {St} является потенциальным ключом данной переменной-отношения (в действительности это следует из теоремы Хита [11.4]). Аналогично переменная-отношение S удовлетворяет еще одной зависимости соединения.
*{ { St, SNAME }, { St, STATUS }, { SNAME, CITY } }
Она следует из того, что оба атрибута, {Sf} и {SNAME}, являются потенциальными ключами.
Как следует из приведенного выше примера, заданная зависимость соединения *{А, В, Z} подразумевается потенциальными ключами тогда и только тогда, когда каждое подмножество атрибутов А, В, ..., Z фактически является суперключом для данной переменной-отношения. Таким образом, относительно заданной переменной-отношения R можно утверждать, что она находится в 5НФ, только при условии, что известны все ее потенциальные ключи и все зависимости соединения, существующие в ней. Однако в отличие от функциональных и многозначных зависимостей (для которых обычно существует вполне очевидное обоснование в реальном мире) обнаружить все зависимости соединения совсем непросто. Суть в том, что смысловое значение зависимостей соединения, которые не являются одновременно многозначными и функциональными, далеко не всегда очевидно. Следовательно, процедура определения того, что некоторая переменная-отношение все еще находится в 4НФ, а не в 5НФ, и, таким образом, существует возможность ее дальнейшей выгодной декомпозиции, все еще остается не вполне ясной. Однако, как следует из опыта, подобные переменные-отношения достаточно экзотичны и чрезвычайно редко встречаются на практике.
В заключение заметим, что, как следует из определения, 5НФ является окончательной нормальной формой по отношению к операциям проекции и соединения (что отражено в ее альтернативном названии — проекционно-соединительная нормальная форма). Таким образом, если переменная-отношение находится в 5НФ, то гарантируется, что она не содержит аномалий, которые могут быть исключены посредством ее разбиения на проекции5. Если переменная-отношение находится в ЗНФ, то единственными в ней являются те зависимости соединения, которые подразумеваются ее потенциальными ключами, и тогда единственными допустимыми декомпозициями будут декомпозиции, которые основаны на этих потенциальных ключах. (Каждая проекция в подобной декомпозиции будет состоять из одного или нескольких потенциальных ключей плюс нуль или более дополнительных атрибутов.) Например, переменная-отношение поставщиков S находится в ЗНФ. Как упоминалось выше, эта переменная-отношение может быть подвергнута дальнейшей декомпозиции без потерь, причем в нескольких вариантах, но каждая проекция в любом из этих вариантов по-прежнему будет содержать один из исходных потенциальных ключей. Следовательно, подобная декомпозиция не даст никаких дополнительных преимуществ.