Способы доступа по первичному ключу

 

Доступ по первичному ключувыполняется следующими способами: последовательное сканирование, блочный, двоичный, индексно-последовательный, индексно-произвольный, рандомизация.

Последовательное сканирование

 

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

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

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

· для упорядоченного списка проверяется условие, например, превышения значения ключа доступа Кдоступ значения ключа Кэ: если список упорядочен по возрастанию, поиск продолжается; если по убыванию – поиск прекращается ввиду отсутствия нужного элемента.

 

Пример 1. Для списка из таблицы 1 требуется просмотреть адрес студента по фамилии Скворцов, т.е. qпросмотр = (Фамилия = Скворцов, Домашний адрес), а Кдоступ = Скворцов (здесь и далее значение ключа доступа выделяется курсивом).

Доступ осуществляется последовательным выполнением шагов:

1. выбирается первый элемент списка;

2. ключевое поле элемента Кэ = Строков сравнивается с ключом доступа: Строков = Скворцов;

3. поскольку поля не равны, выбирается следующий - второй - элемент списка;

4. ключевое поле элемента сравнивается с ключом доступа: Скворцов = Скворцов;

5. поскольку поля равны, выводится адрес: пр. Мира, 45 – 3; алгоритм заканчивает работу.

 

Пример 2. Пусть требуется просмотреть домашний адрес студента, отсутствующего в списке, например, по фамилии Сидоров, т.е. qпросмотр = (Фамилия = Сидоров, Домашний адрес), где Кдоступ = Сидоров.

Работа алгоритма для неупорядоченного списка (таблица 1):

1. выбирается первый элемент списка;

2. ключевое поле элемента сравнивается с ключом доступа: Строков = Сидоров;

3. поскольку поля не равны, выбирается следующий - второй - элемент списка;

4. ключевое поле элемента сравнивается с ключом доступа: Скворцов = Сидоров;

5. вследствие того, что поля не равны, выбирается следующий - третий - элемент списка;

6. ключевое поле элемента сравнивается с ключом доступа: Соколов = Сидоров;

7. из-за того, что поля не равны, делается попытка обратиться к следующему элементу списка;

8. поскольку список закончен, выдается диагностическое сообщение об отсутствии искомого элемента в списке; алгоритм заканчивает работу.

Работа алгоритма для упорядоченного списка из таблицы 2 (список упорядочен по возрастанию первичного ключа – фамилии):

1. выбирается первый элемент списка;

2. ключевое поле элемента сравнивается с ключом доступа: Скворцов = Сидоров;

3. поскольку поля не равны, определяется возможность присутствия искомого элемента в продолжении списка. Для этого проверяется другое условие: Скворцов < Сидоров (напомним, что список упорядочен по алфавиту фамилий – первичных ключей);

4. условие не выполняется, поэтому выдается диагностическое сообщение об отсутствии искомого элемента в списке, и алгоритм заканчивает работу.

Таким образом, для определения отсутствия искомого элемента в списке во втором случае потребовалось только одно обращение к списку, а в первом – три. Уменьшение числа обращений к списку определяет лучший способ организации хранения данных.

 

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

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

· для упорядоченного списка проверяется условие, например, превышения значения ключа доступа Кдоступ значения ключа Кэ: если список упорядочен по возрастанию, перебор элементов продолжается; если по убыванию, размещаемый элемент с ключом Кдоступ размещается перед элементом с ключом Кэ. Следует отметить, что названная процедура размещения элемента в упорядоченном списке проблематична и рассматривается как отдельная задача в разделе Размещение элементов в упорядоченном списке.








Дата добавления: 2015-03-03; просмотров: 640;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.