Способы хранения периодической информации

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

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

Целью настоящей статьи является систематизация способов хранения периодической информации и анализ присущих им достоинств и недостатков.

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

Рассмотрим три способа хранения периодической информации.

1. Данные за все рассматриваемые временные интервалы можно хранить в одном файле базы данных, отводя для каждого периода свое поле. Например, база данных может иметь вид (см. таблицу 1).

Ф. И. О.

Месяц1

Месяц2

Месяц3

...

Месяц11

Месяц12
Балаганов А.
Бендер О.
Паниковский

Таблица 1. Месячные оклады сотрудников ООО "Рога&Копыта".

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

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

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

Цена0100.DBF, Цена0200.DBF, ..., Цена1100.DBF, Цена1200.DBF.

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

3. Наиболее универсальный способ хранения периодической информации реализуется выделением отдельного поля (или нескольких полей) для датирования каждой записи. Пример, приведенный в первом пункте, можно переделать так (см. таблицу 2).


Год

Месяц

Ф. И. О.

Оклад

2000

01

Балаганов А.



2000

02

---//---



...

...

---//---



2000

12

---//---



Таблица 2. Информация об окладах в новой форме.

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

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

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

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

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

Игорь Орещенков


Компьютерная газета. Статья была опубликована в номере 19 за 2000 год в рубрике разное :: страна советов

©1997-2024 Компьютерная газета