
- •Содержание
- •Основные понятия
- •Понятие данных
- •Файловые системы
- •Системы баз данных
- •История развития субд
- •Трехуровневая архитектура ansi/sparc
- •Общая характеристика моделей данных
- •Основные понятия модели данных
- •Представление статических и динамических свойств
- •Общая характеристика структурных компонентов. Множества: домены и атрибуты
- •Общая характеристика структурных компонентов. Отношения: сущности
- •Общая характеристика структурных компонентов. Отношения: связи
- •Общая характеристика ограничений целостности
- •Модель данных «сущность – связь»
- •Уровни представления информации
- •Уровень 1 – информация о сущностях и связях
- •Уровень 2. Структура информации
- •Ограничения целостности в модели сущность-связь
- •Расширенная модель данных сущность-связь: нотация idef1x
- •Реляционная модель данных
- •Базовые структурные компоненты реляционной модели данных
- •Целостная часть реляционной модели данных
- •Языковые средства описания данных
- •Манипуляционная часть реляционной модели данных
- •Подмножество sql для манипулирования данными
- •Примеры написания запросов
- •I. И еще несколько примеров написания запросов из документации [10]
- •Краткая характеристика языка sql pl db2® udb
- •Дополнительные возможности описания ограничений целостности
- •Дополнительные возможности db2
- •Описание данных
- •Манипулирование данными
- •Дополнительные возможности формирования запросов
- •Типы данных, определенные пользователем
- •Функции, определенные пользователем
- •Теория проектирования реляционных баз данных
- •Цели проектирования
- •Функциональные зависимости
- •1. Рефлексивность
- •2. Пополнение
- •3. Транзитивность
- •4. Псевдотранзитивность
- •5. Аддитивность (объединение)
- •6. Декомпозиция (проективность)
- •7. Композиция
- •Нормализация отношений
- •Внутренние структуры хранения
- •Структурная схема обработки запроса
- •Бинарные деревья
- •Многоходовые деревья
- •Сравнение методов индексирования
- •Создание индексов в db2®
- •Организация файлов базы данных в db2®
Внутренние структуры хранения
Структурная схема обработки запроса
Важными особенностями реляционной СУБД, влияющими на организацию хранения данных во внешней памяти, являются следующие:
наличие двух уровней системы для организации доступа к данным,
поддержка отношений-каталогов,
регулярность структуры данных.
Наличие двух уровней
Рассмотрим структурную схему обработки запроса (Рис. 7.1):
Рис. 7.1. Структурная схема обработки запроса
При такой организации подсистема нижнего уровня должна поддерживать во внешней памяти набор базовых структур, конкретная интерпретация которых входит в число функций подсистемы верхнего уровня.
Поддержка отношений-каталогов
Каталоги базы данных содержат информацию, связанную с объектами базы данных (имена, свойства и т.п.). Эта информация поддерживается системой языкового уровня. С точки зрения структур внешней памяти, отношение-каталог ничем не отличается от обычного отношения.
Регулярность структуры данных
Так как основным объектом базы данных является таблица, главный набор объектов внешней памяти может иметь очень простую регулярную структуру. При этом необходимо обеспечить возможность эффективного выполнения операторов языкового уровня как над одним отношением, так и над несколькими отношениями.
Для этого во внешней памяти должны поддерживаться дополнительные управляющие структуры – индексы.
Отсюда, возникают следующие разновидности объектов базы данных, размещаемых во внешней памяти:
строка отношения (строка таблицы) – основная часть базы данных, большей частью непосредственно видимая пользователем;
индексы – объекты, создаваемые по инициативе пользователя или верхнего уровня системы из соображений повышения эффективности выполнения запросов;
управляющая (служебная) информация, поддерживаемая для удовлетворения внутренних потребностей нижнего уровня системы (например, информация о свободной памяти).
Это и определяет структуру файлов базы данных.
Конкретная организация файлов определяется конкретной СУБД, однако перечисленные выше компоненты, в том или ином виде, присутствуют в любых файлах баз данных.
Тем не менее, имеются общие принципы представления во внешней памяти основных объектов базы данных – таблиц и индексов.
Таблицы обычно хранятся во внешней памяти по строкам. Одинаковые значения атрибутов в разных строках дублируются. Такой способ хранения обеспечивает удобный доступ ко всей строке, но могут потребоваться лишние обращения к памяти, если нужно получить часть строки.
Организация доступа к данным, в общем случае, использует два способа получения данных:
последовательная выборка данных, позволяющая получить совокупность всех строк таблицы, возможно, упорядоченных по каким-либо атрибутам; такую выборку характеризует следующее предложение:
SELECT * FROM таблица
произвольная выборка данных, позволяющая получить конкретные строки таблицы, удовлетворяющие некоторому критерию отбора; часто в качестве такого критерия указывается условие совпадения с конкретным значением некоторых (уникальных) атрибутов:
SELECT * FROM таблица WHERE первичный_ключ = значение
Для обеспечения эффективного доступа к данным, размещаемым во внешней памяти, должны использоваться соответствующие методы доступа и дополнительные структуры, позволяющие эффективно выполнять любые запросы.
Обычно рассматриваются два метода доступа к данным:
последовательный метод доступа, при котором некоторая целевая запись размещается непосредственно после записи, предшествующей целевой; чтобы получить целевую запись, надо последовательно обратиться ко всем предшествующим цели записям;
произвольный метод доступа, при котором положение целевой записи, в общем случае, не зависит от расположения предшествующей; целевая запись может быть получена при непосредственном обращении к ней.
Последовательный метод доступа позволяет легко организовать последовательную выборку данных, но не дает удобных средств организации произвольной выборки: произвольная выборка также сводится к обычному сканированию таблицы. Произвольный метод доступа, при соответствующей организации данных, позволяет эффективно реализовать и последовательную, и произвольную выборку данных. Поэтому в современных СУБД используются произвольные методы доступа. На их основе создаются дополнительные структуры – индексы, обеспечивающие быстрый доступ к требуемым данным. В настоящее время широко распространены методы доступа, основанные на использовании древовидных структур. Эти методы доступа предполагают использование специальных объектов базы данных – индексов, организованных в виде некоторой древовидной структуры. Уникальные индексы создаются на основе ключей таблицы, и в первую очередь, на основе первичного ключа.
Каждый индекс ассоциируется с записью данных (строкой таблицы). Чтобы найти конкретную запись, сначала нужно по заданному значению ключа найти ассоциированный с записью индекс.
Существуют различные древовидные структуры; прежде всего, это – бинарные деревья поиска, но могут быть определены и другие древовидные структуры. Рассмотрим их подробнее.