- •Содержание
- •1. Основные понятия баз данных
- •1.1. Проектирование баз данных
- •1.2. Индексы и ключи в базах данных
- •2. Функциональные зависимости
- •2.1. Понятие функциональной зависимости
- •2.2. Метод синтеза
- •2.3. Аксиомы вывода
- •2.4. Применение аксиом вывода
- •2.5. Замыкание множества атрибутов относительно множества функциональных зависимостей
- •2.6. Эквивалентность двух систем функциональных зависимостей
- •2.7 Метод синтеза
- •2.8. Классы эквивалентности функциональных зависимостей с эквивалентными левыми частями
- •2.9. Составные функциональные зависимости и кольцевые покрытия
- •3. Нормализация баз данных
- •3.1. Декомпозиция таблицы на две таблицы без потери информации и с потерей информации
- •4. Иерархия в базах данных
- •4.1. Использование иерархии в базах данных
- •4.2. Инклюзивная и эксклюзивная иерархии
- •5. Сортировка и поиск записей в базах данных
- •5.1.Многофазная сортировка
- •7. Оптимизация запросов
- •7.1. Основные операции реляционной алгебры и их обозначения
- •8. Статистические данные, используемые для минимизации запросов
- •8.1. Анализ стоимости операций
- •8.2. Оценка размеров промежуточных отношений
- •8.2.1. Оценка размера результата операции объединения
- •8.2.2. Оценка размера результата операции пересечения
- •8.2.3. Оценка размера результата оператора проекции
- •8.2.4. Оценка размера результата оператора выбора
- •8.3. Выборка с условием равенства двух атрибутов
- •8.4. Выборка при условии неравенства двух атрибутов
- •8.5. Естественное соединение отношений с несколькими общими атрибутами
- •8.6. Соединение нескольких отношений
- •8.7. Оценка размеров результатов выполнения других операторов
- •8.7.1. Объединение
- •8.7.2. Пересечение
- •8.7.3. Разность
- •8.7.4. Удаление кортежей-дубликатов
- •8.7.5. Группирование и агрегирование
- •8.8. Свод формул для сравнительного расчета количества записей результата выполнения операций реляционной алгебры
- •8.9. Тождественные преобразования для операций реляционной алгебры
- •8.10. Алгебраические законы и планы запросов
- •8.10.1. Коммутативный и ассоциативный законы
- •8.11. Законы для "множественных" и "мультимножественных" версий операторов
- •8.11.1. Законы выбора
- •8.11.2. Некоторые тривиальные законы
- •8.11.3. Законы проекции
- •8.11.4. Законы соединения и декартова произведения
- •8.11.5. Законы, касающиеся удаления кортежей-дубликатов
- •8.11.6. Законы группирования и агрегирования
- •8.11.7. Закон деления
8.6. Соединение нескольких отношений
Рассмотрим, наконец, общий случай естественного соединения:
S = R1 R2 … Rn.
Предположим, что атрибут А присутствует в схемах k отношений R, и количества различных значений компонентов А в этих k отношениях — т.е. величины V(R1, A), где i=1,2,..., k, — равны v1 ≤v2≤ …≤vk в порядке от меньшего к большему. Допустим, что в каждом из к отношений выбрано по одному кортежу. Какова вероятность того, что все эти кортежи совпадают в атрибуте А?
Для получения ответа на вопрос рассмотрим кортеж t1, выбранный из отношения с наименьшим количеством v1 различных значений атрибута А. В соответствии с допущением о принадлежности одного множества значений совпадающего атрибута другому, каждое из v1 значений можно найти в компонентах А кортежей всех других k-1 отношений. Обратимся к отношению, содержащему vi различных значений атрибута А. Выбранный из этого отношения кортеж ti совпадает с кортежем t1 в атрибуте А с вероятностью 1 / v1. Поскольку подобное утверждение верно для всех
i=2,3,...,k, вероятность того, что все k кортежей совпадут в атрибуте А, равна 1 / (v2 v3 … vk).
Теперь мы можем сформулировать правило прогнозирования размера итогового отношения, возвращаемого оператором соединения с произвольным числом аргументов:
перемножить количества кортежей во всех отношениях-операндах Ri, и поделить полученное произведение на все величины V(Ri, А), кроме наименьшей, для каждого атрибута А, присутствующего, как минимум, в двух отношениях.
Аналогичным образом можно оценить количество различных значений атрибута А в отношении, полученном в результате соединения: согласно допущению о принадлежности одного множества значений совпадающего атрибута другому, эта величина равна минимальному из значений V(Ri, A).
Пример. Рассмотрим операцию соединения R(a, b, с) S(b, с, d) U(b, e) при условии, что отношения-операнды обладают статистическими характеристиками, приведенными в таблице ниже. Для получения оценки количества кортежей в итоговом отношении вначале перемножим размеры отношений R, S и U: 1000 * 2000 * 5000. Затем отыщем атрибуты, присутствующие в схемах нескольких отношений: это b, объявленный в схемах всех трех отношений, и с, содержащийся в двух. Разделим полученное выше произведение на два самых крупных значения из числа V(R, b), V(S, b) и V(U, b), т.е. на 50 и 200, и на более крупное из двух значений, V(R, с) и V(S, с), т.е. на 200. Оценка, таким образом, примет вид
1000 * 2000 * 5000 / (50 * 200 * 200) = 5000.
Таблица 8.3 – Характеристики отношений
R(a, b, с) |
S(b, ,с d) |
U(b, e) |
T(R) = 1000 |
T(S) = 2000 |
T(U) = 5000 |
V(R, a) = 100 |
|
|
V(R, b) - 20 |
V(S, b) = 50 |
V(U, b) = 200 |
V(R, c) = 200 |
V(S,c)= 100 |
|
|
V(S, d) = 400 |
|
|
|
V(U, e) = 500 |
Наконец, в качестве оценок количеств различных значений каждого из атрибутов итогового отношения можно использовать минимальные из величин таких количеств по каждому отношению-операнду: для атрибутов а, b, с, d и е эти оценки равны 100, 20, 100, 400 и 500 соответственно.
Принимая во внимание два допущения — о принадлежности одного множества значений совпадающего атрибута другому и о сохранности множеств значений несовпадающих атрибутов, можно сформулировать любопытное и полезное свойство рассмотренного выше правила прогнозирования.
Независимо от способа группирования и упорядочения аргументов выражения естественного соединения п отношений, правило, применяемое к каждому частному соединению отдельно, дает в сумме тот же результат, что и в случае применения к соединению всех n отношений.
Приведенные примеры содержат образцы практического использования этого правила с привлечением трех вариантов группирования для соединения трех отношений, включая случай, когда соединение по существу сводится к декартову произведению.