Моделирование отношений «один-ко-многим» на файловых структурах
Отношение иерархии является типичным для баз данных, поэтому моделирование иерархических связей является типичным для физических моделей баз данных.
Для моделирования отношений 1:М (один-ко-многим) и М:М (многие-ко-мно-гим) на файловых структурах используется принцип организации цепочек записей внутри файла и ссылки на номера записей для нескольких взаимосвязанных файлов.
Моделирование отношения 1:М с использованием однонаправленных указателей
В этом случае связываются два файла, например F1 и F2, причем предполагается, что одна запись в файле F1 может быть связана с несколькими записями в файле F2. Условно это можно представить в виде, изображенном на рис. 9.10.

Рис. 9.10. Иерархическая связь между файлами
При этом файл F1 в этом комплексе условно называется «Основным», а файл F2 — «зависимым» или «подчиненным». Структура основного файла может быть условно представлена в виде трех областей.
«Основной файл» F1.
Ключ | Запись | Сcылка-указатeль на первую запись в «Подчиненном» файле, с которой начинается цепочка записей файла F2, связанных с данной записью файла F1 |
В подчиненном файле также к каждой записи добавляется специальный указатель, в нем хранится номер записи, которая является следующей в цепочке записей «подчиненного» файла, связанной с одной записью «основного» файла.
Таким образом, каждая запись «подчиненного файла» делится на две области: область указателя и область, содержащую собственно запись.
Структура записи «подчиненного» файла.
Указатель на следующую запись в цепочке | Содержимое записи | ||||
В качестве примера рассмотрим связь между преподавателями и занятиями, которые эти преподаватели проводят. В файле F1 приведен список преподавателей, а в файле F2 — список занятий, которые они ведут.
F1 | |||||||
Номер записи | Ключ и остальная запись | Указатель | |||||
1 | Иванов И. Н. ... | 1 | |||||
2 | Петров А. А. | 3 | |||||
3 | Сидоров П. А. | 2 | |||||
4 | Яковлев В. В. | | |||||