- •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. Резюме
I Переменные-отношения в знф I
Переменные-отношения в НФБК
Переменные-отношения в 4НФ | ||
|
Переменные-отношения в5НФ |
|
| ||
|
Рис. 11.2. Уровни нормализации
В [10.4] также приводится описание процедуры нормализации, с помощью которой переменная-отношение в некоторой нормальной форме, например в 2НФ, может быть преобразована в несколько переменных-отношений в другой, более желательной нормальной форме, например в ЗНФ. (В исходном варианте эта процедура определена только до третьей формы, но, как будет показано в следующей главе, она может быть последовательно расширена вплоть до пятой нормальной формы.) Такую процедуру можно охарактеризовать как последовательное приведение данного набора переменных-отношений к некоторой более желательной форме. Следует отметить, что эта процеду
pa обратима, т.е. всегда можно использовать ее результат (например, множество переменных-отношений, находящихся в ЗНФ) для обратного преобразования (в исходную переменную-отношение, находящуюся в 2НФ). Возможность выполнения обратного преобразования является весьма важной характеристикой, поскольку это означает, что в процессе нормализации информация не утрачивается.
Возвращаясь к рассмотрению собственно нормальных форм, заметим, что, как будет показано в разделе 11.5, оригинальное определение Кодда для ЗНФ [10.4] приводит к некоторой неадекватности. Переработанное и более точное понятие, данное Бойсом (Воусе) и Коддом в [11.2], является более строгим в том смысле, что любая переменная-отношение в ЗНФ по новому определению является таковой и по старому определению, но не всякая переменная-отношение в ЗНФ по старому определению может являться таковой по новому определению. Для того чтобы эти определения можно было различать, переменную-отношение в ЗНФ по новому определению обычно называют нормальной формой Бойса-Кодда — НФБК.
Впоследствии Фейгином (Fagin) в [11.8] была определена новая, четвертая нормальная форма (4НФ), которая стала четвертой по счету, поскольку в момент ее создания нормальная форма Бойса-Кодда считалась третьей. Совсем недавно Фейгин в [11.9] дал определение еще одной нормальной формы, которую назвал проектив-но-соединительной нормальной формой (ПСНФ); ее еще называют пятой нормальной формой, или 5НФ. Как показано на рис. 11.2, некоторые переменные-отношения в НФБК также находятся в 4НФ и некоторые переменные-отношения в 4НФ также находятся в 5НФ.
Возникает вопрос, нельзя ли продлить эту операцию для получения шестой, седьмой нормальной форм и так до бесконечности. Пока мы еще не готовы дать подробный ответ на этот замечательный вопрос. Но мы вернемся к нему в главе 12. Пока следует заметить, что действительно существуют дополнительные нормальные формы, которые не показаны на рис. 11.2, однако 5НФ можно рассматривать как "окончательную" нормальную форму в некотором (и очень важном) смысле.
Структура этой главы
Назначение данной главы — предоставить описание концепции дальнейшей нормализации до уровня нормальной формы Бойса-Кодда включительно. Оставшиеся две формы будут рассмотрены в главе 12. В целом, материал будет излагаться по следующему плану. После несколько затянувшегося введения в разделе 11.2 описывается фундаментальная концепция декомпозиции без потерь и демонстрируется важное значение понятия функциональной зависимости (ФЗ) в этой концепции. (Действительно, понятие функциональной зависимости является основой выделения трех нормальных форм Кодда и нормальной формы Бойса-Кодда.) Далее, в разделе 11.3, подробно описываются три начальные нормальные формы и на примере некоторой переменной-отношения демонстрируется, как выполняется нормализация вплоть до достижения ЗНФ. В разделе 11.4 делается небольшое отступление с целью обсуждения вопроса альтернативных декомпозиций, т.е. проблемы выбора "наилучшей декомпозиции" для конкретной переменной-отношения, если, конечно, такой выбор возможен. В разделе 11.5 обсуждается НФБК, а в разделе 11.6 рассматриваются особенности работы с атрибутами, принимающими в качестве значений отношения. И наконец в разделе 11.7 приводится краткое резюме и дается несколько заключительных замечаний.
Важно отметить, что далее изложение ведется не столь строго, как раньше, и в рассуждениях автор, в основном, полагается на интуицию. Подобный подход может быть оправдан тем, что такие понятия, как "декомпозиция без потерь", "нормальная форма Бойса-Кодда" и другие, несмотря на их таинственные и загадочные названия, по сути весьма просты и общедоступны. Во многих работах, на которые имеются ссылки, этот материал излагается в более строгой форме.
Кроме того, следует сделать еще два предварительных замечания.
Как уже отмечалось, общая идея нормализации заключается в том, что при проектировании базы данных предполагается более целесообразным определять переменные-отношения в "окончательной" нормальной форме (т.е. в пятой). Однако эту рекомендацию не следует толковать, как обязательное правило, поскольку возможны (довольно часто) ситуации, когда принципами нормализации приходится пренебрегать (об этом упоминается в упр. 11.7). Действительно, здесь необходимо подчеркнуть, что проектирование базы данных может представлять собой чрезвычайно сложную задачу (по крайне мере, в "достаточно большой базе данных", поскольку макеты "малых" баз данных обычно очень просты). Нормализация значительно упрощает этот процесс, но не является панацеей. Хотя разработчику проекта базы данных рекомендуется знать основные принципы нормализации, это не значит, что проект обязательно должен быть создан на основе исключительно этих принципов. В главе 13 обсуждается несколько других аспектов проектирования базы данных, которые имеют весьма отдаленное отношение к нормализации как таковой или совсем не имеют к ней отношения.
Как упоминалось выше, процедура нормализации будет использована в качестве основы при описании различных нормальных форм. Однако это не значит, что на практике создание проекта базы данных будет выполняться с помощью этой процедуры. На самом деле, вероятнее всего, для этого будет использована описанная в главе 13 схема типа "сверху вниз". Идеи нормализации можно использовать на последующих этапах для проверки того, что полученный в результате проект не нарушает случайным образом каких-либо ее принципов. Как бы там ни было, процедура нормализации является удобным способом описания этих принципов. Для упрощения изложения в данной главе будет сделано полезное допущение о том, что проектирование выполняется с помощью процедуры нормализации.