Скачиваний:
28
Добавлен:
01.05.2014
Размер:
356.35 Кб
Скачать

6.6. Программа, выполняющая запросы к базе данных

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

Состояния как виртуальные базы данных

В начале сеанса работы пользователя с программой, выполняющей запросы к базе данных со сведениями о бумаге, база данных ассоциируется с состоянием, названным «бумага». Когда пользователь вводит запрос, требуя выдачи сведений об определенных позициях ведомости с информацией о бумаге, удовлетворяющих заданным критериям, то автоматически вводится новое состояние, являющееся потомком состояния «бумага». С новым состоянием связываются критерии выбора, введенные пользователем. Новое состояние выступает в роли виртуальной базы данных, подвергая исходную базу данных "фильтрации" в соответствии с заданными критериями выбора. Когда к новому состоянию посылается запрос об определенных позициях ведомости со сведениями о бумаге, то выдается информация только о тех позициях, которые удовлетворяют критериям выбора. Это станет болee ясно, если рассмотреть пример.

Пусть в самом верхнем состоянии (т.e. в состоянии «бумага») имеются позиции базы данных с цветами голубой, красный, белый и бежевый. IIoльзователь пишет запрос, в котором указывает, что хочет просмотреть сведения только о бумаге красного цвета В результате этого запроса порождается к состояние-потомок состояния «бумага», названное, к примеру, «красная .бумага». Новое состояние «красная—бумага» содержит критерии выбора, согласно которому атрибут цвета должен иметь значение (" красный». Эта ситуация показана на рис. 6,7:

Если пользователь захочет просмотреть позиции ведомости, выдавая запрос к cocтоянию «бумага», то на печать, будут выведены все позиции базы данных Но если запрос будет обращен к состоянию «красная__бумага», то будут выведены только сведения о бумаге красного цвета.

Предположим, что пользователь адресует запрос к состоянию «красная бумага», указывая при этом на необходимость получения сведений только о бумаге с гладкой поверх-ностью. В результате данного запроса образуется состояние «гладкая_крас-ная__бумага», порождаемое состоянием «красная_бумага». Состояние «гладкая_красная_бумага» содержит критерий выбора, в соответствии с которым атрибут, характеризующий поверхность бумаги, должен иметь значение «гладкая''). Это новое состояние наследует все критерии выбора своих состояний-предков, так что если пользователь захочет просмотреть позиции ведомости, обратившись к состоянию «гладкая_красная_бумага», то на печать будут выданы сведения только о гладкой красной бумаге.

Состояния образуют "историю" сеанса работы

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

Соседние файлы в папке Гл.6,7,Прилож.,Допол