Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММНАЯ ИНЖЕНЕРИЯ.docx
Скачиваний:
115
Добавлен:
09.09.2018
Размер:
2.83 Mб
Скачать

13. Физическая организация баз данных

Под физической организацией БД понимается совокупность методов и средств размещения данных во внешней памяти и созданная на их основе внутренняя (физическая) модель данных. Внутренняя модель является средством отображения логической модели данных в физическую среду хранения. В отличие от логических моделей физическая модель данных связана со способами организации данных на носителях, методами доступа к данным. Она указывает, каким образом записи размещаются в базе данных, как они упорядочиваются, как организуются связи, каким путем можно локализовать записи и осуществить их выборку.

Внутренняя модель разрабатывается средствами СУБД.

Очевидно, что любая логическая модель может быть отображена множеством внутренних моделей данных подобно тому, как один и тот же алгоритм может быть представлен множеством эквивалентных программ, составленных на одном или разных языках программирования. Одна из внутренних моделей будет оптимальной. В качестве критериев оптимальности используются минимальное время ответа системы, минимальный объем памяти, минимальные затраты на ведение баз данных и др.

Основными средствами физического моделирования в БнД являются структура хранения данных, поисковые структуры и язык описания данных.

В простейшем случае структуру хранения данных можно представить в виде структуры записи файла базы данных, включающей поля записи, порядок их размещения, типы и длины полей. Если структура хранения данных в основном предназначена для указания способа размещения записей и полей, то поисковые структуры определяют способ быстрого нахождения этих записей. Поэтому различают два принципа физической организации БД: организация на основе структуры хранения данных и организация, сочетающая структуру хранения данных с одной или несколькими поисковыми структурами.

Конечным итогом разработки физической организации БД являются базы данных – файл базы данных и файлы поисковых структур.

Из множества типов поисковых структур в СУБД на ПК чаще всего используются линейные и цепные списки, инвертированные и индексные файлы.

Линейный список – самый простой способ физической организации баз данных. В отличие от остальных трех способов он не требует создания дополнительных файлов. В соответствие с этим способом файл базы данных рассматривается как последовательность невзаимосвязанных записей. Поиск любой из них выполняется путем вычисления адреса записи по некоторому алгоритму. По критерию “минимум памяти” это самый экономичный способ. Однако по быстродействию он проигрывает остальным способам.

Цепной список – представляет собой файл, записи которого имеют ссылки на другие записи, образуя связанную (ассоциативную) организацию данных.

Средством связи (ссылкой) элементов списка являются указатели, встраиваемые в записи в виде дополнительных полей. С помощью указателей устанавливается любой требуемый порядок выборки записей.

Поле, выделяемое для хранения указателя, называется адресом связи. Чтобы войти в список, необходимо указать точку входа, т.е. адрес начала списка. Такой адрес хранится, как правило, в отдельной записи (заголовке) или фиксаторе списка.

Пример цепного списка приведен в графическом и табличном виде.

Фиксатор списка

Адрес начала списка

4

АС

АС

АС

АС

Иванов

КС

Петров

Сидоров

Ясин

АНС

ФС

4

a+3

a+0

a+1

Иванов

a+2

+1

Петров

КС

+2

Сидоров

a+0

+3

Ясин

В этом примере элементы списка размещены в памяти последовательно в порядке: Иванов – Петров – Сидоров – Ясин, а выборка элементов, заданная указателями, записанными в АНС и АС, осуществляется в порядке: Петров – Иванов – Ясин – Сидоров. В поле АС последнего, читаемого в логическом порядке элемента списка указан признак конца списка (КС).

Если вместо КС поместить адрес фиксатора списка (ФС), то цепной список становится кольцевым (циклическим) списком. Добавление в запись еще одного указателя (второго поля АС) позволяет сделать список двунаправленным. В записи можно предусмотреть любое требуемое количество указателей k и, следовательно, иметь k вариантов выборки записей файла.

Цепные списки наиболее удобны для представления во внешней памяти сетевых модулей данных.

В базе данных записи, как правило, упорядочены по одному из полей (основному ключу), что позволяет сократить перебор записей при чтении файла БД. Для уменьшения времени поиска данных по неключевым полям создаются инвертированные файлы. Инвертированным называется файл, записи которого упорядочены по неключевому полю. Процесс создания инвертированного файла состоит в переупорядочении исходного (основного) файла по значениям неключевого поля, т.е. в получении копии основного файла с иным порядком следования записей. Инвертирование основного файла будет полным, если созданы инвертированные файлы для каждого из его неключевых полей, и частичных, если они созданы только для их части.

Пример:

Основной файл Инвертированный файл

Фамилия

Год

Фамилия

Год

Борисов А.А.

1970

Иванов Р.С.

1969

Ярин С.Д.

1969

Ярин С.Д.

1969

Иванов Р.С.

1969

Борисов А.А.

1970

Здесь приведена база данных в составе основного файла, где записи упорядочены по ключевому полю ФАМИЛИЯ, и инвертированного файла ИФ_ГОД, записи которого упорядочены по неключевому полю Год основного файла. При вводе запроса “найти сотрудников с годом рождения, меньшим 1970” поиск данных необходимо вести не в основном файле, в котором для нашего примера достаточно прочитать две первые записи.

Инвертированный файл обеспечивает самый быстрый поиск данных по неключевому полю. По отношению к основному файлу базы данных он является поисковой структурой. Однако применение инвертированного файла приводит к чрезмерно большому дублированию информации, т.е. перерасходу памяти.

В связи с этим целесообразно создавать не инвертированные файлы, а инвертированные файлы адресов записей основного файла, т.е. файлы, содержащие вместо записей базы данных адреса этих записей. Такие файлы называются индексными файлами (индексами), они занимают малый объем памяти. Каждая запись индекса содержит значение одного неключевого поля и список адресов записей основного файла, в которых встречается указанное значение неключевого поля.

Файл базы данных, для обработки которого используется хотя бы один индекс, называется индексированным файлом. Построение индекса выполняется автоматически самой СУБД.

Основной файл Индекс И 1

Фамилия

Год

Год

Адреса

001

Борисов А.А.

1970

1959

004

002

Ярин С.Д.

1969

1969

002, 003

003

Иванов Р.С.

1969

1970

001

004

Петров О.П.

1959

Поиск записей в БД с помощью индексов заключается в выборе индекса, соответствующего признаку поиска, поиске в индексе строки с заданным значением признака, выборке из этой строки списка адресов искомых записей и чтение этих записей в основном файле по указанным адресам методом прямого доступа. Таким образом, БД может включать один основной и несколько вспомогательных файлов.