- •Базы данных
- •Лекция 1 Хранение данных Данные, информация
- •Системы хранения данных на основе файлов
- •База данных
- •Требования к субд
- •Администратор бд (абд)
- •Лекция 2 Модели данных Независимость данных
- •Модель, схема
- •Лекция 3 Ранние модели Иерархическая модель
- •Сетевая модель
- •Лекция 4 Пример базы данных, построенной на сетевой модели Постановка задачи
- •Диаграмма
- •Описание на яод
- •Лекция 5 Реляционная модель Принципы
- •Уточнения
- •Лекция 6 Методы хранения данных и доступа к ним
- •Последовательный метод
- •Прямой метод
- •Индексные методы
- •Индексно-последовательный метод
- •Индексно-произвольный метод
- •Инвертированные списки
- •Хеширование
- •Лекция 7 Реляционная алгебра: определения, изменение отношений
- •Изменение отношений во времени.
- •Лекция 8 Операции реляционной алгебры
- •Булевы операции
- •Выбор; свойства выбора
- •Проекция; свойства проекции
- •Лекция 9 Операции реляционной алгебры (продолжение) Соединение
- •Свойства соединения
- •Лекция 10 Операции реляционной алгебры (продолжение)
- •Деление
- •Постоянные отношения. Переименование атрибутов
- •Эквисоединение, естественное и -соединение
- •Реляционная алгебра. Полнота ограниченного множества операторов
- •Операторы расщепления и фактора
- •Лекция 11 Язык структурных запросов sql
- •Начальные понятия
- •Стандарт ansi
- •Типы данных
- •Интерактивный и встроенный sql
- •Синтаксис
- •Подразделы sql
- •Простейшие действия
- •Функции агрегирования
- •Группировка
- •Возможности форматирования
- •Лекция 12 Язык структурных запросов sql (продолжение) Соединение
- •Вложенные запросы
- •Связанные запросы
- •Предикаты, определенные на подзапросах
- •Объединение
- •Изменение базы данных
- •Лекция 13 Понятие о нормальных формах
- •1 Нормальная форма (1нф)
- •2 Нормальная форма (2нф)
- •3 Нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 Нормальная форма (4нф)
- •5 Нормальная форма (5нф) – проекция/соединение
- •Лекция 13 Проектирование данных Процессы проектирования
- •Концептуальное проектирование
- •Логическое проектирование
- •Средства создания модели
- •Лекция 14 Функциональные зависимости
- •Аксиомы вывода
- •Ориентированный ациклический граф вывода
- •Определение реляционной базы данных
- •Представление множества функциональных зависимостей
- •Лекция 15 Покрытия функциональных зависимостей
- •Лемма об эквивалентности фз
- •Неизбыточные покрытия
- •Посторонние атрибуты
- •Канонические покрытия
- •Структура неизбыточных покрытий
- •Оптимальные покрытия
- •3 Нормальная форма
- •Нормализация через декомпозицию и посредством синтеза
- •Нормальная форма Бойса-Кодда
- •Литература
Лекция 6 Методы хранения данных и доступа к ним
Производительность программной системы во многом зависит от методов доступа к данным. Порой недели труда над оптимизацией алгоритма, дающей выигрыш по времени вдвое, пропадают из-за неудачного метода работы с данными, увеличивающего время на два порядка. В реальной жизни программист зачастую вынужден использовать конкретную СУБД, избранную для реализации проекта, поэтому возможности маневрировать методами доступа у него небольшие. Но если есть возможность выбора СУБД, знание используемых в ней алгоритмов работы с данными может быть полезным. Кроме того, владение методами хранения данных и доступа к ним позволяет для повышения эффективности время от времени прибегать к их собственной реализации.
Проблема эффективного доступа к данным достаточно сложна, для ее изучения требуется отдельный курс. Цель данной лекции – лишь ознакомление с проблемой на примере некоторых часто встречающихся методов. В нее включены последовательный, прямой, индексно-последовательный, индексно-произвольный методы, метод инвертированных списков, метод перемешанных таблиц (хеширования). Не рассматриваются методы, основанные на деревьях. Кроме того, не рассматриваются проблемы, связанные с физическим размещением данных в оперативной и внешней памяти.
Для оценки методов доступа и хранения используются понятия эффективности доступа и эффективности хранения.
Определение. Эффективность доступа – отношение числа логических обращений к числу физических при выборке элемента данных.
Определение. Эффективность хранения – отношение числа информационных байтов к числу физических при хранении.
Например, если на одно логическое обращение требуется два физических, то эффективность доступа 0,5. Если на 10 байт информации требуется одна двухбайтовая ссылка, эффективность хранения 10/12.
Последовательный метод
В этом методе предполагается физическое расположение записей в логической последовательности. Для выборки записи необходимо просмотреть все предшествующие ей. Очевидно, что эффективность доступа линейно зависит от длины файла. Как правило, время доступа в этом случае недопустимо велико. С другой стороны, для этого метода характерна очень высокая эффективность хранения. Кроме того, алгоритм доступа к данным крайне прост. Следовательно, метод не может применяться там, где необходим быстрый доступ к данным большого объема. Но его можно использовать в тех случаях, когда по характеру задачи следует выбирать записи последовательно (например, полное копирование данных), а также при очень небольших объемах данных в силу простоты алгоритма доступа.
Прямой метод
Для прямого метода необходимо взаимно однозначное соответствие между ключом и адресом записи. В этом случае некоторая адресная функция (возможно, тривиальная) формирует адрес, по которому выбирается запись. Это наиболее эффективный метод по времени доступа, эффективность доступа всегда равна единице. Эффективность хранения зависит от плотности размещения ключей. Если это справочная (неизменяемая) таблица, ключи могут располагаться достаточно плотно. В общем случае этот метод довольно расточителен по памяти.
Прямой метод применяется в случаях, когда время – наиболее ценный ресурс, например, при организации таблиц операционной системы, а также в тех случаях, когда характер задачи предполагает плотное хранение данных с доступом по номеру, например, в задачах вычислительной математики.