
Технология проектирования и администрирования баз данных и систем данных-Конспект
.pdf
значение действительного ключа обрабатывается подпрограммой рандомизации (ПР), в результате чего вычисляется адрес записи в файле данных. Между вырабатываемым адресом и физической записью существует однозначное соответствие. Доступ к индексу реализуется через ПР.
Рис. 7.4
Рис. 7.5
Общим для этих двух способов является то, что записи хранятся неупорядоченно по ключу индекса. Поэтому метод и называется индексно-

произвольным.
Индексно-произвольный метод доступа позволяет использовать для создания индексного файла любое поле записи, необязательно поле первичного ключа. Наличие дубликатов значений ключей может препятствовать успешному ведению файла. Этот метод доступа имеет два основных недостатка:
1.Если индекс не упорядочивается, то только с его помощью обработать записи последовательно в соответствии с порядком индекса невозможно.
2.Поскольку каждой записи соответствует статья индексного файла, последний может иметь довольно большой объем.
Эффективность доступа.
1.Произвольная обработка. Так как индекс содержит статью для каждой записи, эффективность доступа равна единице. Это справедливо только для действительного ключа.
2.Последовательная обработка. Поскольку записи базы данных хранятся в произвольном порядке и необязательно в логической
последовательности, эффективность последовательной обработки предсказать невозможно. Для частичного решения этой проблемы индекс может быть организован логически последовательно.
Эффективность хранения.
Каждой записи базы данных соответствует статья индекса, поэтому индексный файл может иметь довольно большой объем, что потребует создания нескольких уровней индексации.
7.2.4. Инвертированный метод доступа
Для обеспечения возможности выборки различными прикладными программами по более чем одному типу атрибута или поля записи может возникнуть необходимость построения индексов для различных типов атрибутов. Метод доступа, в основу которого положена такая концепция, называется инвертированным.
Как правило, инвертированный метод доступа применяется только для поиска, хотя в некоторых системах им можно воспользоваться и для обновления. Хранение чаще всего осуществляется с помощью других методов доступа. Загрузка базы данных может, например, выполняться любым из описываемых в настоящей главе методов доступа внешней модели. Каждому «инвертированному» полю соответствует статья в таблице. Статья включает имя поля, его значение и адрес записи. После начальной загрузки базы данных происходит упорядочение статей по имени поля, а групп статей с общим именем поля – по значению поля. Для каждого имени поля можно построить отдельный индекс. Записи с одним и тем же значением поля группируются, а общее для всех записей группы значение используется в качестве указателя этой группы. По мере добавления новых записей создаются статьи в соответствующих индексах для соответствующих значений. При исключении записей статьи индекса в соответствующих индексах для соответствующих значений уничтожаются. На рис. 7.6 приведен пример поиска записей

инвертированным методом доступа.
Рис. 7.6
Файл данных инвертируется относительно поля «Номер курса». Каждому инвертированному полю соответствует статья в таблице, называемая также индексом. Статья включает имя поля, его значение и адрес записи. Для любого поля можно построить отдельный индекс, т. е. инвертировать файл относительно этого поля
Эффективность доступа. Доступу к записям базы данных предшествует доступ к индексному файлу (файлам). Поэтому эффективность инвертированного метода доступа зависит от эффективности метода доступа, используемого для обращения к индексу. В любом случае необходимо по меньшей мере одно обращение к индексу и по меньшей мере одно обращение собственно к базе данных. Таким образом, эффективность доступа меньше 0,5. Для обращения к одной записи требуется осуществить минимум два физических обращения. Определение метода, с помощью которого выполняется доступ к индексному файлу, связано с проведением соответствующего анализа. Эффективность доступа значительно повышается, если во время работы базы данных инвертированный индекс постоянно находится в памяти.
Эффективность хранения. Эффективность хранения зависит от метода доступа, применяемого для хранения данных. Если инвертированный метод применяется только для поиска, то высокую эффективность хранения может обеспечить прямой метод доступа. Объем памяти, необходимый для размещения индексного файла, зависит от метода доступа, используемого для запоминания, и от числа полей, подлежащих инвертированию.
7.2.5. Прямой метод доступа
Основная особенность прямого метода доступа состоит во взаимно однозначном соответствии между ключом записи и ее физическим адресом. Физическое местоположение записи определяется непосредственно из значения ключа.

Эффективность доступа. Если между значением ключа и физическим адресом существует взаимно однозначное соответствие, то при непосредственном использовании этого метода эффективность доступа всегда равна единице. В противном случае эффективность доступа при выборке записей зависит от метода выборки.
Эффективность хранения. Эффективность хранения зависит от плотности ключей. При низкой плотности память расходуется впустую, поскольку резервируются адреса, соответствующие отсутствующим ключам (табл. 7.1).
Таблица 7.1
ПРИМЕР ПРЯМОГО МЕТОДА ДОСТУПА
Номера студентов |
Преобразованные ключи |
Адреса хранения |
(исходные ключи) |
(объектные ключи) |
(относительные номера |
|
|
блоков) |
|
|
|
Х101 |
01 |
1 Х101 |
Х102 |
02 |
2 Х102 |
Х10З |
03 |
3 Х10З |
|
|
|
Х199 |
99 |
99 Х199 |
Y100 |
100 |
100 Y500 |
Y101 |
101 |
101 Y501 |
(Отсутствует) |
(отсутствует) |
пустая ячейка |
Y103 |
103 |
103 Y503 |
При построении преобразованных (объектных) ключей в основу берутся номера студентов (исходные ключи), соответствующие уникальным адресам хранения. Взаимно однозначное соответствие между ключом записи и ее физическим адресом – основная особенность этого метода доступа
На табл. 7.1 приведен пример следующего алгоритма: у всех исходных ключей, начинающихся с комбинации «X1», оставить только последние две цифры, использовать их в качестве целевого ключа и адреса хранения; у всех исходных ключей, начинающихся с символа «Y», оставить три последние цифры, которые использовать в качестве целевого ключа и адреса хранения. Заметим, что физическая запись с ключом «Y102» отсутствует, а память для этой записи резервируется. Другим недостатком этого метода доступа является обязательная уникальность ключей.
7.2.6.Метод доступа посредством хеширования
Вряде случаев можно не требовать взаимно однозначного соответствия между ключом и физическим адресом записи. Вполне достаточно, чтобы группа (ключей) записей ссылалась на один и тот же физический адрес. Такой метод доступа называется методом доступа посредством хеширования.
Как и прямой метод доступа, метод доступа посредством хеширования основан на алгоритмическом определении адреса физической записи по значению ее ключа. Различие состоит в том, что при прямом методе доступа

имеет место взаимно однозначное отображение ключа в адрес, а метод доступа посредством хеширования допускает возможность отображения многих ключей в один адрес (т. е. один и тот же адрес или блок может быть идентифицирован более чем одним значением ключа).
Алгоритм преобразования ключа в адрес часто называют подпрограммой рандомизации или подпрограммой хеширования. Одинаковые ключи подпрограмма преобразует в одинаковые адреса: подпрограмма рандомизации отображает набор значений исходных ключей в набор адресов, причем число ключей превышает число адресов. Записи, ключи которых отображаются в один и тот же физический адрес, называются синонимами. Поскольку по адресу, определяемому подпрограммой рандомизации, может храниться только одна запись, синонимы должны храниться в каких-нибудь других ячейках памяти. В то же время необходимо наличие механизма поиска этих синонимов. В большинстве случаев записи-синонимы связываются в цепочку, называемую цепочкой синонимов (рис. 7.7).
Рис. 7.7
Обратите внимание на цепочку синонимов для записей с ключами Гетта, Мобиль, Суноси и Тексаси. Значение исходного ключа Гетта преобразуется в адрес первой записи цепочки синонимов – 415. Запись Гетта содержит указатель на адрес 423, по которому размещается запись Мобиль. В свою очередь запись Мобиль содержит указатель на адрес 852, по которому размещается запись Суноси. Запись Суноси содержит указатель на адрес 900, по которому размещается запись Тексаси. Эта последняя запись в цепочке содержит нулевой указатель.
При использовании подпрограммы рандомизации необходимо иметь в виду несоответствие порядка хранения физических записей порядку исходных ключей. Это несоответствие может существенно усложнить обработку записей в порядке следования исходных ключей.
Эффективность доступа.

На эффективность доступа данного метода оказывают влияние три фактора:
1.Распределение исходных ключей. В большинстве случаев распределение исходных ключей отличается от чисто случайного. Чем больше разработчику известно о распределении, тем выше вероятность правильного выбора числа блоков и числа записей в блоках. Оптимальный выбор этих значений позволяет разработчику сократить среднюю длину цепочки синонимов. Эффективность метода доступа посредством хеширования в значительной степени зависит от длины цепочки синонимов.
2.Распределение памяти. Для эффективности доступа первостепенное значение имеет равномерность распределения действительных ключей на множестве блоков (т. е. в выделенном поле памяти). Если подпрограмма рандомизации назначает большое число ключей одной области, то число синонимов возрастает. С увеличением объема распределенной памяти увеличивается число адресов, которые могут формироваться подпрограммой рандомизации.
3.Подпрограмма рандомизации или хеширования (называемая также алгоритмом или модулем). Хорошая подпрограмма рандомизации должна обеспечивать равномерное распределение действительных ключей в выделенном поле памяти, снижая таким образом среднюю
длину цепочки синонимов. Эффективность хранения.
Эффективность хранения зависит от распределения памяти и подпрограммы рандомизации. При применении доступа посредством хеширования целесообразно не задавать свободную память в блоках и свободные блоки, поскольку, если подпрограмма рандомизации сформирует адрес внутри свободной памяти в блоке или адрес блока, объявленного свободным, записи будут размещены в области переполнения. Определение размера страницы также имеет первостепенное значение. Если нужная страница находится в памяти, просмотр цепочки синонимов реализуется гораздо проще, чем в ситуации, требующей выполнения физического ввода-вывода.
С помощью рассмотренных выше шести методов доступа внутренней модели можно реализовать другие, более сложные методы доступа.
7.3. Методы доступа внешней модели (представления пользователя)
Методы доступа, описывающие логические взаимосвязи, называются методами доступа внешней модели. На основе модели данных, используемой СУБД (например, реляционной, иерархической, сетевой или какого-либо их сочетания), могут быть получены различные представления пользователя (внешние модели), описывающие взаимосвязь (взаимосвязи) между различными частями физической записи.
Методы доступа внутренней модели обеспечивают вхождение в базу данных, а методы внешней модели выполняют дальнейший поиск записей базы данных или их частей. С помощью взаимосвязей между записями методы доступа внешней модели осуществляют их хранение или поиск. Взаимосвязи

между записями определяются моделью данных, используемой конкретной СУБД в качестве основной структуры данных. Для отыскания записи можно воспользоваться несколькими методами доступа внешней модели, но для хранения – только одним.
Чтобы выяснить взаимосвязи между двумя записями, рассмотрим такую ситуацию.
Предположим, имеются две записи Х и Y. Запись Х уже хранится в базе данных, а запись Y должна в ней храниться. Или другой случай: запись Х найдена, а запись Y необходимо найти. При наличии какой-либо взаимосвязи между двумя записями, Х и Y, для иерархической и сетевой моделей данных она может задаваться следующими способами:
1.Взаимосвязь полей упорядочения. Две записи связаны по полю упорядочения ключа, если поле упорядочения ключа записи Y следует за полем упорядочения ключа записи X.
2.Взаимосвязь по подчиненности. Между записями Х и Y существует взаимосвязь по подчиненности, если запись Y – подчиненная по отношению к записи X.
Иерархическая модель данных. Запись Y может быть порожденной, а запись
Х– исходной.
Сетевая модель данных. Y может быть записью-членом, а Х – записьювладельцем.
3.Взаимосвязь по порождению. Это – взаимосвязь по подчиненности, здесь
Хи Y меняются ролями.
Иерархическая модель данных. Найденная запись Х может быть порожденной, а запись Y, которую необходимо найти, – исходной.
Сетевая модель данных. Найденная запись Х может быть записью-членом, а запись Y, которую необходимо найти, – записью-владельцем.
4. Взаимосвязь «рядом». Эта взаимосвязь просто определяет необходимость хранения записи Y рядом с записью X.
Иерархическая модель данных. Наличие или отсутствие между записями Х и Y взаимосвязи полей упорядочения, взаимосвязи по подчиненности или взаимосвязи по порождению не играет никакой роли.
Сетевая модель данных. Наличие или отсутствие между записями Х и Y взаимосвязи полей упорядочения, взаимосвязи по подчиненности или взаимосвязи по владению не играет никакой роли.
Существуют четыре типа методов доступа внешней модели, основанных на четырех типах взаимосвязей между записями. Их следует оценивать с точки зрения организации как хранения, так и поиска. Мы рассмотрим методы доступа внешней модели для иерархической и сетевой моделей данных.
1. Метод доступа с использованием полей упорядочения. Подлежащая хранению запись Y – это запись, поле упорядочения которой следует за полем упорядочения записи X.
Иерархическая модель данных. Записи Х и Y принадлежат к одному и тому же типу узла. При отсутствии экземпляра узла, с которым можно установить

взаимосвязь, понятие следующего по порядку экземпляра теряет смысл. Сетевая модель данных. Х и Y принадлежат к одному и тому же типу
записи. При отсутствии экземпляра записи, с которым можно установить взаимосвязь, понятие следующего по порядку экземпляра .теряет смысл. Перечислим методы доступа, используемые для установления взаимосвязей на основании поля упорядочения.
К предшествующему.
Иерархическая модель данных. Либо включить (хранить), либо найти экземпляр узла Y, PRIOR (ПРЕДШЕСТВУЮЩИЙ) экземпляру узла X.
Сетевая модель данных. Либо включить (хранить), либо найти экземпляр записи Y, PRIOR (ПРЕДШЕСТВУЮЩИЙ) экземпляру записи X.
К следующему.
Иерархическая модель данных. Либо включить (хранить), либо найти экземпляр узла Y, NEXT (СЛЕДУЮЩИЙ) за экземпляром узла X. Сетевая модель данных. Либо включить (хранить), либо найти экземпляр записи Y, NEXT (СЛЕДУЮЩИЙ) за экземпляром записи X.
2. Метод доступа по подчиненности. Метод доступа по подчиненности может использоваться для хранения и поиска подчиненных узлов для иерархической модели данных и записей для сетевой модели данных. Можно определить следующие условия (рис. 7.8).
Рис. 7.8
Условия: первый, последний, упорядоченный (следующий и предыдущий), «нет условий». Методы доступа по подчиненности могут использоваться как для хранения, так и для поиска порожденных узлов иерархической модели данных и записей сетевой модели данных.
Первый.
Иерархическая модель данных. В результате включения порожденный узел Y – первый порожденный исходного узла X.
Сетевая модель данных. В результате включения запись-член Y – первый член записи-владельца X.

Последний.
Иерархическая модель данных. В результате включения порожденный узел Y – последний порожденный исходного узла X.
Сетевая модуль данных. В результате включения запись-член Y – последний член записи-владельца X.
Упорядоченный.
Иерархическая модель данных. Порожденный узел должен включаться в соответствии с положением ключа в упорядоченной последовательности ключей. Поэтому порожденный узел с наименьшим значением поля упорядочения будет логически первым.
Сетевая модель данных. Запись-член должна вводиться в соответствии с положением ключа в упорядоченной последовательности ключей. Поэтому запись-член с наименьшим значением поля упорядочения будет логически первой.
Нет условий.
Система управления базами данных не будет поддерживать порядка подчинения.
Наиболее часто методы доступа внешней модели реализуются с помощью указателей. Существуют указатели трех типов:
1. Прямой указатель (рис. 7.9), который включает действительный адрес блока на диске, содержащего «указываемую» запись Y; он хранится в записи X, «указывающей» на запись Y.
Рис. 7.9 2. Относительный указатель (рис. 7.10) представляет собой логический
указатель. Это идентификатор, который может быть отображен в действительный адрес блока на диске. Первой частью указателя такого типа является номер страницы базы данных. Его можно преобразовать в значение смещения страницы относительно начала области. Вторая часть указателя содержит значение смещения относительно нижней границы страницы, определяющее действительное положение на странице.
Рис. 7.10

3. Символический указатель (рис. 7.11). Ключ «указываемой» записи Y хранится в «указывающей» на нее записи X. Поиск записи осуществляется методом доступа внутренней модели.
Рис. 7.11
Все эти указатели – прямой, относительный и символический – имеют свои недостатки и преимущества.
Преимущества и недостатки прямого указателя.
Преимущества. Эффективность доступа – наилучшая. Если известен прямой адрес записи, для ее поиска достаточно одного обращения. В большинстве случаев прямой указатель короче соответствующего символического адреса.
Недостатки. Прямой указатель зависит от устройства. При пересылке записи необходимо обновление всех указывающих на нее прямых указателей.
Преимущества и недостатки относительного указателя.
Преимущества. Преимущество относительного указателя перед прямым состоит в том, что при пересылке файлов с устройства (или, в данном случае, просто при копировании) единственное, что должно быть известно СУБД, это размещение начального адреса. Необходимость в изменении какой-либо другой информации отсутствует. По сравнению с символическим указателем относительный имеет двойное преимущество: преобразование ключа в указатель требует очень мало процессорного времени, и, как правило, размеры такого указателя значительно меньше. Относительный ключ представляет собой конкатенацию номера страницы базы данных и номера строк. СУБД и монитор вычисляют номер страницы относительно начала файла. После доступа к странице СУБД использует номер строки в качестве отрицательного смещения относительно нижней границы страницы. Это смещение содержит еще одно, определяющее точное размещение на странице.
Недостатки. Хотя относительный указатель и не зависит от устройства, он по-прежнему основан на заранее известной позиции. С другой стороны, в случае использования символического ключа допускается пересылка записей в любое другое место. При этом изменять следует лишь алгоритм, генерирующий адрес. Таким образом, в системе с символическими указателями нет необходимости в обновлении указывающих на пересылаемую запись символических указателей.
Преимущества и недостатки символического указателя.
Преимущества. Символический указатель не зависит от устройства. При пересылке записи нет необходимости в обновлении указывающих на нее