- •Введение
- •1. Концепция информационных систем
- •1.1. Информация и данные предметных областей
- •1.2. Структура банка данных
- •1.2.1. База данных
- •1.2.2. Система управления базами данных
- •1.2.3. Словарь данных
- •1.2.4. Администратор базы данных и его функции
- •1.3. Контрольные вопросы
- •2. Инфомационное моделирование предметных областей для баз данных
- •2.1. Отображение явлений реального мира данными
- •2.2. Инфологическое моделирование по
- •2.3. Трехуровневое представление информационных объектов
- •2.4. Структурные элементы для моделирования данных
- •2.5. Ключи бд
- •2.6. Интеграция полей бд в отношения
- •2.7. Требования интеграции полей в отношения
- •2.8. Обобщенная структура модели данных в бнд
- •2.9. Er-модель бд
- •2.10. Формирование связей сущностей
- •Способ 1. Определение связи сущностей введением дополнительной сущности
- •Способ 2. Определение связей сущностей добавлением в тип сущности общих атрибутов
- •2.11. Бинарные отношения сущностей
- •2.12. Формы представления структур данных
- •2.13. Организация систем бд
- •2.14. Средства поддержки бд
- •2.15. Виды моделей данных для бд
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Контрольные вопросы
- •3. Системы управления базами данных
- •3.1. Функции и состав универсальной субд
- •3.2. Лингвистическое обеспечение субд
- •3.3. Независимость прикладных программ от данных
- •3.4. Операции над данными
- •Селекция данных
- •Обработка данных
- •Запросы к бд
- •3.5. Схема реализации запроса в БнД
- •Распределенная обработка данных
- •Комбинированная обработка данных
- •3.7. Целостность и ограничения целостности данных
- •3.8. Защита данных в бд
- •Контрольные вопросы
- •4.2.2. Вторичный ключ
- •4.3. Функциональные и многозначные зависимости
- •4.3.1. Функциональные зависимости
- •X y (X влечет y).
- •4.3.2. Аксиомы функциональных зависимостей
- •Контрольные вопросы
- •5. Реляционная алгебра
- •5.1. Операции над отношениями
- •5.2. Оператор "объединение" (union)
- •5.3. Оператор "вычитание" (difference)
- •5.4. Оператор "пересечение" (intersection)
- •5.5. Оператор "проектирование" (proj)
- •5.6. Оператор "выбор" (sel)
- •Комбинированный запрос с операторами proj и sel
- •5.7 Оператор "соединение" (join)
- •Запрос с соединением по одному полю
- •Алгоритм реализации
- •Запрос с соединением по нескольким полям
- •Алгоритм реализации
- •Оператор "соединение по условию"
- •5.8. Оператор "умножение" (product)
- •Запрос с оператором умножения
- •Алгоритм реализации
- •5.9. Оператор "деление" (division)
- •5.10. Оптимизация алгоритмов реализации запросов
- •Контрольные вопросы
- •6. Нормализация реляционных бд
- •6.1. Задачи нормализации Бд
- •6.2. Первая нормальная форма
- •6.3. Декомпозиция реляционных таблиц
- •Проблема дублирования, операторы реляционной алгебры для декомпозиции и объединения таблиц
- •Присоединенные записи
- •Теорема Хита
- •Критерий полной декомпозиции с исключением дублирования
- •6.4. Вторая нормальная форма
- •6.5. Третья нормальная форма
- •6.6. Экстранормализационные формы
- •Нормальная форма Бокса-Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •6.7. Методические аспекты реализации нормализации
- •Контрольные вопросы
5.9. Оператор "деление" (division)
Функция: для двух реляционных таблиц соответственно делимого R1 и делителя R2 таких, что:
а) каждому типу поля в делителе найдется соответствующий тип поля в делимом;
б) в экземплярах записей делимого имеются типы полей, отсутствующих в делителе, отдельные значения которых в этих экземплярах записей последовательно конкатенированы с каждым экземпляром записи в делителе, будет получена таблица-частное R, которая:
а) включает типы полей из числа содержащихся в делимом, но отсутствующих в делителе;
б) включает значения полей каждого экземпляра записи частного R лишь в том случае, если они в экземплярах записей делимого конкатенированы с каждым экземпляром записи в делителе.
Синтаксис: R = R1 division R2.
Пример.
R1: |
D |
E |
F |
R2: |
E |
F |
Ответ: R: |
D | ||
1 |
A |
h |
3 |
|
h |
3 |
|
A | ||
2 |
C |
a |
7 |
|
a |
7 |
|
B | ||
3 |
B |
a |
7 |
|
e |
4 |
| |||
4 |
B |
e |
4 |
| ||||||
5 |
A |
e |
4 |
| ||||||
6 |
A |
a |
7 |
| ||||||
7 |
B |
h |
3 |
| ||||||
8 |
C |
e |
4 |
|
Примечание.
1) В таблице R лишь одно поле D, так как оно входит в делимое и отсутствует в делителе;
2) Значения А и В входят в R, так как в делимом они соответственно конкатенированы с каждой из трех записей делителя (см. в табл.R1 записи №№ 1, 5, 6 для D=А и №№ 3, 4, 7 для D=В);
3) Значение С отсутствует в R, так как в R1 нет записи Ch3.
5.10. Оптимизация алгоритмов реализации запросов
Задача оптимизации реализации запросов заключается в выборе такой последовательности операций, при которой минимизируются объемы требуемой памяти и вычислительной работы, а соответственно сокращается время ответа на запросы.
Пусть P11 - одно из возможных значений поля P таблицы R1, которая должна быть объединена с таблицей R2 для получения таблицы R с выполнением ниже сформулированного условия: для таблицы R должны быть выбраны из таблицы, полученной объединением R1 и R2, записи со значением поля P, равным P11.
Для получения ответа возможно два алгоритма:
(5.1) R = (sel <P = P11> (R1)) join R2
и
(5.2) R = sel <P = P11> (R1 join R2),
дающих идентичные результаты. Однако последовательности выполнения операций и затраты будут различны. По формуле (5.1) записи из R1 будут выбираться до операции соединения, а по формуле (5.2) - наоборот после операции соединения.
Применение формулы (5.2) в случае результата операции соединения с количеством записей большим, чем в R1, приведет к увеличению времени реализации процедуры sel, что замедлит работу системы. При таком положении предпочтительнее алгоритм (5.1). В обратной ситуации целесообразнее алгоритм (5.2).
Стандартные языки СУБД реализуют процедуры оптимизации автоматически. При написании БД и СУБД на алгоритмических языках необходимо специально реализовывать эти процедуры написанием программ оптимизации алгоритмов реализации запросов.