Проектирование МБД обычно начинается с определения вопросов, с которыми конечные пользователи хотели бы обратиться к системе. Причем на этом этапе интерес представляют даже не сами тексты вопросов, а понимание того, о каких личностях, местах, событиях и объектах в них спрашивается.
Подразделение | Менеджер | Временной интервал | Вопрос |
Отдел | Петров | 3 года | На сколько процентов увеличились продажи "Жигулей" в Западном регионе после январской рекламной кампании в еженедельнике "Западный Вестник"? |
Финансовый отдел | Смирнов | 5 лет | Какие региональные подразделения превысили в третьем квартале запланированные расходы на командировки и как это соотносится с ростом их прибыли (в абсолютных и относительных величинах)? |
Коммерческий отдел | Левшин | 10 лет | Какие два варианта скидок наиболее эффективны в Западном регионе в летний период при продаже автомобилей "Жигули", на основе данных за последние 10 лет? |
Отдел развития бизнеса | Васильева | 5 лет | Как повлияло на объемы продаж открытие двух новых отделений в Южном регионе и на какой процент могут увеличиться продажи в Северном регионе, если в этом году там будет открыто 3 новых офиса? |
Таблица 4.4. Список потенциальных вопросов менеджеров фирмы
Рассмотрим в качестве примера вопрос сотрудника коммерческого отдела ("Какие два варианта скидок наиболее эффективны в Западном регионе в летний период при продаже автомобилей "Жигули", на основе данных за последние 10 лет?"). Как было сказано выше, на этом этапе мы не собираемся программировать этот вопрос, тем более, что инструментальные средства конечного пользователя, входящие в состав Oracle Express, позволят легко сформулировать его в интерактивном режиме, без написания строк кода. Сейчас нам важнее понять, какие данные должны быть в МБД, оценить временные интервалы, которые должны отражаться, понять трудоемкость и реальность подготовки и загрузки этих данных. После того как первичный анализ вопросов выполнен, и получено представление о том, какие данные потенциально могут выступать в качестве Показателей и Измерений, можно переходить к проектированию ее структуры - определению конкретных Измерений, их взаимосвязей и уровней агрегации хранимых данных.
Наименование информации | Временной интервал | Количество строк | Тип | Источник |
Месяц | 10 лет | 12 * 10 | Измерение | Оперативная система "Продажи", архив |
Регион | 10 лет | 5 | Измерение | Оперативная система "Продажи", архив |
Модель автомобиля | 10 лет | 200 | Измерение | Оперативная система "Продажи", архив |
Типы скидок | 10 лет | 4 | Измерение | Оперативная система "Продажи", архив |
Объем продаж в USD | 10 лет | 200 * 12 * 10 * 5 * 4 | Показатель | Оперативная система "Продажи", архив |
Таблица 4.5. Данные, необходимые для ответа на вопрос аналитика коммерческого отдела.
Если спросить пользователя, какой уровень детализации ему желателен, он не задумываясь ответит - максимально возможный. Однако стоит оценить, сколько такое решение может стоить, и попытаться определить возможный экономический эффект от наличия данных на каждом новом уровне детализации.
Например, выбрав в качестве уровня агрегации Год, вы получите возможность проанализировать общие тенденции автомобильного рынка и спрогнозировать динамику его развития. Выбрав же в качестве уровня агрегации Месяц или Неделю, вы, кроме того, сможете спрогнозировать спрос на конкретные модели в конкретные моменты времени. И хотя автомобили - товар не сезонный, скорее всего, весной и летом их покупают больше, чем осенью и зимой. Это позволит отследить возможные сезонные колебания, рациональнее формировать свой склад и более эффективно проводить политику формирования сезонных скидок и распродаж. А если в систему введена информация о затратах на маркетинг, появится возможность проследить эффект от каждого конкретного маркетингового мероприятия.
Выбор в качестве уровня агрегации Номер Контракта/Счета позволит перейти на качественно новый уровень анализа. На этом уровне можно будет учитывать взаимосвязи между конкретным Автомобилем, Менеджером и Покупателем. А поскольку при покупке автомобиля заполняется множество документов, то доступна достаточно детальная информация о каждом конкретном Покупателе (Возраст, Пол, Место жительства, Вид оплаты и т.д.). Теперь вы сможете проанализировать не только рынок, но и заглянуть внутрь своей фирмы и всесторонне проанализировать эффективность работы каждого Менеджера и Подразделения. Но наиболее ценное, что вы получаете, - это информация о Регионах и Покупателях. Например, вы не только сможете оценить, какие Модели автомобилей пользуются наибольшим спросом в конкретном регионе сегодня, но на основе анализа истории и структуры автомобильного рынка в более развитых, с точки зрения автомобилизации, регионах попытаться оценить динамику спроса и перспективы различных Моделей в остальных регионах.
Однако переход на каждый следующий уровень детализации и добавление новых источников данных могут привести к увеличению, иногда более чем на порядок, размера целевой МБД и соответствующему удорожанию и усложнению аппаратного решения.
Рассмотрим в качестве примера Показатель Объем продаж. Анализ предметной области показывает, что он однозначно определяется комбинацией четырех Измерений:
· {Год | Полугодие | Квартал | Месяц | Неделя | День | Счет}
· {Страна | Регион | Филиал | Менеджер}
· {Фирма-Производитель | Завод-Производитель | Модель Автомобиля}
· {Тип скидки}
Выбрав уровень детализации:
· День (365 * 10 = 3650 различных значений),
· Менеджер (300 различных значений),
· Модель Автомобиля (100 различных значений),
· Тип Скидки (4 различных значения),
получим куб, состоящий из 438000000 ячеек. Но в основе используемого в МСУБД способа хранения данных лежит предположение о том, что внутри, в данном случае четырехмерного гиперкуба, нет пустот. Данные в МСУБД представлены в виде разреженных матриц с заранее фиксированной размерностью. При этом значения Показателей хранятся в виде множества логически упорядоченных блоков (массивов), имеющих фиксированную длину, причем именно блок является минимальной индексируемой единицей.
Таким образом, в нашей БД будет сразу же зарезервировано место для всех 438 млн. значений Показателя Объем Продаж. Причем цифры "300 менеджеров" и "100 моделей автомобилей" вовсе не означают того, что сегодняшняя номенклатура фирмы - 100 различных моделей, которые продают 300 человек. Цифра 300 говорит о том, что в фирме за 10 лет ее существования работало 300 различных менеджеров. Сегодня же их может быть, например, всего 30.
Попробуем оценить, какой процент ячеек в нашем случае будет содержать реальные значения. Предположим, что в среднем в фирме постоянно работает около 30 менеджеров, менеджер продает в день 10 различных моделей и при продаже каждого автомобиля может быть использован только один вариант скидки. Тогда 3650 * 30 * 10 * 1 = 1095000. То есть только 0,25% ячеек куба будет содержать реальные значения данных. И хотя в МСУБД обычно предполагается, что блоки, полностью заполненные неопределенными значениями, не хранятся, как правило, это не обеспечивает полного решения проблемы.
Однако предположим, что мы решили остановиться на уровне детализации (агрегации) в один день, и теперь можем приступить к непосредственному описанию структур данных.
Имя | Дескриптор | Тип |
DAY MANAGER MODEL_CAR FIRMA_CAR DEPARTMENT REGION MONTH YEAR TIP_DISCOUNT TOTAL_COST INT_COST QUANTITY PROFIT WORK_TIME | День Менеджер Модель Автомобиля Фирма-Производитель Подразделение (Филиал) Регион Месяц Год Тип Скидки Объем продаж в USD Себестоимость проданных автомобилей Количество проданных единиц Доход Количество рабочих часов менеджера | Измерение Измерение Измерение Измерение Измерение Измерение Измерение Измерение Измерение Показатель Показатель Показатель Показатель Показатель |
Таблица 5.6. Перечень Измерений и Показателей, используемых в описываемом примере.
В Oracle Express Server предоставляются два альтернативных варианта описания структур данных.