Использование теории мультимножеств в процессе построения UFO-моделей

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

Для того чтобы скачать эту работу.
1. Подтвердите что Вы не робот:
2. И нажмите на эту кнопку.
закрыть



ue_constructor ::= multiset_value_constructor_by_enumeration> | multiset_value_constructor_by_query> | table_value_constructor_by_query

multiset_value_constructor_by_enumeration ::= MULTISET left_bracket value_expression_commalist right_bracket _value_constructor_by_query ::= MULTISET ( query_expression) _value_constructor_by_query ::= TABLE ( query_expression> )

 

Например, следующие выражения являются допустимыми значениями-мультимножествами: MULTISET [14, 16, 17] или MULTISET (SELECT DEPT_NO FROM EMP). Второй случай демонстрирует возможность преобразования таблицы в мультимножество.

Допускается и использование значения-мультимножества в качестве ссылки на таблицу в разделе FROM запроса. Для этого к значению-мультимножеству применяется операция UNNEST. Вот простой пример допустимого запроса:

 

SELECT T.A, T.A + 2 AS PLUS_TWO UNNEST(MULITISET [14,16,17]) AS T(A)

 

В результате выполнения запроса будет получена таблица 1.1.

Таблица 1.1 - Результат выполнения запроса

A PLUS_TWO 14 16 16 18 17 19

Для типов мультимножеств поддерживаются операции для преобразования типа значения-мультимножества к типу массивов или другому типу мультимножеств с совместимым типом элементов (операция CAST), для удаления дубликатов из мультимножества (функция SET), для определения числа элементов в заданном мультимножестве (функция CARDINALITY), для выборки элемента мультимножества, содержащего в точности один элемент (функция ELEMENT). Кроме того, для мультимножеств обеспечиваются операции объединения (MULTISET UNION), пересечения (MULTISET INTERSECT) и определения разности (MULTISET EXCEPT). Каждая из операций может выполняться в режиме с сохранением дубликатов (режим ALL) или с устранением дубликатов (режим DISTINCT).

Наконец, введены три новые агрегатные функции. Агрегатная функция COLLECT создает мультимножество из значений аргумента в каждой строке группы строк. Функция FUSION производит объединение значений-мультимножеств из всех строк группы строк. Функция INTERSECT производит пересечение значений-мультимножеств из всех строк группы строк. Покажем на простом примере, как работают эти агрегатные функции. Пусть имеется таблица PROGRAMMERS следующего вида:

 

Таблица 1.2 - Данные о программистах

PROGRAMMER FAVOURITE_LANGUAGES Smith MULTISET [Java, Pascal, Perl] Brown MULTISET [Python, C++, Java] Scott MULTISET [Python, Java] Тогда в результате запроса

 

SELECT COLLECT(PROGRAMMER) AS ALL_PROGRAMMERS, FUSION(FAVOURITE_LANGUAGES) AS ALL_LANGUAGES INTERSECT(FAVOURITE_LANGUAGES) AS COMMON_LANGUAGES

FROM PROGRAMMERS

 

будет получена таблица 1.3 с одной строкой, все три столбца которой содержат значения-мультимножества.

 

Таблица 1.3 - Результат выборки

ALL_PROGRAMMERS ALL_LANGUAGES COMMON_LANGUAGES MULTISET [Smith, Brown Scott MULTISET [Java, Pascal, Perl Python, C++, Java Python, Java] MULTISET [Java]

При использовании мультимножеств в условных выражениях можно применять следующие предикаты:

сравнения по равенству (=);

сравнения по неравенству (<>);

проверки того, что заданное значение является элементом мультимножества (MEMBER);

проверки того, что одно мультимножество входит в другое мультимножество (SUBMULTISET);

проверки того, что мультимножество содержит дубликаты (IS A SET).

Рассмотрим, почему отмеченные расширенные возможности работы с типами коллекций считаются принципиально важными.

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

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

Другой вопрос, принесут ли эти новые возможности существенную практическую пользу разработчикам и пользователям SQL-ориентированных баз данных? Как это обычно бывает в случае SQL, на этот вопрос трудно ответить однозначно. Скорее всего, большинство разработчиков, традиционно работающих в SQL-среде, просто не будет использовать новые средства, как не использует и объектно-реляционные расширения SQL. Но возможно, что расширенная поддержка типов коллекций привлечет к SQL-ориентированным СУБД новую категорию разработчиков и пользователей из числа, например, тех, которые традиционно использовали объектно-ориентированную или какую-либо другую среду, отличную от SQL [31].

 

.5 Постановка задачи

 

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

Целью данной магистерской аттестационной работы является исследование возможности использования теории мультимножеств в процессе построения UFO-моделей.

Достижение указанной цели связано с решением трех основных задач:

осуществление формального описания UFO-моделей и операций над ними средствами теории мультимножеств;

применение полученных результатов в процессе UFO-моделирования организационной системы;

представление UFO-моделей как мультимножеств и операций над ними в табличном процессоре Microsoft Excel.

 

 

2. Использование мультимножеств для представления UFO-моделей и

операций над ними

 

.1 UFO-модель как мультимножество

 

Пусть задана библиотека систем L = {S1, S2, S3, S4, S5} (рис. 2.1).

 

Рисунок 2.1 - Библиотека из пяти систем

 

Используя библиотеку L, можно собрать некоторую систему S, для которой элементы L будут являться подсистемами (рис. 2.2).

 

Рисунок 2.2 - Пример системы из шести подсистем

 

Формально система S является мультимножеством [32]

 

S = {3*S1, 1*S2, 1*S3, 1*S4, 0*S5} = {3*S1, 1*S2, 1*S3, 1*S4},

 

порожденным обычным множеством L = {S1, S2, S3, S4, S5}.

Носителем системы S является обычное множество Supp S = {S1, S2, S3, S4}. Мощность системы S равна |S| = 6, а ее размерность равна /S/ = 4.

В общем виде задается библиотека систем L = {S1, S2, …, Sm} (рис. 2.3).

Рисунок 2.3 - Библиотека систем

 

Используя библиотеку L, можно собрать некоторую систему S, для которой элементы L будут являться подсистемами (рис. 2.4).

 

Рисунок 2.4 - Пример системы

 

Формально система S является мультимножеством

= {ki1*Si1, ki2*Si2, …, ki,j*Si,j, ki,j+1*Si,j+1, …, ki,q-1*Si,q-1, ki,q*Si,q},

 

порожденным обычным множеством L = {S1, S2, …, Sm}.

Носителем системы S является обычное множество

 

Supp S = {Si1, Si2, …, Si,j, Si,j+1, …, Si,q-1, Si,q}.

 

Мощность системы S равна

 

|S| = ki1 + ki2 + … + ki,j + ki,j+1 + … + ki,q-1 + ki,q,

 

а ее размерность равна /S/ = q.

 

2.2 Операции над UFO-моделями как мультимножествами

 

.2.1 Объединение UFO-моделей

Рассмотрим фрагмент некоторой системы S1 (рис. 2.5), состоящей из подсистем S1, S2 и S3.

 

Рисунок 2.5 - Фрагмент системы S1

 

Рассмотрим также фрагмент некоторой другой системы S2 (рис. 2.6), состоящей из подсистем S1 и S4.

 

Рисунок 2.6 - Фрагмент системы S2

 

Формально система S1 является мультимножеством

= {…, 2*S1, 1*S2, 1*S3, …},

 

а система S2 является мультимножеством

= {…, 1*S1, 1*S4, …}.

 

Формальное объединение систем S1 и S2 дает некоторую систему S3:

S3 = S1 S2 = {…, 2*S1, 1*S2, 1*S3, 1*S4, …},

 

изображенную на рис. 2.7.

 

Рисунок 2.7 - Фрагмент системы S3

 

Содержательно такую операцию объединения систем S1 и S2 можно трактовать как попытку создания системы S3, которая будет выполнять функции как системы S1 так системы и S2 за счет увеличения нагрузки на некоторые подсистемы, общие для систем S1 и S2. Действительно, при таком объединении систем входы и выходы системы S3 являются объединением входов и выходов систем S1 и S2. Но при этом на одну из подсистем S1, общую для систем S1 и S2, ложится дополнительная нагрузка на выход b (на рис. 2.7 это показано жирной точкой).

 

.2.2 Пересечение UFO-моделей

Рассмотрим фрагмент некоторой системы S4 (рис. 2.8), состоящей из подсистем S1 - S7.

 

Рисунок 2.8 - Фрагмент системы S4

 

Рассмотрим также фрагмент некоторой другой системы S5 (рис. 2.9), состоящей из подсистем S1 - S4, S8 - S10.

 

Рисунок 2.9 - Фрагмент системы S5

 

Формально система S4 является мультимножеством

 

S4 = {…, 3*S1, 1*S2, 1*S3, 1*S4, 1*S5, 1*S6, 1*S7, …},

 

а система S5 является мультимножеством

= {…, 1*S1, 1*S2, 1*S3, 2*S4, 1*S8, 1*S9, 1*S10, …}.

 

Формальное пересечение систем S4 и S5 дает некоторую систему S6:

S6 = S4 S5 = {…, 1*S1, 1*S2, 1*S3, 1*S4, …},

 

изображенную