- •Содержание
- •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.7. Оценка размеров результатов выполнения других операторов
Мы уже познакомились с двумя операциями, размеры результатов которых можно описать с помощью точных формул:
1) оператор проекции (projection) не изменяет количество кортежей исходного отношения;
2) оператор декартова произведения (Cartesian product) возвращает отношение, размер которого равен произведению количеств кортежей отношений-операндов.
Мы рассмотрели и две другие операции — выбор (selection) и соединение (join), -допускающие возможность относительно точного прогнозирования характеристик результатов. Размеры итоговых отношений, получаемых при выполнении других операторов реляционной алгебры, предсказать сколько-нибудь верно, однако, не столь просто.
8.7.1. Объединение
Размер результата объединения мультимножеств (bag union) определяется точной суммой количеств кортежей отношений-аргументов. Величина объема итогового отношения, возвращаемого оператором объединения множеств (set union), заключена в интервале от значения максимума из размеров операндов до суммы этих размеров. Мы предлагаем в качестве оценки использовать среднее арифметическое двух граничных величин, т.е. сумму большего размера и половины меньшего размера.
8.7.2. Пересечение
Объем отношения, получаемого в результате выполнения оператора пересечения (intersection), не зависит от выбора версии оператора ("множественной" или "мультимножественной") и исчисляется значением из интервала от 0 до размера меньшего из аргументов.
Другой подход связан с интерпретацией пересечения как некоего предельного случая естественного соединения. Если подразумевается операция пересечения множеств, формула гарантирует, что результат по числу кортежей окажется не большим, нежели меньшее из двух отношений-операндов. В случае пересечения мультимножеств, однако, возможно возникновение определенных аномалий, когда оценка результата превышает размер любого из исходных отношений. Рассмотрим в качестве иллюстрации оператор
R(a, b) S(a, b).
Отношения R и S состоят из двух и трех копий кортежа (0,1) соответственно. Тогда
V(R, a) = V(S, a) = V(R, b) = V(S, b)=1,
T(R) = 2 и T(S) = 3. Согласно правилу прогнозирования размера результата соединения, получим 2*3/(mах(1,1)*mах(1, 1)) = 6, хотя совершенно очевидно, что результат не может содержать более min (T(R), T(S)) = 2 кортежей.
8.7.3. Разность
При вычислении оператора разности (difference) R\S размер результата принадлежит интервалу от T(R) до T(R) - T(S). В качестве оценки рекомендуется использовать среднее арифметическое граничных значений: T(R) - T(S) /2.
8.7.4. Удаление кортежей-дубликатов
Размер итогового отношения, возвращаемого оператором δ(R), который применяется к отношению R(a1 , a2,...,аn), составляет V(R, (a1 , a2,...,аn)). Зачастую, однако, подобная статистическая характеристика просто недоступна, что вынуждает пользоваться приближенными оценками. В экстремальных случаях размер S(R) либо совпадает с количеством кортежей в R (т.е. R не содержит дубликатов), либо равен 1 (все кортежи R одинаковы). В качестве другого варианта значения верхней границы количества кортежей в S(R) уместно использовать максимально допустимое число различных кортежей, выраженное в форме произведения множителей V(R, аi), где i = 1,2,..., п. Эта величина может быть ниже в сравнении с другими оценками T(δ(T)). Существует ряд правил прогнозирования значения T(δ(T)), но мы порекомендуем следующее: вычислить минимум из T(R) / 2 и произведения всех V(R, аi).