В разработанной расширенной модели данных иерархическая модель данных в варианте XML наложена как вторичная поверх реляционной. Это позволяет сохранить строгость реляционной модели и привнести в неё дополнительные преимущества иерархической модели, а также использовать для описания модели как реляционную алгебру, так и языки и стандарты платформы XML: XML [3], Relax NG [4], Schematron [5], DOM [6], XPath [7, 8], XQuery [9].
Основными структурными компонентами разработанной модели данных являются понятие, объект, экземпляр объекта, код экземпляра объекта, отображение.
Объекты соответствуют типам элементов XML-документа, экземпляры объектов – отдельным элементам, а понятия – атрибутам элементов. С другой точки зрения объекты соответствуют реляционным отношениям, экземпляры объектов – кортежам отношений, а понятия – атрибутам отношений (рис. 1).

Рис 1. Структурные компоненты модели данных
Для описания связей понятий с объектами, а также связей между объектами вводится ещё одна структура – отображение. Отображение включает схему дерева объектов и дерево экземпляров. Дерево объектов соответствует схеме ХML-документа и может быть описано с помощью языка Relax NG [4], а дерево экземпляров – множеству ХML-документов, удовлетворяющих этой схеме.
Базу данных предлагается моделировать как совокупность деревьев информационных объектов с горизонтальными связями и со специфичным для каждого объекта набором понятий.
Для идентификации отображений, объектов и понятий предлагается использовать уникальные в пределах базы данных короткие коды. Относительно этих кодов определяются ограничения це-лостности и операции.
Так как задачей является построение логической структуры с возможностью переструктуризации, то и иерархические связи, и горизонтальные связи реализуются только на основе значений понятий, таким образом, все связи являются информационными.
В код экземпляра помимо первичного позиционного ключа объекта, включаются также внешние ключи, ссылающиеся на экземпляры-предки данного экземпляра (рис. 2).

Рис. 2. Реализация иерархических связей
Горизонтальные связи реализуются пользователем с помощью механизмов пользовательских потенциальных и внешних ключей объектов.
В модели данных предусматриваются ограничения целостности: ограничения типов и понятий, ограничения объектов и ограничения базы данных. Ограничения целостности могут быть описаны с помощью языка Schematron [5]. Благодаря выбранной структуре кодов экземпляров, правила целостности сущностей и правила ссылочной целостности для иерархических связей поддерживаются автоматически.
В модели данных предлагается поддерживать не только спецификационные операции, но и навигационные операции манипулирования данными, так как они предоставляют большую гибкость и свободу в реализации конкретных задач. Навигационные операции соответствуют низкоуровневым операциям модели DOM [6] с некоторыми расширениями. Спецификационные операции соответствуют реляционной алгебре с расширением операций на деревья объектов. Спецификационные операции могут быть описаны с помощью языка XQuery [9].
Для логической переструктуризации дерева предлагаются механизмы ссылочных и виртуальных объектов.
В данной работе рассматривается аналитическая обработка данных в разработанной модели данных. Аналитическая обработка связана с получением многомерного представления данных, такое представление в свою очередь может быть описано древовидной структурой, то есть, основной структурой предложенной модели данных, поэтому интеграция аналитической обработки в модель данных выглядит целесообразной.
Конкретной задачей работы является представление механизма интеграции аналитической обработки в разработанную модель данных.
Аналитическую обработку предлагается выполняться в рамках одного отображения. Смысл аналитической обработки состоит в установлении функциональной зависимости множества Y, получаемого из множества значений одного понятия D, от множеств X1, X2, …, Xn, получаемых из множеств значений других понятий A1, A2, … An: Y(X1, X2, …, Xn). Под функциональной за-висимостью Y(X1, X2, …, Xn) понимается, что одному элементу x1i, x2i, … xni соответствует один и только один элемент yi.
Предполагается, что можно одновременно построить несколько функций от одних и тех аргу-ментов: Y1(X1, X2, … Xn), Y2(X1, X2, … Xn), …, Ym(X1, X2, … Xn), задав их на значениях понятий D1, D2, …, Dm и понятий A1, A2, … An.
Переменные X1, X2, … Xn являются независимыми, а переменная Y – зависимой. Зависимость может быть представлена в виде многомерного массива или гиперкуба. Независимые перемен-ные составляют размерность массива и называются измерениями. Значения зависимых пере-менных содержатся в ячейках массива и называются мерами (фактами).
Агрегирование
Одно значение понятия A может быть связано с 0, 1 или несколькими значениями понятия D. При построении функциональной зависимости Y(X) значения A, не связанные ни с одним зна-чением из D, могут быть отброшены, а оставшиеся значения A, в простейшем случае, могут об-разовать множество X. В более сложном варианте X может быть агрегировано из A, типичный пример – округление, при котором несколько A округляются до одного и того же X. Таким об-разом, устанавливается функциональная зависимость X=X(A) (рис. 3).
Для значений X, связанных с несколькими значением из D, проводится агрегирование этих зна-чений D в один элемент Y. Наиболее часто употребляемые варианты агрегирования – просто количество связанных значений (Num), их сумма (Sum), минимальное из значений (Min), мак-симальное из значений (Max), их среднее арифметическое (Mid). Таким образом, устанавлива-ется функциональная зависимость Y=Y(D) (рис. 3).

Рис. 3. Агрегация
В общем случае выражения аналитики могут использоваться:
для дополнительного преобразования значений А до их агрегирования в X;
для агрегирования значений А в X;
для дополнительного преобразования значений D до их агрегирования в Y.
В выражении можно пользоваться различными функциями, а также переменными, в частности переменной Z, содержащей значение текущего понятия.
Приведём два примера:
Если значения A представляют собой ширину, то каждое из них может быть умножено на дли-ну (однозначно определяемое значение некоторого понятия, связанного с A), затем произведе-ние может быть округлено до целочисленной величины и использовано в качестве X:
$int(Z * $$Get(”Length”))
Если значения из D находятся в строковом формате, то, для возможности их агрегации к сред-нему арифметическому, они предварительно должны быть преобразованы к числовому виду:
$select(Z=”ПЕРВАЯ”:1, Z=”ВТОРАЯ”:2, Z=”ТРЕТЬЯ”:3, 1:0)
Результаты
Как было отмечено ранее, зависимости функций Y1(X1, X2, …, Xn), Y2(X1, X2, …, Xn), …, Ym(X1, X2, …, Xn) могут быть представлены в виде многомерного массива. В данной работе предлага-ется записывать результаты аналитической обработки в массив вида:
Analytics(A1, x1, A2, x2, …, An, xn, D1) = y1
Analytics(A1, x1, A2, x2, …, An, xn, D2) = y2
Analytics(A1, x1, A2, x2, …, An, xn, Dm) = ym
Analytics(A1, x1, A2, x2, D1) = y1
Analytics(A1, x1, A2, x2, D2) = y2
Analytics(A1, x1, A2, x2, Dm) = ym
Analytics(A1, x1, D1) = y1
Analytics(A1, x1, D2) = y2
Analytics(A1, x1, Dm) = ym
Analytics(D1) = y1
Analytics(D2) = y2
Analytics(Dm) = ym
Здесь:
Аi – код понятия аналитического среза (измерения);
xi – значение понятия аналитического среза Аi;
Dj – код понятия анализируемого признака (меры);
yj – значение понятия анализируемого признака Dj.
Таким образом, в такой массив записываются не только значения, но и коды понятий.
Следует отметить, что если задать аналитические срезы как последовательность A1, A2, … An, то группировка будет производиться по следующим сочетаниям:
(A1, A2, … An)
(A1, A2, …)
…
(A1, A2)
(A1)
()
Соответственно, для каждого сочетания будут вычисляться анализируемые признаки.
Такой массив в свою очередь предлагается представлять в виде дерева:
В этом дереве A1, A2, … An являются кодами объектов, x1, x2, … xn – кодами экземпляров, D1, D2, … Dm – кодами понятий объектов, y1, y2, … ym – значениями понятий.
Таким образом, массив содержит как дерево объектов, так и дерево экземпляров, соответст-вующее этому дереву объектов.
Подобная структура называется физическим деревом, так как иерархическая организация дан-ных в ней представлена явно. Соответственно, предложенные ранее структуры определяют ло-гическое дерево, в котором иерархическая организация данных представляется с помощью ко-дов экземпляров.
По такому массиву может быть автоматически построено специальное отображение аналитики.
Рассмотрим пример.
Имеется объект АВ (поставки) с понятиями S (коды поставщиков), P (коды деталей), QTY (ко-личество поставок) (рис. 4).

Рис 4. Пример аналитической обработки
определить общее количество поставок по поставщикам и деталям;
определить общее количество поставок по поставщикам;
определить общее количество поставок.
В результате выполнения аналитического запроса будет создан следующий массив:
Analytics(”S”,”S1″,”P”,”P1″,”QTY”)=300
Analytics(”S”,”S1″,”P”,”P2″,”QTY”)=200
Analytics(”S”,”S1″,”QTY”)=500
Analytics(”S”,”S2″,”P”,”P1″,”QTY”)=300
Analytics(”S”,”S2″,”P”,”P2″,”QTY”)=400
Analytics(”S”,”S2″,”QTY”)=700
Analytics(”S”,”S3″,”P”,”P2″,”QTY”)=200
Analytics(”S”,”S3″,”QTY”)=200
Analytics(”S”,”S4″,”P”,”P2″,”QTY”)=200
Analytics(”S”,”S4″,”QTY”)=200
Analytics(”QTY”)=1600
Этот массив может быть представлен в виде отображения (рис. 5).

Рис. 5. Отображение аналитики
С помощью XQuery этот аналитический запрос может быть описан следующим образом:
let $view := doc(”view.xml”)
return
{
for $s in distinct-values($view//ab/@s)
order by $s
return
{
for $p in distinct-values($view//ab[@s = $s]/@p)
order by $p
return
}
}
В примере аналитические срезы и анализируемый признак заданы на понятиях одного объекта, однако в общем случае они могут задаваться на понятиях различных объектов, находящихся на различных уровнях иерархии.
3. Реализация
Предложенная модель данных является основой разработанного инструмента для построения и использования информационных систем qWORD-XML [12]. В инструменте аналитическую об-работку предлагается выполнять в рамках отображения (экранной формы). Отображение поми-мо всего прочего предоставляет собой визуальное средство для аналитической обработки дан-ных и для предоставления результатов этой обработки. Дополнительно предлагается возмож-ность предоставления результатов аналитической обработки в виде перекрёстной таблицы или в виде различных диаграмм.
Рассмотрим, реализацию описанного выше аналитического запроса. Исходные данные пред-ставлены в отображении на рис. 6.

Рис. 6. Отображение с исходными данных

Рис. 7. Аналитический запрос
Колонка A предназначена для пометки понятий, значения которых будут использованы в каче-стве аналитических срезов. Возможно задание сразу нескольких аналитических срезов (A1, A2 и т.д.). В данном случае первый срез A1 задаётся по кодам поставщиков (s), а второй A2 – по ко-дам деталей (p).
Колонка D предназначена для пометки понятий, значения которых будут использованы в каче-стве анализируемых признаков. В данном случае маркером D помечено понятие количество по-ставок (qty).
В колонках Num, Sum, Min, Max, Mid с помощью маркера Y выбирается, какие агрегирующие функции использовать – просто количество значений, их сумма, минимальное из значений, максимальное из значений, их среднее арифметическое. В данном случае подсчитывается сум-ма (Sum).
Колонка Аналитика предназначается для записи выражений аналитики.
Результаты расчёта аналитики записываются в многомерный массив (глобал). По такому мас-сиву может быть автоматически построено специальное отображение аналитики (рис. 8).

Рис. 8. Отображение с результатами аналитики
Кроме того, результаты расчёта аналитики могут быть представлены в виде перекрёстной таб-лицы (рис. 8) или в виде различных графических изображений (рис. 9).

Рис. 8. Перекрёстная таблица Рис. 9. Столбиковая диаграмма
С помощью предложенного механизма физического дерева, представляющего результаты аналитической обработки и совмещающего дерево объектов и дерево экземпляров в рамках единой структуры хранения, решается задача интеграции аналитической обработки данных в предложенную модель – по такому массиву может быть автоматически построено специальное отображение с результатами расчёта аналитики.
Благодаря реализованной модели данных, а также унификации хранения, обработки и пред-ставления данных, инструмент qWORD-XML представляет собой удобную среду для быстрой и простой разработки, простого сопровождения и использования информационных систем.
С помощью инструмента qWORD-XML были разработаны Автоматизированная информацион-но-аналитическая система по проблемам инвалидности и инвалидов (АИС МСЭ) и Информаци-онно-аналитическая система органов социальной защиты населения субъекта федерации (АИС «Соцзащита»).
1 Тимофеев Д.В. Использование платформы XML для описания расширенной реляционной модели данных RM/T. / В сб. науч. трудов Информационные технологии и системы (управление, экономика, транспорт) под ред. Истомина Е.П, Марлея В.Е., Скобелевой И.П. – СПб.: ООО «Андреевский издательский дом», 2006. – с. 137-145.
2 Кодд Э.Ф. Расширение реляционной модели для лучшего отражения семантики. http://www.osp.ru/dbms/1996/05/163.htm
3 Extensible Markup Language (XML) 1.0. http://www.w3.org/TR/REC-xml/
4 Relax NG. http://relaxng.org/
5 The Schematron. http://xml.ascc.net/resource/schematron/
6 Document Object Model (DOM). http://www.w3.org/DOM/
7 XML Path Language (XPath) Version 1.0. http://www.w3.org/TR/xpath
8 XML Path Language (XPath) 2.0. http://www.w3.org/TR/xpath20/
9 XQuery 1.0: An XML Query Language. http://www.w3.org/TR/xquery/
10 Баргесян А.А. и др. Методы и модели анализа данных: OLAP и Data Mining. – СПб.: БХВ-Петербург, 2004. – 336 с.
11 Тимофеев Д.В. Реализация логической переструктуризации в интерпретации расширенной реляционной модели данных RM/T
12 Долженков А., Тимофеев Д. Семантический инструмент построения баз данных. «Открытые системы», №01/2006