- •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.6. Неприводимые множества зависимостей
Пусть S1 и S2 — два множества функциональных зависимостей. Если любая функциональная зависимость, которая выводится из множества зависимостей S1, также выводится из множества зависимостей S2 (т.е. если замыкание Sl+ является подмножеством замыкания S2+, то множество S2 называется покрытием для множества S13. Это значит, что если СУБД обеспечит соблюдение ограничений, представленных зависимостями множества S2, то автоматически будут соблюдены и все ограничения, устанавливаемые зависимостями множества S1.
Далее, если множество S2 является покрытием для множества S1, а множество S1 одновременно является покрытием для множества S2 (т.е. если sr=S2+), то множества S1 и S2 эквивалентны. Ясно, что если множества S1 и S2 эквивалентны, то соблюдение СУБД ограничений, представленных зависимостями множества S2, автоматически обеспечит соблюдение ограничений, представленных зависимостями множества S1, и наоборот.
Множество функциональных зависимостей называется неприводимым4 тогда и только тогда, когда оно обладает всеми перечисленными ниже свойствами.
Правая (зависимая) часть каждой функциональной зависимости из множества S содержит только один атрибут (т.е. является одноэлементным множеством).
Левая часть (детерминант) каждой функциональной зависимости из множества S является неприводимой, т.е. ни один атрибут из детерминанта не может быть опущен без изменения замыкания S+ (без конвертирования множества S в некоторое иное множество, не эквивалентное множеству S). В этом случае функциональная зависимость называется неприводимой слева.
Ни одна функциональная зависимость из множества S не может быть удалена из множества S без изменения его замыкания S+ (т.е. без конвертирования множества S в некоторое иное множество, не эквивалентное множеству S).
В отношении пп. 2 и 3 следует отметить, что необязательно иметь точную информацию о составе замыкания S+ для получения ответа на вопрос, изменится ли это замыкание при удалении из исходного множества какой-либо функциональной зависимости. В качестве примера рассмотрим уже знакомую переменную-отношение деталей Р с функциональными зависимостями, перечисленными ниже.
PI -» PNAME PI -> COLOR Pi -> WEIGHT Pi -» CITY
J
Некоторые
авторы используют термин "покрытие"
для обозначения эквивалентного
множества.
^
В литературе подобное множество часто
называется минимальным.
циональных зависимостей не может быть опущена без изменения замыкания множества (т.е. без утраты некоторой информации), В противоположность этому приведенные ниже множества функциональных зависимостей не являются неприводимыми.
1. PI -> { PNAME, COLOR } Р# -» WEIGHT
Р# -> CITY
(Правая часть первой ФЗ не является одноэлементным множеством.)
2. ( PI, PNAME ) -» COLOR Pi -> PNAME
Pi -» WEIGHT Pi -> CITY
(Первую ФЗ можно упростить, опустив атрибут PNAME в левой части без изменения замыкания, т.е. она не является неприводимой слева.)
3. Pi -» Pi
Pi -> PNAME Pi -» COLOR Pi -> WEIGHT
Pi —> С1ТУ(Здесь первую ФЗ можно опустить без изменения замыкания.)
Теперь можно сделать утверждение, что для любого множества функциональных зависимостей существует по крайней мере одно эквивалентное множество, которое является неприводимым. Это достаточно легко продемонстрировать на следующем примере. Пусть дано исходное множество зависимостей S. Тогда благодаря правилу декомпозиции можно без утраты общности предположить, что каждая функциональная зависимость в этом множестве S имеет одноэлементную правую часть. Далее для каждой зависимости f из этого множества S следует проверить каждый атрибут А в левой части зависимости f. Если множество S и множество зависимостей, полученное в результате устранения атрибута А в левой части зависимости f, эквивалентны, значит, этот атрибут следует удалить. Затем для каждой оставшейся в множестве S зависимости £, если множества S и S - f эквивалентны, следует удалить зависимость f из множества S. Получившееся в результате таких действий множество S является неприводимым и эквивалентно исходному множеству S.
Пример. Пусть дана переменная-отношение R с атрибутами А, В, С, D и следующими функциональными зависимостями.
А -> ВС В -4 С А —» В АВ —> С АС —> D
Теперь попробуем найти неприводимое множество функциональных зависимостей, эквивалентное данному множеству.
1. Прежде всего следует переписать заданные ФЗ таким образом, чтобы каждая из них имела одноэлементную правую часть.
А —> В А -> С В -> С А —> В АВ -> С АС —» D
Нетрудно заметить, что зависимость А —» В записана дважды, так что одну из них можно удалить.
Затем в левой части зависимости АС —> D может быть опущен атрибут С, поскольку дана зависимость А —» С, из которой по правилу дополнения можно получить зависимость А —> АС. Кроме того, дана зависимость АС —> D, из которой по правилу транзитивности можно получить зависимость А —> D. Таким образом, атрибут С в левой части исходной зависимости АС —> D является избыточным.
Далее можно заметить, что зависимость АВ —> С может быть исключена, поскольку дана зависимость А —> С, из которой по правилу дополнения можно получить зависимость АВ —> СВ, а затем по правилу декомпозиции — зависимость АВ —» С.
Наконец зависимость А —» С подразумевается зависимостями А —» В и В —> С, так что она также может быть отброшена. В результате мы получили неприводимое множество зависимостей.
А -» В В с А —> D
Множество функциональных зависимостей I, которое неприводимо и эквивалентно другому множеству функциональных зависимостей S, называется неприводимым покрытием множества S. Таким образом, с тем же успехом в системе вместо исходного множества функциональных зависимостей S может использоваться его неприводимое покрытие I (здесь следует повторить, что для вычисления неприводимого эквивалентного покрытия I необязательно вычислять замыкание S+). Однако необходимо отметить, что для заданного множества функциональных зависимостей не всегда существует уникальное неприводимое покрытие (см. упр. 10.12).