Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
02_Лекции (1).doc
Скачиваний:
51
Добавлен:
18.11.2019
Размер:
1.09 Mб
Скачать

Структуры данных для организации поиска по не ключевым полям.

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

В FoxPro используют LOCATE– недостаток – большое время доступа.

Вторичные индексы (инвертированные файлы).

Пусть имеется файл, записи которого содержат некоторое поле F. Это поле принимает возможные значения из множества D, домена поля F. F может входить или не входить в ключ.

Вторичный индекс по полю F представляет собой связь между доменом D и множеством записей рассматриваемого файла (ранее рассматриваемые индексы связывают значение ключа с записями файла – называется первичным индексом). Файл с вторичным индексом по полю F называется инвертированным по полю F.

В нотации записей переменной длинны вторичные индексы имеют вид:

Значение (запись)*

где «значение»– значение поля F из домена, (запись)*– список ссылок на записи основного файла.

Если в список входят физические указатели на запись (номера записей) следовательно запись основного файла закреплена.

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

Пример: цвет (список инв. номеров с данным цветом).

Поиск по частичному соответствию.

Требуется найти запись со значением v1 поля F1, v2 поля F2 … vк поля Fк . Эти поля не образуют полного первичного ключа. Если Si есть множество записей, для которой Fi имеет значение vi то требуется найти:

Рассмотрим методы решения.

  1. Использование множественного вторичного индекса. Достаточно пересечь вторичные индексы (возможно в оперативной памяти). Недостаток: поддержка индексов при включении и удалении. Пример: система «ADABAS».

  2. Функции разделенного хеширования. В хеш – файле число участков 2n. Логический адрес n бит. Разделим n бит на k групп. Одна i-тая группа соответствует одному полю Fi . Для каждой группы построим свою хеш – функцию hi (Vi). В качестве номера участка примем последовательность бит: h1 (V1) h2 (V2)… hk (Vk). Сумма длин всех участков равна h. Каждое значение Vi переведем в часть ключа hi (Vi), построим общий ключ →поиск в построенном номере участка.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]