Н. 3. Елманова. C++Builder 3.0, архитектура "клиент/сервер" и Internet
Рис. 6.12. Окончательный вид диаграммы после установки параметров изображения
6.2     Использование компонентов Decision Support System
Информационные системы масштаба предприятия, как правило, содержат несколько автоматизированных рабочих мест для различных категорий пользователей. Особое место среди них занимают приложения, применяемые менеджерами высшего звена и руководителями различных уровней и предназначенные, как правило, для комплексного многомерного анализа данных, их динамики, тенденций и в конечном итоге - для содействия принятию решений. Такие приложения, как правило, отличаются по своему интерфейсу Тэт обычных автоматизированных рабочих мест, предназначенных для ввода данных, и в большинстве случаев обладают средствами получения агрегатных данных (сумм, средних, максимальных и минимальных значений для различных выборок), а также деловой графики.
Отметим также, что во многих случаях число пользователей таких приложений (иногда они называются системами поддержки принятия решений) в корпоративной информационной системе невелико по сравнению с числом пользователей стандартных автоматизированных рабочих мест, а рабочее время таких пользователей ценится обычно весьма высоко, по-
114
Новые компоненты для работы с базами данных
этому требования к функциональности и удобству применения таких приложений намного более важны, чем минимизация их ресурсоемкости.
В C++Builder 3 среди компонентов, связанных с исттользоТв'анием баз данных, имеется группа компонентов Decision Cube для создания систем поддержки принятия решений. Их работа базируется на компоненте TDecisionCube, обеспечивающем доступ к набору многомерных кросс-таблиц, содержащих агрегатные данные, вычисленные на основе какого-либо запроса или таблицы. Рассмотрим их использование более подробно.
6.2.1   Немного теории
Прежде чем приступить к описанию собственно использования этих компонентов, рассмотрим, что же представляет собой многомерная кросс-таблица. Возьмем простой пример из более или менее известной читателям предметной области. Представим себе мебельный магазин, в котором работают продавцы Саня, Ваня и Маня. Рассмотрим таблицу, регистрирующую их продажи (табл. 6.1). Таблица 6.1. Продажи гипотетического мебельного магазина
Sale date	Salesman	Пет	°ayment	аау method	Yendor
01.04.98	Саня	Стол	500	1ал.	ЗАО "Московские опилки"
01.04.98	Заня	Стул	600	Б/н	ТОО "Подмосковная стружка"
02.04.98	Заня	Икаф	800	Б/н	ЗАО "Московские опилки"
03.04.98	Маня	Стол	1100	Нал.	ТОО "Подмосковная стружка'
03.04.98	Маня	Стул	500	Б/н	ОАО "Курский лесоруб"
03.04.98	Саня	Стол	800	Б/н	ОАО "Курский лесоруб"
03.04.98	Маня	Стол	2400	Нал.	ТОО "Подмосковная стружка
03.04.98	Саня	Стул	400	Нал.	ЗАО "Московские опилки"
04.04.98	Маня	Шкаф	1200	Б/н	ЗАО "Московские опилки"
04.04.98	Саня	Шкаф	2700	Б/н	ТОО "Подмосковная стружка
05.04.98	Саня	Стул	100	Нал.	ТОО "Подмосковная стружка
Что могут представлять собой агрегатные данные, полученные на основе такой таблицы? Обычно это ответы на вопросы типа: "На какую сумму продал стулья с 1 по 5 апреля продавец Саня?" или "Сколько стульев продал Ваня?" Таблица, содержащая такие данные, обычно называется кросс-таблицей или перекрестной таблицей. Типичный пример кросс-таблицы, содержащий в ячейках ответы на вопросы, подобные первому из приведен-
115