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

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

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



?ых в SQL не объявляется максимально допустимое число строк [30].

Значения-мультимножества создаются путем использования специальной конструкции SQL:2003, называемой конструктором значений-мультимножеств (multiset value constructor). Эта конструкция определяется следующими синтаксическими правилами:

multiset_value_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. Использование мультимнож?/p>