- •Курс лекций
- •Содержание
- •Понятие субд. Функции субд
- •2. Проектирование бд. Нормальные формы отношений 77
- •Понятие бд и субд
- •Данные.
- •Аппаратное обеспечение.
- •Программное обеспечение.
- •Пользователи.
- •Уровни абстракции в субд. Функции абстрактных данных
- •Представления
- •Внешний уровень – внешнее представление
- •Концептуальный уровень – концептуальное представление
- •Внутренний уровень – внутреннее представление
- •Функции субд
- •Экспертные системы и базы знаний
- •Литература:
- •Модели бд
- •Обзор ранних (дореляционных) субд
- •Системы, основанные на инвертированных списках
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Иерархическая модель
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Сетевая модель
- •Сетевые структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Основные достоинства и недостатки ранних субд
- •Литература:
- •Реляционная модель и ее характеристики. Целостность в реляционной модели
- •Представление информации в реляционных бд
- •Отношения. Свойства и виды отношений
- •Свойства отношений
- •Виды отношений
- •Целостность реляционных данных
- •Потенциальные и первичные ключи
- •Внешние ключи
- •Ссылочная целостность
- •Правила внешних ключей
- •Значения null и поддержка ссылочной целостности
- •Литература:
- •Реляционная алгебра
- •Понятие реляционной алгебры
- •Замкнутость в реляционной алгебре
- •Традиционные операции над множествами
- •Объединение
- •Пересечение
- •Вычитание
- •Произведение
- •Свойства основных операций реляционной алгебры
- •Специальные реляционные операции
- •Выборка
- •Проекция
- •Естественное соединение
- •Деление
- •Операция расширения
- •Операция подведения итогов
- •Операторы обновления
- •Реляционные сравнения
- •Литература:
- •Вопросы проектирования бд
- •Понятие проектирования бд
- •Функциональные зависимости
- •Тривиальные и нетривиальные зависимости
- •Замыкание множества зависимостей и правила вывода Армстронга
- •Неприводимое множество зависимостей
- •Нормальные формы – основные понятия
- •Декомпозиция без потерь и функциональные зависимости
- •Диаграммы функциональных зависимостей
- •Литература:
- •Проектирование бд. Нормальные формы отношений
- •Первая нормальная форма. Возможные недостатки отношения в 1нф
- •Вторая нормальная форма. Возможные недостатки отношения во 2нф
- •Третья нормальная форма. Возможные недостатки отношения в 3нф
- •Сохранение зависимости
- •Нормальная форма Бойса-Кодда
- •Литература:
- •Проектирование бд. Нормальные формы отношений (продолжение)
- •Многозначные зависимости
- •Четвертая нормальная форма
- •Зависимости соединения
- •Пятая нормальная форма
- •Зависимости соединения, подразумеваемой потенциальными ключами
- •Итоговая схема процедуры нормализации
- •Литература:
- •Проектирование бд методом сущность-связь. Er-диаграммы
- •Возникновение семантического моделирования
- •Основные понятия метода
- •Диаграммы er-экземпляров и er-типа
- •Связи типа 1:1 и необязательный класс принадлежности
- •Связи типа 1:1 и обязательный класс принадлежности
- •Связи типа 1:м вариант н-о
- •Связи типа м:м и вариант класса принадлежности о-н
- •Правила формирования отношений
- •Степень связи 1:1, класс принадлежности обеих сущностей обязательный
- •Степень связи 1:1, класс принадлежности одной сущности обязательный, а второй – необязательный
- •Степень связи 1:1, класс принадлежности обеих сущностей – необязательный
- •Степень связи между сущностями 1:м (или м:1), класс принадлежности м-связной сущности обязательный
- •Степень связи 1:м (м:1)и класс принадлежности м-связной сущности – необязательный
- •Степень связи м:м, независимо от класса принадлежности сущностей
- •Методология idef1 (самостоятельное изучение)
- •Литература:
- •Язык sql
- •История создания и развития sql
- •Основные понятия sql
- •Операторы
- •Типы данных в sql
- •Константы
- •Запросы на чтение данных. Оператор select
- •Предложение select
- •Предложение from
- •Отбор строк (предложение where)
- •Условия поиска
- •Сортировка результатов запроса (предложение order by).
- •Многотабличные запросы на чтение (объединения).
- •Запросы с использованием отношения предок/потомок.
- •Прочие объединения таблиц по равенству
- •Литература:
- •Язык sql (продолжение)
- •Объединения и стандарт sql2
- •Внутренние объединения в стандарте sql2
- •Внешние объединения в стандарте sql2
- •Перекрестные объединения и запросы на объединение в sql2
- •Многотабличные объединения в стандарте sql2
- •Итоговые запросы на чтение. Агрегатные функции
- •Агрегатные функции и значения null
- •Запросы с группировкой (предложение group by)
- •Несколько столбцов группировки
- •Ограничения на запросы с группировкой
- •Вложенные запросы
- •Условия поиска во вложенном запросе
- •Литература:
- •Внесение изменений в базу данных.
- •Добавление новых данных (оператор insert).
- •Удаление существующих данных (Оператор delete)
- •Обновление существующих данных (Оператор update)
- •Определение структуры данных в sql
- •Создание таблицы (оператор create table)
- •Удаление таблицы (оператор drop table)
- •Изменение определения таблицы (оператор alter table)
- •Определения доменов
- •Индексы (операторы create/drop index)
- •Понятие представления.
- •Преимущества представлений
- •Недостатки представлений
- •Представления в sql.
- •Обновление представлений и стандарт ansi/iso
- •Удаление представления (оператор drop view)
- •Системный каталог (самостоятельное изучение)
- •Понятие системный каталог
- •Системный каталог и стандарт ansi/iso
- •Содержимое системного каталога
- •Информационная схема в стандарте sql2
- •Литература:
- •Обеспечение безопасности бд
- •Общие положения
- •Методы обеспечения безопасности
- •Избирательное управление доступом
- •Обязательное управление доступом
- •Шифрование данных
- •Контрольный след выполняемых операций
- •Поддержка мер обеспечения безопасности в языке sql
- •Директивы grant и revoke
- •Представления и безопасность
- •Литература:
- •Физическая организация бд: структуры хранения и методы доступа
- •Доступ к базе данных
- •Кластеризация
- •Индексирование
- •Плотное и неплотное индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Литература:
- •Оптимизация запросов
- •Пример оптимизации реляционного выражения
- •Обзор процесса оптимизации
- •Стадия 1. Преобразование запроса во внутреннюю форму
- •Стадия 2. Преобразование в каноническую форму
- •Стадия 3. Выбор потенциальных низкоуровневых процедур
- •Стадия 4. Генерация планов вычисления запроса и выбор плана с наименьшей стоимостью
- •Преобразование выражений
- •Выборки и проекции
- •Распределительный закон
- •Коммутативность и ассоциативность
- •Идемпотентность
- •Вычисляемые скалярные выражения
- •Условия
- •Семантические преобразования
- •Статистики базы данных
- •Литература:
- •Восстановление после сбоев
- •Транзакции
- •Понятие транзакции
- •Восстановление транзакции.
- •Свойства асид.
- •Алгоритм восстановления после сбоя системы
- •Восстановление после отказов системы
- •Параллелизм. Проблемы параллелизма
- •Проблема потери результатов обновления
- •Проблема незафиксированной зависимости
- •Проблема несовместимого анализа
- •Понятие блокировки
- •Решение проблем параллелизма
- •Проблема потери результатов обновления.
- •Проблема незафиксированной зависимости.
- •Проблема несовместимого анализа
- •Тупиковые ситуации
- •Способность к упорядочению
- •Уровни изоляции транзакции
- •Поддержка в языке sql
- •Литература:
- •Технологии субд
- •Распределенные базы данных
- •Предварительные замечания.
- •Принципы функционирования распределенной бд
- •Локальная автономия
- •Независимость от центрального узла
- •Непрерывное функционирование
- •Независимость от расположения
- •Независимость от фрагментации
- •Системы типа клиент/сервер
- •Серверы баз данных
- •Литература:
- •Современные постреляционные модели бд
- •Системы управления базами данных следующего поколения
- •Ориентация на расширенную реляционную модель
- •Абстрактные типы данных
- •Генерация систем баз данных, ориентированных на приложения
- •Поддержка исторической информации и темпоральных запросов
- •Объектно-ориентированные субд
- •Модель данных ообд
- •Идентификатор объекта
- •Новые типы данных
- •Оптимизация ядра субд
- •Язык субд и запросы
- •Транзакции в оосубд
- •Блокировки в оосубд
- •Ведение версий
- •Физические хранилища
- •Литература:
- •Regions
- •WorkPlan
- •Subjects
- •Teachers
- •Students
- •Приложение б.Описание структуры учебной базы данных.
Литература:
Дейт К.Дж. Введение в системы баз данных. –Пер. с англ. –6-е изд. –К. Диалектика, 1998. Стр. 674–696.
Оптимизация запросов
ЛЕКЦИЯ 1. Содержание 3
ЛЕКЦИЯ 2. Понятие СУБД. Функции СУБД 6
2.1 Понятие БД и СУБД 9
2.2 Уровни абстракции в СУБД. Функции абстрактных данных 13
2.3 Представления 13
2.4 Функции СУБД 15
2.5 Экспертные системы и базы знаний 16
2. Модели БД 18
2.6 Обзор ранних (дореляционных) СУБД 20
2.7 Системы, основанные на инвертированных списках 21
2.8 Иерархическая модель 23
2.9 Сетевая модель 25
2.10 Основные достоинства и недостатки ранних СУБД 28
2. Реляционная модель и ее характеристики. Целостность в реляционной модели 29
2.11 Представление информации в реляционных БД 31
2.12 Домены 33
2.13 Отношения. Свойства и виды отношений 34
2.14 Целостность реляционных данных 38
2.15 Потенциальные и первичные ключи 38
2.16 Внешние ключи 40
2.17 Ссылочная целостность 41
2.18 Значения NULL и поддержка ссылочной целостности 42
2. Реляционная алгебра 44
2.19 Понятие реляционной алгебры 46
2.20 Замкнутость в реляционной алгебре 46
2.21 Традиционные операции над множествами 47
2.22 Свойства основных операций реляционной алгебры 50
2.23 Специальные реляционные операции 51
2. Вопросы проектирования БД 61
2.24 Понятие проектирования БД 63
2.25 Функциональные зависимости 65
2.26 Тривиальные и нетривиальные зависимости 68
2.27 Замыкание множества зависимостей и правила вывода Армстронга 68
2.28 Неприводимое множество зависимостей 71
2.29 Нормальные формы – основные понятия 72
2.30 Декомпозиция без потерь и функциональные зависимости 73
2.31 Диаграммы функциональных зависимостей 75
2. Проектирование БД. Нормальные формы отношений 77
2.32 Первая нормальная форма. Возможные недостатки отношения в 1НФ 79
2.33 Вторая нормальная форма. Возможные недостатки отношения во 2НФ 82
2.34 Третья нормальная форма. Возможные недостатки отношения в 3НФ 85
2.35 Нормальная форма Бойса-Кодда 87
2. Проектирование БД. Нормальные формы отношений (продолжение) 91
2.36 Многозначные зависимости 93
2.37 Четвертая нормальная форма 97
2.38 Зависимости соединения 97
2.39 Пятая нормальная форма 101
2.40 Итоговая схема процедуры нормализации 102
2. Проектирование БД методом сущность-связь. ER-диаграммы 103
2.41 Возникновение семантического моделирования 105
2.42 Основные понятия метода 105
2.43 Диаграммы ER-экземпляров и ER-типа 107
2.44 Правила формирования отношений 112
2.45 Методология IDEF1 (самостоятельное изучение) 117
3. Язык SQL 122
2.46 История создания и развития SQL 124
a. Основные понятия SQL 125
2.47 Запросы на чтение данных. Оператор SELECT 132
2.48 Многотабличные запросы на чтение (объединения). 138
2. Язык SQL (продолжение) 142
2.49 Объединения и стандарт SQL2 144
2.50 Итоговые запросы на чтение. Агрегатные функции 149
2.51 Запросы с группировкой (предложение GROUP BY) 151
2.52 Вложенные запросы 153
2. Язык SQL. (продолжение) 161
2.53 Внесение изменений в базу данных. 163
2.54 Удаление существующих данных (Оператор DELETE) 165
2.55 Обновление существующих данных (Оператор UPDATE) 165
2.56 Определение структуры данных в SQL 166
2.57 Понятие представления. 172
2.58 Представления в SQL. 174
2.60 Системный каталог (самостоятельное изучение) 176
2. Обеспечение безопасности БД 184
2.61 Общие положения 186
2.62 Методы обеспечения безопасности 187
2.63 Избирательное управление доступом 191
2.64 Обязательное управление доступом 192
2.65 Шифрование данных 193
2.66 Контрольный след выполняемых операций 193
2.68 Поддержка мер обеспечения безопасности в языке SQL 195
2.69 Директивы GRANT и REVOKE 195
2.71 Представления и безопасность 198
3. Физическая организация БД: структуры хранения и методы доступа 199
2.72 Доступ к базе данных 201
2.74 Кластеризация 204
2.75 Индексирование 205
2.76 Структуры типа Б-дерева 209
2.77 Хеширование 213
2. Оптимизация запросов 216
2.78 Пример оптимизации реляционного выражения 219
2.79 Обзор процесса оптимизации 221
2.80 Преобразование выражений 224
2. Восстановление после сбоев 231
2.81 Транзакции 233
2.82 Алгоритм восстановления после сбоя системы 238
2.83 Параллелизм. Проблемы параллелизма 240
2.84 Понятие блокировки 244
2.85 Решение проблем параллелизма 246
2.86 Тупиковые ситуации 250
2.87 Способность к упорядочению 251
2.89 Уровни изоляции транзакции 255
2.90 Поддержка в языке SQL 255
2. Технологии СУБД 257
2.91 Распределенные базы данных 259
2.93 Принципы функционирования распределенной БД 261
2.94 Системы типа клиент/сервер 265
2.95 Серверы баз данных 267
2. Современные постреляционные модели БД 269
2.96 Системы управления базами данных следующего поколения 271
2.97 Ориентация на расширенную реляционную модель 272
2.98 Объектно-ориентированные СУБД 275
ЛЕКЦИЯ 3. Приложение А. Структура учебной базы данных. (БД деканата ВУЗа). 286
ЛЕКЦИЯ 4. Приложение Б.Описание структуры учебной базы данных. 287
Для реляционных систем оптимизация является как проблемой, так и возможностью повышения производительности. Проблема оптимизации состоит в том, что некоторые системы для достижения определенного уровня производительности требуют оптимизации. Оптимизация позволяет улучшить работу системы, так как одной из сильных сторон реляционного подхода является то, что первое применение оптимизации к реляционному выражению переводит это выражение на более эффективный семантический уровень. Общее назначение оптимизатора состоит в выборе эффективной стратегии для вычисления данного реляционного выражения.
Преимущество автоматической оптимизации заключается в том, что пользователь может не задумываться над наилучшим способом выражения своих запросов (т.е. над тем, как сформулировать запрос, чтобы система выполнила его с максимально возможной производительностью). Но это далеко не все. Существует реальная возможность, что оптимизатор сформулирует запрос лучше, чем программист-пользователь. Для подобного утверждения есть ряд причин. Ниже приведены только некоторые из них:
Хороший оптимизатор – обратите внимание на слово "хороший" – обладает достаточным количеством информации, которой пользователь может не иметь. Точнее, оптимизатор должен обладать некоторыми статистическими данными, такими как кардинальное число каждого базового отношения, количество различающихся значений для каждого атрибута в отношении, количество вхождений каждого значения в атрибутах и т.п. Благодаря наличию этих данных оптимизатор способен более точно оценивать эффективность любой стратегии реализации конкретного запроса. Поэтому оптимизатор сможет выбрать наилучшую стратегию реализации запроса.
Если с течением времени статистика базы данных значительно изменится (например, база данных будет физически реорганизована), то для реализации запроса может потребоваться совсем иная стратегия, чем до реорганизации. Другими словами, может понадобиться повторная оптимизация, или реоптимизация. В реляционных системах процесс реоптимизации достаточно тривиален – это просто повторная обработка исходного запроса системным оптимизатором. С другой стороны, в нереляционных системах реоптимизация требует переписывания программы, и, возможно, невыполнима вообще.
Оптимизатор – это программа, поэтому он более "настойчив" по сравнению с человеком. Оптимизатор вполне способен рассматривать буквально сотни различных стратегий реализации данного запроса, в то время как программист вряд ли изучает более трех-четырех стратегий (по крайней мере, достаточно глубоко).
В оптимизатор встроены знания и опыт "лучших из лучших" программистов, что делает эти знания и опыт доступными для всех. Естественно, в противном случае широкому кругу пользователей будет предоставлен явно недостаточный набор дешевых и неэффективных возможностей.