Назначение и области применения систем с базами данных. Файловые системы обработки данных, страница 2

В шкафах и папках отдела хранится и другая информация: копии контрактов, досье производителей и пр.

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

Что это за задачи? Например, ежеквартально начальник отдела должен получить отчёт об участии сотрудников в заключении контрактов, например, в виде:

ОТЧЁТ

о работе сотрудников отдела закупок

III квартал 2002 г

ФИО

Всего контрактов

Сумма (тыс. руб.)

Макс.

Мин.

Иванов И.И.

8

200

50

10

Петров П.П.

Чтобы получить такой отчёт, нужно иметь список сотрудников, участвующих в заключении контрактов, и реестр контрактов. Алгоритм очевиден.

1) Выбрать из реестра контрактов все записи о контрактах, заключённых в III квартале 2002 г.

2) Установить указатель в первую строку списка сотрудников.

3) Установить указатель в первую строку таблицы отчёта.

4) Перенести в текущую строку отчёта значение фамилии из текущей строки списка.

5) Выбрать из результата шага 1) все записи, содержащие зафиксированное значение фамилии.

6) Подсчитать число записей, полученных на шаге 5) и поместить результат в поле Всего контрактов текущей строки отчёта.

7) Во множестве значений поля Сумма, полученном на шаге 5), найти максимальное и минимальное значения и поместить результат в соответствующие поля текущей строки отчёта.

8) Просуммировать значения этого поля и поместить результат в поле Сумма текущей строки отчёта.

9) Если список сотрудников не исчерпан, то переместить на одну позицию указатели в списке и отчёте и вернуться к шагу 5), иначе закончить.

Каждое подразделение организации может производить периодически или по требованию руководства множество подобных отчётов.

Кроме отчётов стандартных форм в оперативной работе отдела могут понадобиться данные с произвольной совокупностью значений поисковых признаков. Например,

обо всех контрактах заданного производителя;

обо всех видах продукции данного производителя;

обо всех производителях данного вида продукции;

обо всех контрактах на закупку указанного вида продукции;

о контрактах, заключённых при участии Иванова И.И. с производителем «Рога и копыта»

И Т.Д.

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

Во-первых, это проблема поддержания целостности наших данных.

Например, пусть продукция А производится производителями П1, П2 и П3. Именно это и указано в соответствующей карточке продукции.

Код продукции

Наименование продукции

Производитель

Описание

16

А

П1, П2, П3

161

АА

П11, П43

Однако в реестре контрактов встречается строка

Код контр.

Дата закл.

Производитель

Продукция

Сумма

Ответственный

123

03/02/02

П11

А

Колюшкин К.К.

Продукт А производит также и П11? Тогда почему это не отражено в картотеке?

Создавая запись о контракте, Колюшкин хотел написать П1, а его рука автоматически написала две единицы?

Или на самом деле контракт 123 предусматривает поставки продукта АА, который действительно производит П11?

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

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