6.1. Задача поиска информации и понятие об индексах Повторимся, что независимо от используемой модели данных информация на внешнем носителе хранится в файлах. Каждый файл состоит из записей определенной структуры, т.е. из полей. В простейшем случае, используются записи фиксированной длины (предполагается, что фиксирована не только длина всей записи в байтах, но и длина каждого поля). В этом случае структуру файла можно изобразить, например, так: Преподаватели
Таким образом, длина всей записи
постоянна - 102 байта.
Понятно, что на практике длина часто все же незначительно колеблется. В случае незначительных колебаний самое очевидное решение - резервировать место по максимуму, как мы поступили с полем ФИО в предыдущем примере. В случае же значительных колебаний используется механизм ссылок. Физически в этом случае создается вспомогательный файл, то есть на физическом уровне будет организовано 2 файла: |
ТЕКСТЫ - данный файл состоит из записанных «друг
за другом» текстов новостей. Доступ к конкретному тексту
осуществляется по адресу, то есть по смещению от начала файла ТЕКСТЫ
в байтах, при этом количество рассматриваемых байтов будет
определяться длиной текста, также хранимой в таблице НОВОСТИ. |
Требуется найти телефон Зиминой. ВХОД - f - файл. reset(f); while not eof(f) do begin read(f,r); if r.fio='3MMMHa' then begin return(OK); //задача решена break end end Примечание. В наихудшем случае T~n , где n - число записей в таблице (в случае реляционной модели - число кортежей в отношении). На практике в дополнение к таблице строятся специальные структуры данных, облегчающие поиск. Эти структуры называются индексами, а способы их построения и использования в процессе поиска - методами индексации. Примечание. В большинстве случаев индексы строятся по полям фиксированной длины и в рамках данного пособия мы ограничимся рассмотрением именно этих случаев. Также для простоты мы будем считать, что поиск производится по ключевым полям.
|