Системный анализ предметной области

С точки зрения проектирования БД в рамках системного анализа, необходи­мо провести подробное словесное описание объектов предметной области и реальных связей, которые присутствуют между описываемыми объектами. Желательно, чтобы данное описание позволяло кор­ректно определить все взаимосвязи между объектами предметной области.

В общем случае существуют два подхода к выбору состава и структуры пред­метной области:

1. Функциональный подход — он реализует принцип движения «от задач» и при­меняется тогда, когда заранее известны функции некоторой группы лиц и комплексов задач, для обслуживания информационных потребностей кото­рых создается рассматриваемая БД. В этом случае мы можем четко выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.

2. Предметный подход — когда информационные потребности будущих пользо­вателей БД жестко не фиксируются. Они могут быть многоаспектными и весьма динамичными. Мы не можем точно выделить минимальный набор объектов предметной области, которые необходимо описывать. В описание предметной области в этом случае включаются такие объекты и взаимосвязи, которые наиболее характерны и наиболее существенны для нее. БД, кон­струируемая при этом, называется предметной, то есть она может бытьиспользована при решении множества разнообразных, заранее не определен­ных задач. Конструирование предметной БД в кажется более заманчивым, однако трудность всеобщего охвата предметной об­ласти с невозможностью конкретизации потребностей пользователей может привести к избыточно сложной схеме БД, которая для конкретных задач бу­дет неэффективной.

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

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

Пример описания предметной области

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

1) уникальный шифр;

2) название;

3) фамилии авторов(могут отсутствовать);

4) место издания(город);

5) издательство;

6) год издания;

7) количество страниц;

8) стоимость книги;

9) количество экземпляров книги в библиотеке.

Книги могут иметь одинаковые названия, но они различаются по своему уни­кальному шифру (ISBN).

В библиотеке ведется картотека читателей. На каждого читателя в картотеку заносятся следующие сведения:

1) фамилия, имя, отчество;

2) домашний адрес;

3) телефон (будем считать, что у нас два телефона — рабочий и домашний);

4) дата рождения.

5) каждому читателю присваивается уникальный номер читательского билета.

6) каждый читатель может одновременно держать на руках не более 5 книг.

7) читатель не должен одновременно держать более одного экземпляра книги одного названия.

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

1) уникальный инвентарный номер;

2) шифр книги, который совпадает с уникальным шифром из описания книг;

3) место размещения в библиотеке.

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

1) номер билета читателя, который взял книгу;

2) дата выдачи книги;

3) дата возврата.

Предусмотреть следующие ограничения на информацию в системе:

Книга может не иметь ни одного автора.

В библиотеке должны быть записаны читатели не моложе 17 лет.

В библиотеке присутствуют книги, изданные начиная с 1960 по текущий год.

Каждый читатель может держать на руках не более 5 книг.

Каждый читатель при регистрации в библиотеке должен дать телефон для связи: он может быть рабочим или домашним.

Каждая область знаний может содержать ссылки на множество книг, но каждая книга может относиться к различным областям знаний.

В данной информационной системе должны работать следующие группы пользователей:

1) библиотекари;

2) читатели;

3) администрация библиотеки.

При работе с системой библиотекарь должен иметь возможность решать следующие задачи:

1. Принимать новые книги и регистрировать их в библиотеке.

2. Относить книги к одной или к нескольким областям знаний.

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

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

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

6. Вести учет выданных книг читателям, при этом предполагается два режима работы: выдача книг читателю и прием от пего возвращаемых им книг обрат­но в библиотеку. При выдаче книг фиксируется, когда и какой экземпляр книги был выдан данному читателю, к какому сроку читатель должен вер­нуть этот экземпляр книги. При выдаче книг наличие свободного экземпля­ра и его конкретный номер могут определяться по заданному уникальному шифру книги или инвентарный номер может быть известен заранее. Не требуется вести «историю» чтения книг, то есть требуется отражать только теку­щее состояние библиотеки. При приеме книги, возвращаемой читателем, про­веряется соответствие возвращаемого инвентарного номера книги выданному инвентарному номеру, и она ставится на свое старое место на полку библиотеки.

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

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

Читатель должен иметь возможность решать следующие задачи:

1. Просматривать системный каталог, то есть перечень всех областей знаний, книги по которым есть в библиотеке.

2. По выбранной области знаний получить полный перечень книг, которые чис­лятся в библиотеке.

3. Для выбранной книги получить инвентарный номер свободного экземпляра книги или сообщение о том, что свободных экземпляров книги нет. В случае отсутствия свободных экземпляров книги читатель должен иметь возмож­ность узнать дату ближайшего предполагаемого возврата экземпляра данной книги. Читатель не может узнать данные о том, у кого в настоящий момент экземпляры данной книги находятся на руках (в целях обеспечения личной безопасности держателей требуемой книги).

4. Для выбранного автора получить список книг, которые числятся в библиотеке.

Администрация библиотеки должна иметь возможность получать:

сведения о долж­никах - читателях библиотеки, которые не вернули вовремя взятые книги;

све­дения о книгах, которые не являются популярными, т. е. ни один экземпляр которых не находится на руках у читателей;

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

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

Этот совсем небольшой пример показывает, что перед началом разработки необходимо иметь точное представление о том, что же должно выполняться в информационной системе, какие пользователи в ней будут работать, какие задачи будет решать каждый пользователь. И это правильно, ведь когда мы строим здание, мы заранее предполагаем: для каких целей оно предназначено, в каком климате оно будет стоять, на какой почве, и в зависимости от этого проектировщики предлагает нам тот или иной проект. Но, к сожалению, очень часто по отношению к базам данных считается, что все можно определить потом, когда часть системы уже создана. Отсутствие четких целей создания БД может свести на нет все усилия разработчиков, и проект БД получится «плохим», не соответствующим ни реально моделируемому объекту, ни задачам, котрые должны решаться с использованием данной БД.