В качестве примера рассмотрим связь между таблицами Преподаватели и Занятия.
Преподаватели
Ф1
Номер записи
Ключ и остальная запись
Указатель
Иванов И.И.
Петров П.П.
Занятия
Ф2
Номер записи
Указатель на следующую запись в цепочке
Содержимое записи
Моделирование
-
Вычислительные сети
Исследование операций
ЭВМ и программирование
-
Модели данных и СУБД
-
Преподаватель Иванов ведет Моделирование, ЭВМ и программирование, Модели данных и СУБД. Запись № 5 – последняя в этой цепочке, так как она не имеет указателя на следующую записью.
· Ищем запись в основном файле в соответствии с ее организацией. Если требуемая запись найдена, то переходим к шагу 2, в противном случае выводим сообщение об отсутствии записи основного файла.
· Анализируем указатель в основном файле. Если он пустой, это значит, что для этой записи нет связанной записи в подчиненном файле, выводим соответствующее сообщение. В противном случае переходим к следующему шагу.
· По ссылке-указателю в найденной записи основного файла переходим прямым методом доступа по номеру записи на первую запись в цепочке подчиненного файла, переходим к следующему шагу.
· Анализируем текущую запись на содержание. Если это искомая запись, то заканчиваем поиск, в противном случае переходим к шагу 5.
· Анализируем указатель на следующую запись в цепочке. Если он пуст, то выводим сообщениео том, что искомая запись отсутствует, и прекращаем поиск. В противном случае переходим на следующую запись в подчиненном файле и снова переходим к шагу 4.
Использование цепочек позволяет эффективно организовывать модификацию взаимосвязанных файлов.
· Ищем удаляемую запись в соответствии с ранее рассмотренным алгоритмом. Отличием при этом является обязательное сохранение в специальной переменной номера предыдущей записи в цепочке (NP).
· Запоминаем в специальной переменной указатель на следующую запись в найденной записи, заносим его в переменную NS. Переходим к шагу 3.
· Помечаем специальным символом, например, символом «*» найденную запись, то есть в позиции указателя на следующую запись в цепочке ставим “*”. Это означает, что данная запись отсутствует, а место в файле свободно и может быть занято любой другой записью.
· Переходим к записи с номером, который хранится в NP, изаменяем в ней указатель на содержимое переменной NS.
Для того чтобы эффективно использовать дисковое пространство при включении новой записи в подчиненный файл, ищется первое свободное место, то есть запись, помеченная символом “*”, и на ее место заносится новая запись. После этого производится модификация соответствующих указателей.