Моделирование отношения 1:М с использованием однонаправленных указателей
В этом случае связываются два файла, например F1 и F2, причем предполагается, что одна запись в файле F1 может быть связана с несколькими записями в файле F2. Условно это можно представить в виде, изображенном на рис. 9.10.
Рис. 9.10. Иерархическая связь между файлами
При этом файл F1 в этом комплексе условно называется "Основным", а файл F2 - "зависимым" или "подчиненным". Структура основного файла может быть условно представлена в виде трех областей.
"Основной файл" F1.
Ключ | Запись | Ссылка - указатель на первую запись в "Подчиненном" файле, с которой начинается цепочка записей файла F2, связанных с данной записью файла F1 |
178
В подчиненном файле также к каждой записи добавляется специальный указатель, в нем хранится номер записи, которая является следующей в цепочке записей "подчиненного" файла, связанной с одной записью "основного" файла.
Таким образом, каждая запись "подчиненного файла" делится на две области: область указателя и область, содержащую собственно запись.
Структура записи "подчиненного" файла.
Указатель на следующую запись в цепочке | Содержимое записи |
В качестве примера рассмотрим связь между преподавателями и занятиями, которые эти преподаватели проводят. В файле F1 приведен список преподавателей, а в файле F2 - список занятий, которые они ведут.
F1 | ||
Номер записи | Ключ и остальная запись | Указатель |
1 | Иванов И. Н. ... | 1 |
2 | Петров А. А. | 3 |
3 | Сидоров П. А. | 2 |
4 | Яковлев В. В. |
F2 | ||
Номер записи | Указатель на следующую запись в цепочке | Содержимое записи |
1 | 4 | 4306 Вычислительные сети |
2 | - | 4307 Контроль и диагностика |
3 | 6 | 4308 Вычислительные сети |
4 | 5 | 84305 Моделирование |
5 | - | 4309 Вычислительные сети |
6 | - | 84405 Техническая диагностика |
7 | - |
В этом случае содержимое двух взаимосвязанных файлов F1 и F2 может быть расшифровано следующим образом: первая запись в файле F1 связана с цепочкой записей файла F2, которая начинается с записи номер 1, следующая запись номер 4 и последняя запись в цепочке - запись номер 5. Последняя - потому что пятая запись не имеет ссылки на следующую запись в цепочке. Аналогично можно расшифровать и остальные связи. Если мы проведем интерпретацию данных связей на уровне предметной области, то можно утверждать, что преподаватель Иванов ведет предмет " Вычислительные сети" в группе 4306, "Моделирование" в группе 84305 и "Вычислительные сети" в группе 4309.
Аналогично могут быть расшифрованы и остальные взаимосвязанные записи.
179