- •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. Резюме
10.3. Тривиальные и нетривиальные зависимости
Замечание. Далее в этой главе выражение "функциональная зависимость" будет иногда для краткости заменяться словом "зависимость", а "функционально зависим от " — словами "функционально определяется как" и т.п.
Очевидным .способом сокращения существующего набора функциональных зависимостей является исключение из него тривиальных зависимостей. Зависимость называется тривиальной, если она не может не выполняться. В качестве примера приведем тривиальную функциональную зависимость, существующую в переменной-отношении SCP, которая обсуждалась в предыдущем разделе.
' Эта функциональная зависимость не является тривиальной (раздел 10.3), причем А не является суперключом (раздел 10.5), a R содержит по крайней мере два кортежа.
{ Si, Pi } -» si
Действительно, функциональная зависимость является тривиальной тогда и только тогда, когда правая часть ее символической записи является подмножеством (необязательно правильным подмножеством) левой части.
Как следует из определения, с практической точки зрения подобные зависимости не представляют никакого интереса — в отличие от нетривиальных зависимостей, которые действительно являются реальными ограничениями целостности. Однако в формальной теории зависимостей необходимо учитывать все зависимости, как тривиальные, так и нетривиальные.
10.4. Замыкание множества зависимостей
Как упоминалось выше, одни функциональные зависимости могут подразумевать другие функциональные зависимости. Например, рассмотрим приведенную ниже зависимость.
{ S#, Р# } -> { CITY, QTY }
Она подразумевает следующие функциональные зависимости.
{ S#, Pi } -» CITY { Si, Pi } -» QTY
В качестве более сложного примера можно привести переменную-отношение R с атрибутами А, В и С, для которых выполняются функциональные зависимости А —> В и В —> С. Нетрудно заметить, что в этом случае также выполняется функциональная зависимость А —> С, которая называется транзитивной функциональной зависимостью, т.е. С зависит от А транзитжно, через В.
Множество всех функциональных зависимостей, которые подразумеваются заданным множеством функциональных зависимостей S, называется замыканием множества S и обозначается символом S+. Из приведенного определения следует, что для решения сформулированной задачи необходимо найти способ вычисления S+ на основе S. Первая попытка решить эту проблему была предпринята в статье Армстронга (Armstrong) [10.1], в которой автор предложил набор правил вывода новых функциональных зависимостей на основе заданных (эти правила также называются аксиомами Армстронга). Правила вывода могут формулироваться разными способами, и самым простым из них является следующий. Пусть А, В и С — произвольные подмножества множества атрибутов заданной переменной-отношения R. Условимся также, что символическая запись АВ означает объединение множеств А и В. Тогда правила вывода определяются следующим образом.
Правило рефлексивности: если множество В является подмножеством множества А, то А -> В.
Правило дополнения: если А —> В, то АС —> ВС.
Правило транзитивности: если А —» В и В —> С, то А —> С.
Каждое из этих трех правил может быть непосредственно доказано на основе определения функциональной зависимости (первое из них — просто определение тривиальной зависимости). Более того, эти правила являются полными в том смысле, что
для заданного множества функциональных зависимостей S минимальный набор функциональных зависимостей, которые подразумевают все зависимости из множества S, может быть выведен из ФЗ множества S на основе этих правил. Они также являются исчерпывающими, поскольку никакие дополнительные функциональные зависимости (т.е. зависимости, которые не подразумеваются функциональными зависимостями множества S) с их помощью не могут быть выведены. Иначе говоря, эти правила могут использоваться для получения замыкания S+.
С целью упрощения задачи практического вычисления замыкания S+ из трех приведенных выше правил можно вывести несколько дополнительных правил. (Примем, что D — это другое произвольное подмножество множества атрибутов R.)
Правило самоопределения: А —» А.
Правило декомпозиции: если А —> ВС, то А —> В и А —» С.
Правило объединения: если А —» В и А —> С, то А —> ВС.
Правило композиции: если А —> В и С —» D, то АС —> BD.
Кроме того, Дарвен (Darwen) в своей работе [10.6] доказал следующее правило, которое называется общей теоремой объединения.
8. Если А -) В и С -4 D, тоА и (С - В) —> BD (здесь символ "и" обозначает опе- рацию объединения множеств, а символ "-" — операцию разности множеств).
Название "общая теорема объединения" указывает на то, что некоторые из перечисленных выше правил могут быть выведены как частные случаи этой теоремы [10.6].
Пример. Пусть дана некоторая переменная-отношение R с атрибутами А, В, С, D, Е, F и следующими функциональными зависимостями.
А -> ВС В -> Е CD -> EF
Обратите внимание, что способ записи несколько изменился (без ущерба для смысла); например, символы ВС означают множество, состоящее из атрибутов В и С, хотя ранее они означали объединение В и С, где В и С были множествами атрибутов.
Замечание. Если необходимо, то этому примеру можно придать более конкретный смысл, а именно: А— личный номер сотрудника, В— номер отдела, С— личный номер руководителя (начальника) данного сотрудника, D — номер проекта, возглавляемого данным руководителем (уникальный для каждого отдельно взятого руководителя), Е — название отдела, F — доля времени, уделяемая данным руководителем заданному проекту.
Теперь можно показать, что для переменной-отношения R также выполняется функциональная зависимость AD —» F, которая вследствие этого принадлежит к замыканию заданного множества функциональных зависимостей.
А -> ВС (дано)
А -4 С (следует из п. 1 согласно правилу декомпозиции)
AD —» CD (следует из п. 2 согласно правилу дополнения)
CD ~> EF (дано)
AD —> EF (следует из пп, 3 и 4 согласно правилу транзитивности)
AD —> F (следует из п. 5 согласно правилу декомпозиции) |