Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

1.3.2.Структуры данных

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

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

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

Рис. 1.2. Примитивная схема структуризации данных в информационной системе

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

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

  • выдавать списки служащих по отделам;

  • поддерживать возможность перевода служащего из одного отдела в другой;

  • обеспечивать средства поддержки приема на работу новых служащих и увольнения работающих служащих, т. е. ввод и удаление данных о служащих.

Кроме того, для каждого отдела должна поддерживаться возможность получения:

  • имени руководителя отдела;

  • общей численности отдела;

  • общей суммы зарплаты служащих отдела, среднего размера зарплаты.

Для каждого служащего должна поддерживаться возможность получения:

  • номера удостоверения по полному имени служащего (для простоты допустим, что имена всех служащих различны);

  • полного имени по номеру удостоверения;

  • информации о соответствии служащего занимаемой должности и размере его зарплаты.

Предположим, что мы решили создать эту информационную систему на основе файла СЛУЖАЩИЕ, расширив базовые возможности файловой системы за счет специальной библиотеки функций. Поскольку минимальной информационной единицей в нашем случае является служащий, в этом файле должна содержаться одна запись для каждого служащего (см. Рис. 1.1. ). Чтобы можно было удовлетворить указанные выше требования, запись о служащем должна иметь следующие поля:

  • полное имя служащего (СЛЖ_ИМЯ);

  • номер его удостоверения (СЛЖ_НОМЕР);

  • данные о соответствии служащего занимаемой должности (СЛЖ_СТАТ = {«да», «нет»});

    Рис. 1.1. Структура файла СЛУЖАЩИЕ на уровне приложения

  • размер зарплаты (СЛЖ_ЗАРП);

  • номер отдела (СЛЖ_ОТД_НОМЕР).

Поскольку мы решили ограничиться одним файлом СЛУЖАЩИЕ, та же запись должна содержать имя руководителя отдела (СЛЖ_ОТД_РУК). Если мы этого поля не введем, то невозможно будет, например, получить имя руководителя отдела, в котором работает служащий.

Чтобы информационная система могла эффективно выполнять свои базовые функции, необходимо обеспечить многоключевой доступ к файлу СЛУЖАЩИЕ по уникальным ключам СЛЖ_ИМЯ и СЛЖ_НОМЕР. Ключ называется уникальным, если его значения гарантированно различны во всех записях файла. Если мы не сможем обеспечить многоключевой доступ к файлу СЛУЖАЩИЕ, то для выполнения наиболее часто используемых операций получения данных о конкретном служащем понадобится последовательный просмотр в среднем половины записей файла.

Кроме того, система должна обеспечить возможность эффективного выбора всех записей с общим значением СЛЖ_ОТД_НОМЕР, т. е. доступ по неуникальному ключу. Если не поддерживать данный механизм доступа, то для получения данных об отделе в целом, в общем случае потребуется полный просмотр файла.

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

Таким образом, мы видим, что при реализации даже такой простой информационной системы на базе файловой системы возникают следующие затруднения:

  • требуется создание сложной надстройки для многоключевого доступа к файлам;

  • возникает существенная избыточность данных (для каждого служащего повторяется номер и имя руководителя его отдела);

  • требуется выполнение массовой выборки и вычислений для получения суммарной информации об отделах.

Кроме того, если в ходе эксплуатации системы потребуется, например, обеспечить операцию выдачи списков служащих, получающих указанную зарплату, то для этого, либо придется полностью просматривать файл, либо нужно будет реструктурировать файл СЛУЖАЩИЕ, объявляя ключевым и поле СЛЖ_ЗАРП.

Для улучшения ситуации можно предложить поддержку двух многоключевых файлов: СЛУЖАЩИЕ и ОТДЕЛЫ. Первый файл при этом содержит поля СЛЖ_ИМЯ, СЛЖ_НОМЕР, СЛЖ_СТАТ, СЛЖ_ЗАРП и СЛЖ_ОТД_НОМЕР, а второй – ОТД_НОМЕР, ОТД_РУК (номер удостоверения служащего, являющегося руководителем отдела), ОТД_СЛЖ_ЗАРП (общий размер зарплаты служащих данного отдела) и ОТД_ЧИСЛ (общее число служащих в отделе). Структура этих файлов показана на Рис. 1.2. .

Рис. 1.2. Структура файлов СЛУЖАЩИЕ и ОТДЕЛЫ на уровне приложения

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

  • каждый из файлов содержал бы только не дублируемую информацию;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]