Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие(А4).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.19 Mб
Скачать

6.5 Обработка информации по нескольким ключевым признакам

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

Среди ключевых атрибутов записи устанавливается порядок старшинства. Извлекаемые на обработку записи должны быть упорядочены в пределах всего массива по самому старшему ключу. В пределах группы записей с одинаковым значением старшего ключа должна соблюдаться упорядоченность по значениям следующего по старшинству ключа и т.д. Представим упорядоченность по нескольким ключам с помощью следующей схемы. Рассмотрим, например, записи с четырьмя атрибутами в порядке старшинства слева направо А1, А2, A3, А4. Значения этих атрибутов из i-й записи обозначим через ali, a2i, a3i, a3i. Преобразуем указанные величины в текстовый формат и образуем величину:

p(i) = ali + a2i + a3i + a4i.

Примечание. Через + обозначена операция сцепления.

После этого упорядоченность по нескольким ключевым атрибутам определяется условием:

p(i)  p(i + 1) — упорядоченность по возрастанию;

p(i)  p(i + l) — упорядоченность по убыванию.

Последовательный массив с такой упорядоченностью может обеспечивать быстрый доступ к данным по следующим сочетаниям ключевых атрибутов: а1 + а2 + а3 + а4, а1 + а2 + а3, а1 + а2 и а1. Количество сочетаний атрибутов, необходимых для реализации максимально широкого круга запросов, в данном примере составляет 15. Хранение нескольких по-разному рассортированных дублей массива или систематическая сортировка единственного массива в соответствии с поступающими запросами не является лучшим решением проблемы.

Рассмотрим возможности создания нескольких массивов индексов в этой ситуации. Индекс удобно формировать не для одного ключевого атрибута, а для набора атрибутов. Естественно, что индекс ключевых атрибутов а1 + а2 + а3 + а4 может также использоваться для быстрого доступа по атрибутам а1 + а2 + а3, а1 + а2 и а1. Поэтому в данном примере максимально необходимо создание четырех индексов с упорядоченностью атрибутов

а1 + а2 + а3 + а4, а1 + а2 + а4, а1 + а3 + а4 и а2 + а3 + а4.

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

Рассмотрим особенности организации мультисписков, которые предназначены для обработки записей по нескольким ключевым атрибутам. В качестве примера в табл. 6.4 показаны 14 записей с ключевыми атрибутами ФАМИЛИЯ и ПРОФЕССИЯ (остальные атрибуты в данном случае несущественны). На пересечении строки с некоторой фамилией и столбца с некоторой профессией указан номер записи, которая содержит именно эти значения в качестве ключей.

Таблица 6.4

Фамилия

Профессия

слесарь

токарь

фрезеровщик

электрик

Бардюшин

А1

А2

Басовский

А3

А4

А5

Батолев

А6

А7

Белов

А8

А9

Иванов

А10

А11

Ираев

А12

А13

А14

В простейшем случае мультисписок будет содержать два списка — с указателем ФАМИЛИЯ — (А1, А2, А3, ..., А13, А14) и с указателем ПРОФЕССИЯ— (А3, А6, А12; А1, А7, А10, А13; А2, А4, А8, А14; А5, А9, А11).

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

Для сокращения длины списков в мультисписке необходимо детализировать содержимое указателей. Например, указатель ФАМИЛИЯ = «Ба» определяет список (А1, А2, А3, А4, А5, А6, А7), указатель ФАМИЛИЯ = «Бе» — список (А8, А9), указатель ФАМИЛИЯ=«И» — список (А10, А11, А12, А13, А14). Поскольку атрибут ПРОФЕССИЯ содержит четыре значения, возможно существование следующих четырех списков: (А3, А6, А12); (А1, А7, А10, А13); (А2, А4, А8, А14); (А5, А9, А11).

При поиске в сокращенных списках необходимо сначала проанализировать все указатели, чтобы выбрать одну строку, заведомо содержащую требуемую информацию.

Рассмотрим, например, запрос с условием

ФАМИЛИЯ = «Иванов» и ПРОФЕССИЯ = «электрик».

Потребуются три обращения к памяти для выбора списка (А10, А11, А12, А13, А14) и четыре обращения — для выбора списка (А5, А9, А11). В указателях хранится длина каждого списка. Вторая строка короче, поэтому она просматривается полностью до извлечения необходимой записи А11.

Контрольные вопросы к 6 главе

  1. Чем различаются линейные методы организации данных?

  2. Как располагаются записи в памяти ПК при последовательной организации данных?

  3. Какие бывают записи с точки зрения способа указания длины массива?

  4. Что подразумевается под формированием данных?

  5. Чем обеспечивается линейная списковая организация данных?

  6. Что такое адрес связи?

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

  8. Требует ли перезаписи поступающих данных списковая организация данных?

  9. Что такое цепной каталог?

  10. Дайте определение указателю списка и указателю свободной памяти.

  11. Что такое группа, порядок и ранг дерева?

  12. В чем заключается особенность бинарных деревьев?

  13. Какие записи называются полными, неполными и концевыми в дереве?

  14. Что такое нелинейный список?

  15. По каким правилам строится аналитическая запись списковой структуры?

  16. Дайте определение адресной функции.

  17. В чем заключаются достоинства и недостатки адресной функции?

  18. Что такое К-индексы и А-индексы?

  19. Как осуществляется поиск в К-индексном массиве?

  20. Для чего используется мультисписковая организация данных?