СПОСОБ УПРАВЛЕНИЯ РЕЛЯЦИОННОЙ СИСТЕМОЙ БАЗЫ ДАННЫХ Российский патент 2011 года по МПК G06F17/30 

Описание патента на изобретение RU2419862C2

Изобретение относится к способу управления реляционной системой базы данных, причем оператор запроса, который составлен из ключевых слов, сначала анализируется с применением рекурсивной сети переходов (RTN), и ключевым словам или группам ключевых слов ставятся в соответствие свойства, релевантные для обработки в заданной оператором последовательности, и затем преобразуются в управляющие команды, которые, при необходимости, оптимизируются.

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

Преобладающая часть реляционных систем баз данных базируется на SQL, который, несмотря на свою очень широкую распространенность и свое постоянное дальнейшее развитие, при сложных запросах приводит к трудностям в формулировании оператора запроса и из-за грамматически ограниченной степени свободы приводит к излишне сложному описанию проблемы и вытекающему отсюда неоптимальному коду доступа, который ведет к обработке, требующей интенсивной работы процессора, большого объема памяти и доступа к жесткому диску.

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

Эта относительная ограниченность в применении SQL обусловлена лежащей в его основе логики рекурсивной сети переходов (RTN), обработка которой происходит вдоль заданного графа решений, который предусматривает фиксированную или в основном фиксированную последовательность ключевых слов и возможность рекурсивной вставки всего графа решений в определенные позиции решений, причем после каждого ключевого слова допускается ограниченный выбор ключевых слов. На основе этой заданной последовательности может описываться обработка оператора только посредством вложенных или цепочечных полных процедур всего графа решений, причем специально в SQL, ОQL и т.п. на основе обусловленной графом решений последовательности обеспечивается возможность обработки определенных блоков обработки, но введение новых, особенно свободно выбираемых и повторяемых по их последовательности блоков обработки невозможно.

Несмотря на то что SQL с вышеописанными, имеющимися естественным образом RTN-ограничениями создан как полностью основанный на turing-принципе, на практике относительно много запросов даже для экспертов являются очень трудно преобразуемыми и зачастую обуславливают тем самым очень длительное время обработки по сравнению с теоретически возможным временем обработки, которое не достижимо из-за недопустимой для SQL, ввиду RTN степени свободы в формулировании и применении операторов запроса.

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

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

Чтобы гарантировать легкую применимость, соответствующий изобретению способ должен также быть хорошо представимым на графической поверхности.

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

В соответствии с изобретением это достигается тем, что

формируют RTN из независимых один от другого RTN-компонентов, причем каждый RTN-компонент имеет внутренний, направленный граф решений, который определен независимо от внутренних, направленных графов решений другого RTN-компонента, с, по меньшей мере, одной позицией решения вдоль, по меньшей мере, одного пути решения,

на шаге выбора проходят внутренние графы решений всех RTN-компонентов на основе ключевых слов и следуют всем возможным путям этих графов решений до тех пор, пока не будет установлено отсутствие согласования с соответствующим выбранным путем посредством графа решения, и процесс прерывают, или соответственно выбранный путь проходят до конца,

причем, по меньшей мере, часть пути решений в, по меньшей мере, одной из позиций решений имеет рекурсивную функцию вызова, посредством которой один из RTN-компонентов проходят, как результат применения шага выбора к совокупности RTN-компонентов, так что обеспечивается возможность произвольно частого рекурсивно вложенного выполнения шага выбора, исходя из, по меньшей мере, одной из позиций решений,

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

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

Таким образом, можно отказаться от применявшейся до сих пор высокой степени структурирования в языках запросов, таких как SQL, OOL и т.п, с заданными областями обработки и последовательностями обработки, как SELECT (выбрать), FROM (из), WHERE (где), GROUP BY (группировать по), HAVING (учитывая), ORDER BY (упорядочить по), LIMIT (ограничить), UNION (объединение). Посредством этой применяемой в SQL модели, где в FROM-части запроса формируются декартовы продукты, в WHERE-части вычеркиваются определенные строки декартовых продуктов, в GROUP BY-части выполняется компоновка по определенным полям данных, в HAVING-части на основе результатов групповых вычислений определенные строки вычеркиваются, посредством ORDER BY выполняется сортировка и посредством UNION или других связанных с множествами операций множества связываются по определенным критериям, хотя и достигается требуемая Turing-полнота, так что все связанные с данными, разрешимые проблемы теоретически могут быть сформулированы, однако на практике это не достигается из-за слишком высокой сложности, в зависимости от компетенции пользователя, уже в случае задач от средней до высокой трудности. К тому же большинство всех возможных запросов, хотя и являются формулируемыми для экспертов, однако они лишь с большими трудностями могут быть расчленены на заданные области обработки, потому что это невозможно иным образом, ввиду заданного структурирования и последовательности, например, в случае SQL. Поскольку, ввиду малого количества областей обработки, во многих случаях невозможно предложить прямой путь обработки множеств, остается предоставить предусмотренному для этой цели оптимизатору попытаться избежать многих из худших путей и для соответственно применимого описания определить лучший путь по сравнению с теоретически наилучшим возможным путем, хотя он иной раз сильно отклоняется от последнего.

Другие варианты осуществления изобретения представлены в зависимых пунктах формулы изобретения. Далее изобретение более подробно поясняется на примерах выполнения, иллюстрируемых чертежами, на которых представлено следующее:

Фиг.1 - схематичное представление компонентов SQL-RTN согласно уровню техники;

Фиг.2 - схематичное представление RTN-компонентов, лежащих в основе формы выполнения соответствующего изобретению способа;

Фиг.3, 4, 5 - соответствующие схематичные представления RTN-компонента, согласно соответствующему изобретению способу;

Фиг.6 - схематичное представление RTN-компонентов, лежащих в основе другой формы выполнения соответствующего изобретению способа;

Фиг.7 - схематичное представление вложения RTN-компонентов, согласно форме выполнения соответствующего изобретению способа;

Фиг.8, 9, 10, 11, 12, 13 - соответствующие схематичные представления назначений входных множеств для различных вложений RTN-компонентов или особых форм, как они находят применение в формах выполнения соответствующего изобретению способа;

Фиг.14, 15, 16, 17 - соответствующие схематичные представления вариантов группирования RTN-компонентов, как они находят применение в формах выполнения соответствующего изобретению способа;

Два очень простых примера должны наглядным образом пояснить это.

Пусть дана таблица “Firmen” (фирмы), которая содержит, по меньшей мере, поля “Firmenname” (наименование фирмы) и “Ort” (местоположение).

Пример 1

Первый вопрос: Все фирмы из мест с более чем 100 фирмами.

Возможность описания в SQL (уровень техники).

Берется множество фирм, скомпонованное по каждому месту, и отмечаются только места, в которых имеется больше чем 100 фирм. Это множество связывается с множеством фирм декартовым способом, и берутся только фирмы, у которых поле «место» также находится во множестве с местами с более чем со 100 фирмами.

Недостаток: Множество мест должно быть сохранено, и множество фирм должно дважды проходиться и один раз сравниваться с местами.

Возможность описания с гибкими RTN-компонентами согласно соответствующему изобретению способу:

Берется множество фирм, для каждой фирмы, для соответствующего места просматривается, находится ли в этом месте более чем 100 фирм. Найденные фирмы выдаются. Обработка с помощью оптимизатора, естественно, формулируется существенно лучшим образом.

Пример 2

Второй вопрос: Из каждого места 100 любых фирм

Возможность описания в SQL (уровень техники)

Множество фирм пронумеровать сквозным образом, на каждое место начинать с 1, это сохранить в некотором множестве, и из этого множества выбрать все элементы, у которых нумерация <= 100.

Возможность описания с гибкими RTN-компонентами согласно соответствующему изобретению способу:

Берется множество фирм из соответствующей таблицы, обозначается BREAKON (разбить на группы), чтобы последующие функции применялись к соответствующим фирмам из того же самого места, таким образом, к ПЕРВЫМ 100 фирмам из каждого места.

Фиг.1 показывает упрощенный граф решений согласно уровню техники для указания SELECT (выбрать) на языке запроса SQL, из которого схематично наглядно видна структура RTN для SQL.

Каждый оператор запроса образован из фиксировано заданной последовательности принудительно следующих друг за другом областей обработки 40, 41, 42, 43, 44, 45 с ключевыми словами 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, причем в позициях решения 10, 11, 12, 13 - ради простоты показаны только для вводящих ключевых слов 24, 26, 28, 30 областей обработки 42, 43, 44 и 45 - может делаться вполне определенный выбор на ключевых словах, чтобы получить желательный результат запроса. Определенная группировка ключевых слов образует, соответственно, область обработки, например FROM (из) (ключевые слова 22, 23), WHERE (где) (ключевые слова 24, 25), GROUP BY (группировать по) (ключевые слова 26, 27) и т.д., причем каждая область обработки выполняет соответствующую ей функцию обработки множества, например, FROM образует декартовы продукты с возможностью специальных JOINS (присоединений).

После каждого вводящего ключевого слова 20, 22, 24, 26, 28, 30 могут следовать другие ключевые слова, которые по причинам наглядности не показаны на фиг.1. Так, например, после ключевого слова 24 “WHERE” могут непосредственно следовать, например, ключевые слова “(“, “NOT” (не), имя таблицы, имя табличного поля, определенные функции и т.д. SUBSELECT (подвыбор), то есть рекурсивное применение RTN, всегда начинающееся при SELECT (ключевое слово 20), например, посредством “(“, может появляться на заданной позиции решения. Таким образом, в этих местах может, соответственно, всегда рекурсивно вводиться только весь RTN в качестве компонента.

Несмотря на множество возможных выбираемых ключевых слов для SQL и родственных языков запросов существует относительно сильное ограничение и имеется ряд вопросов, которые с заданными областями обработки в заданной последовательности обработки можно описать лишь очень подробным и длительным образом, и поэтому из этого описания генерируется более сложный и медленный план доступа, чем это фактически требуется.

Фиг.2 показывает на примере схематичное изображение RTN, лежащей в основе соответствующего изобретению способа, причем RTN образована из независимых друг от друга RTN-компонентов 50, 51, 52, 53, 54, 55, число которых является произвольно расширяемым. В качестве примера на фиг.2 показаны упрощенные RTN-компоненты, которые имеют, соответственно, только один путь решения 79 с соответственно небольшим числом позиций решения.

Каждый RTN-компонент 50, 51, 52, 53, 54, 55 обращается к множествам входных данных назначенного ему входного множества обработки с определенной последовательностью элементов множества, подает их на обработку и выдает новое выходное множество обработки с, по меньшей мере, одним множеством выходных данных, также с определенной последовательностью элементов множества, причем выходные множества данных по значениям не отличаются обязательным образом от входных множеств данных. При этом обработка опирается, соответственно, на ключевые слова в позициях решений, как ключевое слово 61 “WHERE” (где), ключевое слово 62 “ORDERBY” (упорядочить по), ключевое слово 63 “FINDFIRST” (найти первые), ключевое слово 64 “=”, ключевое слово 66 “#” и ключевое слово 67, например имя табличного поля в реляционной базе данных.

Позиции решения 70, обозначенные в RTN-компонентах 50, 51, 52, 53, 54, 55 символом *, выполняют особую функцию, в частности, то, что любой RTN-компонент из всей совокупности всех имеющихся в распоряжении RTN-компонентов вставляется, соответственно, на это место и при обработке проходится.

Пример 3

Здесь FROM устанавливает множество данных, которыми в конкретном примере является таблица FIRMEN (фирмы).

WHERE (ключевое слово 61 в RTN-компоненте 50) принимает все элементы множества входного множества данных FIRMEN, причем эта функция обработки как при вводе данных, так и при выводе данных, не оказывает никакого влияния на последовательность и сама также не оказывает влияния на эту последовательность. Как очевидно следует из фиг.2, после WHERE в RTN-компоненте 50 вынужденным образом следует обозначенная посредством “*” позиция решения 70, в которой может вводиться и проходиться любой RTN-компонент из совокупности всех определенных RTN-компонентов.

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

Целесообразно могла бы, например, к RTN-компоненту 50 быть добавлена дополнительная необязательная позиция решения или определен отдельный компонент, чтобы определить, что в качестве критерия выбора во множестве значений позиций решения 70 определено то, что, по меньшей мере, одно значение должно быть не равно 0 и не равно NULL или точно никакое значение не может быть равно 0 или NULL.

Согласно Примеру 3, в позиции решения 70 вводится RTN-компонент 53, при котором на его обеих позициях решения 70 “*” введен, соответственно, другой RTN-компонент (с применением RTN-компонентов по фиг.2).

В Примере 3 RTN-компонент 50 выдает после этого те фирмы, которые в табличном поле ORT (место) имеют “Wien” (Вена).

ORDERBY (ключевое слово 62 в RTN-компоненте 51)

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

FINDFIRST (ключевое слово 63 в RTN-компоненте 52)

Этот RTN-компонент принимает входное множество данных в отсортированной последовательности, как оно, например, выдано RTN-компонентом ORDERBY, и находит с учетом этой последовательности лишь те элементы, для которых вставленный в позицию решения 70 RTN-компонент выдает после его прохождения в выданном им множестве значений на элемент, по меньшей мере, одно значение, не равное 0 и не равное NULL, и выдает эти найденные элементы соответственно входной последовательности сортировки.

# (Ключевое слово 66 в RTN-компоненте 54)

Для Примера 3 RTN-компонент 52 (“FINDFIRST”) вставляется в RTN-компонент 54, который представляет собой вышестоящий RTN-компонент, в месте первой позиции решения 70. RTN-компонент 54 означает в этом определении, что все элементы, которые выдаются как результат прохождения первой позиции решения 70, ограничиваются числом элементов, которые указаны во второй позиции решения 70.

Применение RTN-компонента (“#”) вложенным образом в RTN-компоненте 54 (“#”) допустимо по определению, что можно видеть из Примера 4.

Пример 4

(5, 3, 2, 9) #3 #2

Как результат шага #3, берутся первые три элемента, то есть (5, 3, 2) в качестве выходного множества данных, которое является входным множеством данных для #2. В качестве результата #2 получается (5, 3).

= (ключевое слово 64 в RTN-компоненте 53)

В конкретном примере в RTN-компоненте 50 после ключевого слова 61 (WHERE) в позиции решения 70 вставляется RTN-компонент 53, то есть WHERE *=*.

Имя табличного поля (ключевое слово 67 в RTN-компоненте 55)

ORT, ANZMITARBEITER, UMSATZVORJAHR представляют имена табличных полей, которые могут стоять в каждой позиции решения 70.

Как уже упомянуто, каждый RTN-компонент (так, например, на фиг.2: 50, 51, 52, 53, 54, 55) имеет внутренний направленный граф решений с, по меньшей мере, одним путем решений 79. В примере согласно фиг.2 точно один путь решений в каждом RTN-компоненте 50, 51, 52, 53, 54, 55 проходит без разветвлений, причем в показанных на фиг.2 представлениях следует сверху вниз графа решений.

Каждый граф решений RTN-компонентов 50, 51, 52, 53, 54, 55 определен независимо от внутренних графов решений других RTN-компонентов 50, 51, 52, 53, 54, 55 и может иметь одну или более позиций решений 70 вдоль пути решений.

Далее описаны другие возможные RTN-компоненты, которые частично также требуют более сложных графов решений.

Фиг.3 показывает RTN-компонент 150, который на основе входного множества обработки выдает выходное множество обработки с той особенностью, что это выходное множество обработки на каждый элемент вышестоящего множества вычисляется отдельно. В позиции решения 70 может вводиться любой RTN-компонент. Посредством описанного графа решений можно между прямоугольными скобками 161, 162, как указано стрелками, проходить эту позицию произвольно часто друг за другом, причем при каждом проходе выбирается один из полной совокупности RTN-компонентов. Вышестоящее множество означает в этой связи входное множество обработки вышестоящего RTN-компонента, в который вставлен этот RTN-компонент в позиции решения 70.

Пример 5

Пусть каждая фирма - так как здесь множество всех фирм представляет вышестоящее множество - выдает из всего множества отделений только те отделения, которые соответствуют каждой фирме, и подсчитывает их. Берутся только те фирмы, которые имеют более трех отделений.

Оператор согласно Примеру 5 можно разделить на компоненты следующим образом.

Применение RTN-компонента 150: [*(Повторение)]] дает для этого примера [**], причем

*…….SELECT*1

*…….WHERE*1

Прямоугольные скобки берут согласно этому определению содержащееся в них множество и находящийся непосредственно в обработке элемент входного множества обработки, и RTN-компоненты, вставленные вдоль пути решения RTN-компонента 150, проходятся, в частности, так часто, как это задается элементами входного множества обработки. Так как этот первый RTN-компонент 150 не имеет никакого вышестоящего RTN-компонента, берется виртуальное входное множество обработки с одним элементом, так что этот первый RTN-компонент проходится точно однократно.

SELECT*1 имеет в качестве входного множества обработки FIRMEN, так как они названы в качестве параметра SELECT.

WHERE*1 имеет в качестве входного множества обработки FIRMEN, так как из совместимости с SQL-стандартом функции индикации, как их представляет SELECT, всегда могут выполняться в конце, но все же могут приводиться приоритетным образом в операторе.

WHERE*1 соответствует RTN-компоненту 50, причем позиция решения 70 ожидает RTN-компонент из всей совокупности, множество значений которого вычисляется на каждый элемент входного множества обработки, то есть FIRMEN. В позиции решения 70 в конкретном случае (Пример 5) вводится следующий RTN-компонент:

*2(позиция решения 70)> (Текст) *2(позиция решения 70)

Первая звездочка *2(позиция решения 70) вставляет вновь RTN-компонент 150, который, в свою очередь, состоит из [*3 *3], а именно составная первая звездочка *3 = ABTAILUNGEN.COUNT (счет отделений) и WHERE(FIRMEN.FIRMAID=Abteilungen.FIRMANR) в качестве составной второй звездочки *3.

Вторая звездочка *2(позиция решения 70) после “>” содержит множество значений со значением, в частности, 3.

Продолжение разложения на последующие RTN-компоненты Примера 5 осуществляется аналогично.

Две альтернативные формы записи для этого примера, которые описывают ту же самую постановку вопроса, что и Пример 5, с другими абстракциями, и могут оптимизироваться аналогично Примеру 5, и выдавать идентичный план обработки, показаны далее.

Пример 6

В Примере 6 проходится множество отделений для каждой фирмы, и элементы с совпадением на каждую текущую фирму в качестве выходного множества обработки RTN-компонента 150 выдаются, подсчитываются посредством “COUNT” и сравниваются с >3.

Пример 7

В Примере 7 проходится множество отделений на каждую фирму и количество элементов с совпадением по каждой текущей фирме выдается в качестве выходного множества обработки RTN-компонента 150 и сравнивается с >3.

Чтобы пояснить определение прямоугольных скобок еще нагляднее, приведен еще один пример, который отвечает на ту же постановку вопроса, что и Пример 1, а именно все фирмы из мест с количеством фирм более 100.

Пример 8

Особенность этого примера состоит в том, что обращаются к множеству FIRMEN на каждый элемент FIRMА, и поэтому могут быть посчитаны одинаковые места.

Три альтернативных способа записи с другими абстракциями, но с одинаково оптимизированным планом доступа показаны ниже:

Пример 9

Берутся все фирмы, в месте которых можно найти более 100 фирм.

Пример 10

Посредством GROUPBY Firmen.Ort (группировать по фирмам по месту) скомпонованные по различному месту и по скомпонованному элементу Ort (место) фирмы этого места отмечаются. Посредством [Firmen.Count] (отсчет фирм) подсчитывается, сколько фирм соотнесено с соответствующим элементом Ort, и посредством WHERE берутся только места, с которыми соотнесено более чем 100 фирм. END GROUPBY (конец группировки по) означает, что сортировка по месту отменяется, и вместо этого применяются фирмы, которые были соотнесены с местом. Так как места с меньшим количеством фирм, чем 100, не обрабатывались, также далее не обрабатывались и их фирмы.

Пример 11

RTN-компонент “BREAKON*” выдает на каждый элемент своего входного множества обработки разделение на несколько выходных множеств данных в его выходном множестве обработки, причем получающиеся выходные множества данных в выходном множестве обработки таким образом скомпонованы, что элементы входного множества обработки, которые выдают, соответственно, одинаковые выходные множества обработки для RTN-компонента, введенного в позиции решения 70 (*), в которые, соответственно, помещаются одинаковые выходные множества данных, и количество выходных множеств данных соответствует количеству различных значений в позиции решения 70 (*) RTN-компонента BREAKON.

В конкретном случае (Пример 11) позиция решения 70 для BREAKON есть “FIRMEN.ORT”, откуда получается число множеств данных, соответствующее числу имеющихся мест.

Последующие функции обработки после BREAKON всегда относятся к этим выходным множествам данных в качестве входных множеств данных и применяют свои функции обработки к каждому отдельному входному множеству данных независимо друг от друга, и выдают со своей стороны вновь то же самое количество выходных множеств данных, пока не будет достигнут определенный RTN-компонент, например “END BREAKON”, который означает, что все входные множества данных его входного множества обработки скомпонованы в единственное выходное множество данных в его выходном множестве обработки.

Для приведенного выше Примера 11 все фирмы, приходящиеся на данное место, записаны в единственное множество, и последующее WHERE применяется независимо к каждому из этих множеств, то есть на каждое входное множество данных Ort подсчитывается, сколько элементов (Firmen) находятся в текущем входном множестве данных (Ort). Если более чем 100 фирм имеется в текущем входном множестве данных Ort, то все входное множество для этого места принимается, и затем все фирмы этого выходного множества данных указываются посредством SELECT.

В другом примере, который показывает сначала функцию обработки для всех данных внутри множества данных, затем осуществляется разделение на несколько множеств данных, и затем функция обработки применяется по отдельности к каждому множеству данных, затем вновь проводится компоновка в одно множество данных с последней функцией обработки, которая ссылается на все множество данных. По сравнению с SQL, формулировка короче и конкретнее опирается на непосредственно возникающую постановку вопроса, а также улучшается обработка, так как посредством отдельных RTN-компонентов очень конкретно описывается, что пользователю было бы желательными иметь в качестве результата, и не требуется работать с временными таблицами.

Пример 12

(1) Из всего множества фирм выбираются только те фирмы, которые не стерты.

(2) Сохранить количество не стертых фирм для одного и того же места, соответственно, в тех же множествах данных.

(3) Считать каждое множество данных, и только те множества данных применять далее, в которых находится более 100 элементов. Теперь имеются те множества данных, в конкретном месте, в которых имеется более 100 фирм.

(4) Все отдельные множества данных вновь записать в ОДНО множество данных, что означает записать фирмы всех мест с более чем 100 фирмами в одно множество данных.

(5) Из всех этих фирм выбрать только те, которые относятся к 1000 фирм, наилучшим по обороту.

(0) Выдача табличных полей, определенных в SELECT.

Фиг.4 показывает RTN-компонент 151 с ключевыми словами 163 “ALL” (все) 164 “ANY” (любые), которые определены, как упомянуто выше, в качестве критерия выбора во множестве значений RTN-компонента, который использован в позиции решения 70, так что, по меньшей мере, одно значение не равно нулю и должно быть не равно NULL (ANY), или точно ни одно значение не равно 0 или не может быть NULL (ALL).

Но RTN-компонент 151 также предоставляет возможность выразить то, что ТОЧНО (ключевое слово 167), ПО МЕНЬШЕЙ МЕРЕ (ключевое слово 166) или МАКСИМАЛЬНО (ключевое слово 165) определенное число значений (ключевое слово 168) не должно быть равно нулю или NULL (при “ANY”), или (при “ALL”) должны все значения, включая точно (ключевое слово 167)/по меньшей мере (ключевое слово 166)/максимально (ключевое слово 165), быть некоторым числом (ключевое слово 168), не равным нулю или NULL.

Гибкость в применении RTN-компонентов можно на основе вышеописанного RTN-компонента 151 показать следующим образом. ANY означает в основном определении, что, по меньшей мере, одно значение множества значений должно подходить для действительного элемента входного множества обработки, таким образом, должно быть не равным нулю или не равным NULL. Но эта функция, по мере необходимости, может быть расширена, так что посредством одного или более других вышестоящих или введенных RTN-компонентов допускается соответствующая модификация.

Пример 13

ANY означает, что, по меньшей мере, одно значение функции обработки - в Примере 13 на месте WHERE - должно иметь, по меньшей мере, одно значение, не равное нулю, то есть выдает все фирмы, в которых имеется, по меньшей мере, одно контактное лицо мужского пола.

Пример 14

ANY с расширением (<=3) означает, что максимально ТРИ значения функции обработки - в Примере 14 на месте WHERE - должны иметь, по меньшей мере, одно значение, не равное нулю, то есть выдает все фирмы, в которых имеется максимально ТРИ контактных лица мужского пола.

Пример 15

ALL означает, что все значения функции обработки - в Примере 15 на месте WHERE - не должны иметь ни одного значения, не равного нулю, то есть выдает все фирмы, в которых имеются ТОЛЬКО контактные лица мужского пола.

Пример 16

ALL с расширением (<= 3) означает, что все до максимально трех значений функции обработки - в Примере 16 на месте WHERE - могут иметь значение, не равное нулю, то есть выдает все фирмы, в которых имеется МАКСИМАЛЬНО ТРИ контактных лица мужского пола.

Фиг.5 показывает RTN-компонент 152, который использует условие IF THEN ELSE (если, то, иначе) для вычисления выходного множества данных.

Пример 17

Постановка вопроса в этом примере сформулирована следующим образом: указать все фирмы, причем для фирм с числом сотрудников менее 100 действительны другие критерии, чем для фирм с числом сотрудников, равным или менее 100.

Если фирма имеет менее 100 сотрудников, то оборот 2006 сравнивается в зависимости от почтового индекса (PLZ), при PLZ 1010 оборот должен составлять > 500.000, все другие PLZ сравниваются с оборотом 300.000.

Из фирм с числом сотрудников, по меньшей мере, 100 выбираются только те фирмы, у которых оборот в 2006 году относится к 1000 самых больших оборотов из всех фирм.

RTN-компонент 152 на фиг.5 имеет две обязательных и одну факультативную (после ключевого слова 172 (ELSE)) позиции решения 70, в которых из полной совокупности RTN-компонентов вводится RTN-компонент, причем ключевое слово 170 (IF) и следующая за ним позиция решения 70 устанавливают, выдает ли результат для текущего элемента входного множества обработки этого RTN-компонента либо позиция решения 70 после ключевого слова 171 (THEN), либо позиция решения 70 после ключевого слова 172 (ELSE) в качестве выходного множества обработки этого RTN-компонента. Если не указывается ключевое слово 172 (ELSE) и, тем самым, позиция решения 70, то в качестве выходного множества обработки для этой позиции решения 70 принимается TRUE (-1).

Поэтому ключевые слова 173 (END) и 174 (IF) являются факультативными (необязательными), потому что конец RTN-компонента 152 определяется посредством ТОЧНО ОДНОЙ позиции решения 70, однако эти ключевые слова могут приводиться по причинам наглядности.

Если вводится несколько следующих одна за другой позиций решения 70 между ключевыми словами 170 и 171, или между ключевыми словами 171 и 172, или между ключевыми словами 172 и 173, то имеется две возможности.

Первая возможность состояла бы в том, чтобы ключевые слова 173 (END) и 174 (IF) жестко предусмотреть и, тем самым, в позициях решения 70 этого RTN-компонента разрешить произвольно частое число вызовов.

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

Пример 18

На фиг.6 показана ограниченная для простоты представления совокупность всех определенных RTN-компонентов 250, 251, 252, 253, 254, 255 рядом друг с другом.

Последующий оператор с 10 ключевыми словами лежит в основе Примера 18, причем А, В, С являются применяемыми ключевыми словами.

В А С С С В А С С А

На шаге выбора согласно соответствующему изобретению способу проходятся внутренние графы решений всех RTN-компонентов от 250 до 255 на основе ключевых слов 261-271, и по всем путям 79 этих графов решений следуют до тех пор, пока не будет установлено отсутствие совпадения с соответственно выбранным путем 79 посредством графа решений, и процесс будет прерван либо соответственно выбранный путь 79 будет пройден до конца.

Этот процесс составляется из следующих десяти шагов, причем число шагов соответствует числу ключевых слов, и на фиг.7 представлен графически как результат для последнего шага 10.

Шаг 1

«В» в качестве первого ключевого слова в операторе сравнивается с соответствующими первыми ключевыми словами в RTN-компонентах 250, 251… и находится совпадение при

RTN-компонент 250 → отсутствие совпадения при ключевом слове 261 («А»)

RTN-компонент 251 → отсутствие совпадения при ключевом слове 263 («А»)

RTN-компонент 252 → ключевое слово 265 («В»)

RTN-компонент 253 → ключевое слово 268 («В»)

RTN-компонент 254 → ключевое слово 269 («В»)

RTN-компонент 255 → отсутствие совпадения при ключевом слове 271 («С»)

Таким образом, далее отслеживаются только RTN-компоненты 252, 253, 254.

Получается (текущая позиция соответственно подчеркнута):

RTN-компонент 252: В

RTN-компонент 253: В

RTN-компонент 254: В А*

Шаг 2

Используется следующее ключевое слово - «А» - в операторе, причем совпадение находится на текущем втором месте соответствующего RTN-компонента. Позиция решения 70 (“*”) означает в этой связи, что на этом месте может использоваться любой RTN-компонент. Путь решений имеет, таким образом, на позиции решения 70 рекурсивную функцию вызова, посредством которой один из RTN-компонентов проходится как результат применения шага выбора к совокупности RTN-компонентов, так что обеспечивается возможность произвольно повторяющегося рекурсивно вложенного выполнения, исходя из, по меньшей мере, одной из позиций решений. Тем самым, в позиции решения 70 также должно проверяться, может ли быть найдено совпадение посредством ввода одного из совокупности RTN-компонентов.

RTN-компонент 252 → ключевое слово 265 со следующей позицией решения 70 (“B””*”)

RTN-компонент 253 → ключевое слово 268 со следующей позицией решения 70 (“B””*”)

RTN-компонент 254 → ключевое слово 269 (“B””A”)

В RTN-компонент 252 может поэтому производиться выбор в позиции решения 70 из совокупности RTN-компонентов, чтобы ввести один из них, например, вводятся RTN-компоненты 250-255, и устанавливается, получается ли совпадение с оператором, причем в первой позиции решения может устанавливаться совпадение только для RTN-компонентов 250 и 251.

250 вставленный в 252: В*С → В А В * С

251 вставленный в 252: В*С → В А С * С

250 вставленный в 253: В*А → В А В * А

251 вставленный в 253: В*А → В А С * А

254 В А *

Шаг 3

250 вставленный в 252: В*С → В А В * С не отслеживается

251 вставленный в 252: В*С → В А С * С продолжать

250 вставленный в 253: В*А → В А В * А не отслеживается

251 вставленный в 253: В*А → В А С * А продолжать

254 В А * ввести все компоненты

Получается:

251 вставленный в 252: В*С → В А С * С

251 вставленный в 253: В*А → В А С * А

255 вставленный в 254: В А * → В А С

Шаг 4

251 вставленный в 252: В А С * С вставить все RTN-компоненты

251 вставленный в 253: В А С * А вставить все RTN-компоненты

255 вставленный в 254: В А С не продолжать, потому что конец

Получается:

255 вставленный в 251 вставленный в 252: В*С → В А С С С

255 вставленный в 251 вставленный в 253: В*А → В А С С А

Шаг 5

255 вставленный в 251 вставленный в 252: В А С С С продолжать

255 вставленный в 251 вставленный в 253: В А С С * А возможно

любое достижение позиции решения 70 в RTN-компоненте 253

255 вставленный в 251 вставленный в 253: В А С С А не продолжать, так как нет совпадения

Получается:

255 вставленный в 251 вставленный в 252: В А С С С

(255 в 251, с последующим 255), вставленный в 253: В А С С С А

Шаг 6

255 вставленный в 251 вставленный в 252: В А С С С не отслеживается, потому что конец

(255 в 251, с последующим 255), вставленный в 253: В А С С С А не отслеживается, так как нет совпадения

(255 в 251, с последующим 255), вставленный в 253: В А С С * А вставить все RTN-компоненты

Получается:

(255 в 251, с последующим 255, с последующим 252), вставленный в 253: В А С С С В * С А

(255 в 251, с последующим 255, с последующим 253), вставленный в 253: В А С С С В * А А

(255 в 251, с последующим 255, с последующим 254), вставленный в 253: В А С С С В А * А

и так далее

………….

Результат шага 10

(255 в 251, с последующим 255, с последующим 255 в 254, с последующим 255) 253

Из показанного на фиг.7 результата согласно шагу 10, соответственно последовательности RTN-компонентов и их вложению, как оно получается из применения шагов выбора ко всем ключевым словам оператора запроса, генерируется план доступа для реляционной системы базы данных, причем сначала вложение RTN-компонентов посредством описанного далее взвешивания должно, при необходимости, изменяться, чтобы корректно разрешить многозначность, как она проявляется из-за возможностей ввода RTN-компонентов в позициях решений70 других RTN-компонентов.

Для того чтобы всегда однозначно распознавать конец каждого RTN-компонента и введенных в него RTN-компонентов, необходимо, чтобы графам решений RTN-компонентов тем позициям решений, на которых выполняется заранее не определенное, не ограниченное число следующих друг за другом вызовов рекурсивных функций вызова, предшествовала позиция решения, которая требует ключевого слова (текста, особого знака, переменной или числа), и далее следовала, по меньшей мере, одна позиция решения, которая также требует ключевого слова.

Примером этого является RTN-компонент “Ebenen” (уровни), в котором позиции решений 70 могут следовать друг за другом произвольно часто, причем этот компонент согласно определению начинается предшествующим ключевым словом (“[“) и заканчивается последующим ключевым словом (“]”): ”[“ (1)*(1)”]”

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

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

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

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

Посредством разложения и ввода RTN-компонентов каждый формулируемый оператор приводится в одинаковую форму абстракции, которая основывается на вложении RTN-компонентов, независимо от функции обработки, соотнесенной с применяемыми RTN-компонентами. За счет этой одинаковой абстракции получается алгебра, справедливая для всех RTN-компонентов и возможностей вложения.

Всегда может быть установлено конечное число групп основных компонентов, причем для каждой группы основных компонентов принимается несколько допущений, которые действительны, если вышестоящие или введенные RTN-компоненты не предписывают никакого собственного иного определения.

Примеры для возможных групп основных компонентов (фиг.14, 15, 16, 17)

Вариант 1 (фиг.14): RTN-компонент 601 с любым числом ключевых слов 600 и точно одной позицией решения 70, в которой вводится RTN-компонент из совокупности RTN-компонентов, причем RTN-компонент этого варианта предписывает, по меньшей мере, одно ключевое слово 600 или ПЕРЕД и/или ПОСЛЕ позиции решения 70.

Вариант 2 (фиг.15): RTN-компонент 602 с любым числом ключевых слов 600 и, по меньшей мере, двумя или более позициями решений 70, причем все встречающиеся позиции решений 70 отделены, соответственно, ключевыми словами.

Вариант 3 (фиг.16): RTN-компонент 603 с любым числом ключевых слов 600, которые находятся исключительно ПЕРЕД и ПОСЛЕ вызываемой произвольно часто позицией решения 70.

Вариант 4 (фиг.17): RTN-компонент 604 с любым числом ключевых слов 600, которые находятся в начале и в конце пути решения 79 и которые имеют позицию решения 70 с последующей произвольно часто вызываемой позицией решения 70, причем после первой позиции решения 70 может следовать любое количество ключевых слов 600.

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

Вариант 1 (фиг.8, 14)

Для каждого RTN-компонента совокупности RTN-компонентов, которые определены согласно представленному на фиг.14 варианту 1, справедливо следующее назначение множеств обработки.

Если позиция решения 70 предусмотрена в вышестоящем RTN-компоненте, то введенному на этом месте другому RTN-компоненту в качестве входного множества обработки назначается то входное множество обработки, которое было назначено вышестоящему RTN-компоненту. Этот процесс проводится вплоть до самого внутреннего вложенного RTN-компонента, так что входное множество обработки всегда передается на непосредственно введенный в позиции решения 70 RTN-компонент.

Если во введенном RTN-компоненте никакие другие RTN-компоненты не введены, то теперь функция обработки введенного RTN-компонента применяется к назначенному ему входному множеству обработки, и получаемое при этом выходное множество обработки введенного RTN-компонента назначается как новое входное множество обработки вышестоящему RTN-компоненту, так что затем выполняется функция обработки вышестоящего RTN-компонента. Результат этого применения выдается как выходное множество обработки вышестоящего RTN-компонента. Этот принцип допускает, таким образом, произвольно частое вложение RTN-компонентов.

Фиг.8 показывает в соответствии с этим вложенные друг в друга RTN-компоненты 407, 408, 409 соответственно:

RTN-компонент 407 (кл.сл. + поз.реш. 70)

RTN-компонент 408 (кл.сл. + поз.реш. 70)

RTN-компонент 409 (кл.сл.)

Входное множество обработки 401 передается к RTN-компоненту 407 и затем передается введенному RTN-компоненту 408 как его входное множество обработки 402, а последнее вновь в качестве входного множества обработки 403 попадает в RTN-компонент 409, введенный в RTN-компонент 408.

Достигнув самого внутреннего пункта вложения, функция обработки RTN-компонента 409 применяется теперь к входному множеству обработки 403 и получаемый при этом результат как выходное множество обработки 404 передается в качестве нового входного множества обработки в RTN-компонент 408.

Теперь функция обработки RTN-компонента 408 применяется к новому входному множеству обработки 404, причем полученный результат как выходное множество обработки 405 передается в качестве нового входного множества обработки в RTN-компонент 407.

На следующем шаге функция обработки следующего более внешнего RTN-компонента, таким образом, RTN-компонента 407 применяется к его новому входному множеству обработки 405, и полученный результат сохраняется в выходном множестве обработки 406 RTN-компонента 407.

Однако отличающееся определение отдельных RTN-компонентов, как уже упоминалось выше, этим не исключается.

Вариант 2 (фиг.9, 15)

Для каждого RTN-компонента совокупности RTN-компонентов, которые определены согласно представленному на фиг.15 варианту 2, справедливо следующее назначение множеств обработки.

Когда, соответственно, по меньшей мере, одно ключевое слово встречается между двумя или более позициями решений 70 в вышестоящем RTN-компоненте, то тогда введенным непосредственно в позициях решения 70 RTN-компонентам назначается, соответственно, то же самое множество обработки, а именно множество обработки вышестоящего RTN-компонента, причем все получающиеся выходные множества обработки передаются в качестве входных множеств обработки функции обработки вышестоящего RTN-компонента, хотя в исключительных случаях внешнего и/или, по меньшей мере, одного из введенных RTN-компонентов применяется другое определение.

Фиг.9 показывает связанные через ключевое слово 420 RTN-компоненты 418 и 419, которые введены в RTN-компонент 417. Этот вариант находит применение, например, в арифметических или логических связях RTN-компонентов.

RTN-компонент 417 (поз.реш. 70 + кл.сл.420 + поз.реш. 70)

RTN-компонент 418

RTN-компонент 419

Входное множество обработки 411 передается на вышестоящий RTN-компонент 417 и затем передается введенному RTN-компоненту 418 в качестве его входного множества обработки 412. Соответствующая функция обработки RTN-компонента 418 затем применяется к входному множеству обработки 412 и сохраняется в выходном множестве обработки 413.

RTN-компонент 419 получает также входное множество обработки 411 от своего вышестоящего RTN-компонента 417 в качестве входного множества обработки 414. Соответствующая функция обработки RTN-компонента 419 затем применяется к его входному множеству обработки 414 и сохраняется в выходном множестве обработки 415.

На следующем шаге вышестоящий RTN-компонент 417 получает выходные множества обработки 413 и 415 в качестве своих двух новых входных множеств обработки, к которым теперь применяется его функция обработки, и затем выполняется сохранение в одном выходном множестве обработки 416.

Однако отличающееся определение отдельных RTN-компонентов, как уже упоминалось выше, этим не исключается.

Вариант 3 (фиг.10, 16)

Для тех RTN-компонентов совокупности RTN-компонентов, которые определены согласно представленному на фиг.16 варианту 3, справедливо следующее назначение множеств обработки.

Вышестоящий RTN-компонент имеет путь решения, который обеспечивает возможность следующего друг за другом, произвольно частого достижения позиции решения 70 (см. RTN 253 на фиг.6).

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

Фиг.10 показывает следующие друг за другом в вышестоящем RTN-компоненте 427 RTN-компоненты 428, 429, 430, у которых - за исключением первого и последнего RTN-компонента - в указанной последовательности RTN-компонентов, соответственно, выходное множество обработки предшествующего RTN-компонента принимается в качестве входного множества обработки последующего RTN-компонента, и выполняется назначенная соответствующему RTN-компоненту функция обработки.

Конкретно, входное множество обработки 421 вышестоящего RTN-компонента 427 передается как входное множество обработки 422 первого в последовательности RTN-компонента 428, функция обработки которого применяется к нему, вследствие чего получается выходное множество обработки 423. Последнее передается далее в качестве входного множества обработки 423 второго RTN-компонента 429. Аналогичным образом это происходит для последующего RTN-компонента 430 и получающегося его входного множества обработки 424, выходное множество обработки 425 которого принимается в качестве нового входного множества обработки, к которому применяется функция обработки вышестоящего RTN-компонента 427, как следствие которой выдается выходное множество обработки 426.

Целесообразное новое определение варианта 3 задается посредством RTN-компонента 446 со следующими свойствами назначения множеств и показано на фиг.12.

Вышестоящий RTN-компонент 446 вновь имеет путь решения, который обеспечивает следующее друг за другом произвольно частое достижение позиции решения 70.

Согласно определению специального RTN-компонента 446 справедливо, что всем непосредственно введенным в позициях решения 70 RTN-компонентам 447, 448, 449 назначается входное множество обработки 441 вышестоящего RTN-компонента 446.

В качестве входного множества обработки вышестоящего RTN-компонента 446 используются выходные множества обработки 442, 443, 444 всех непосредственно введенных RTN-компонентов 447, 448, 449 и сохраняются в выходном множестве обработки 445 после применения функции обработки.

Примерами для возможных функций обработки этого RTN-компонента 446, установленными, например, посредством собственных RTN-компонентов, являются:

1. Все элементы, которые находятся в определенном числе (по меньшей мере, точно, максимально, …) всех выходных множеств обработки введенных RTN-компонентов (ANY(*)).

2. Все элементы, которые находятся в каждом выходном множестве обработки введенных RTN-компонентов или во всех выходных множествах обработки до по меньшей мере/максимально/точно определенного числа (ALL(*)).

Посредством собственного RTN-компонента еще может указываться, следует ли элементы, которые встречаются более чем в одном выходном множестве обработки введенных RTN-компонентов, передавать просто или многократно в выходное множество обработки вышестоящего RTN-компонента.

Если никакие RTN-компоненты не указаны в качестве параметров для функции обработки этого вышестоящего RTN-компонента 446, то принимается, что все элементы, которые встречаются в, по меньшей мере, одном из выходных множеств обработки 442, 443, 444 введенных RTN-компонентов 447, 448, 449, должны выдаваться без дубликата.

Вариант 4 (фиг.11, 13, 17)

Для тех RTN-компонентов совокупности RTN-компонентов, которые определены согласно представленному на фиг.17 варианту 4, справедливо следующее назначение множеств обработки.

Вышестоящий RTN-компонент (например, RTN-компонент 457 на фиг.11 или RTN-компонент 477 на фиг.13) имеет путь решений, который после одного или более ключевых слов 600 предписывает позицию решения 70, за которой могут следовать произвольно много ключевых слов 600 и который обеспечивает возможность следующего друг за другом, произвольно частого достижения позиции решения 70 (см. RTN 253 на фиг.6), причем оно закрывается посредством, по меньшей мере, одного ключевого слова 600.

Для RTN-компонентов этого варианта справедливо, что первая позиция решения 70 применяет данные входного множества обработки вышестоящего RTN-компонента, и на основе выходного множества обработки введенного RTN-компонента в позиции решения 70 выполняется функция обработки этого RTN-компонента, для всех других RTN-компонентов, которые вводятся на произвольно часто вызываемых позициях решений 70, справедлива логика, описанная для назначения множеств для варианта 3 (фиг.16), причем первый RTN-компонент произвольно часто вызываемой позиции решения 70 получает выходное множество обработки RTN-компонента на первой, не повторяемой позиции решения в качестве его назначенного входного множества обработки. Если достигается обозначенный, по меньшей мере, одним ключевым словом 600 конец вышестоящего RTN-компонента, то, по меньшей мере, одна другая функция обработки может применяться к выходному множеству обработки последнего RTN-компонента произвольно часто вызываемой позиции решения.

На фиг.11 показан RTN-компонент варианта 4, который имеет RTN-компонент 458, введенный в первой позиции решения 70 вышестоящего RTN-компонента 457, который получает доступ к входному множеству обработки 452 вышестоящего RTN-компонента 457, причем входное множество обработки 452 соответствует входному множеству обработки 451.

Функция обработки этого RTN-компонента 457 выполняет сначала группировку по одинаковым множествам значений выходного множества обработки 453 RTN-компонента 458 для элементов входного множества обработки 452 со ссылкой на соответственно сгруппированные элементы. Так входное множество обработки 451, которое далее передается как входное множества обработки 452, содержит 17 элементов; как результат функции обработки RTN-компонента 458 они группируются в выходном множестве обработки 453 в пять различных элементов, причем каждый элемент ссылается, соответственно, на множество с отдельными элементами, которые скомпонованы вместе (множество 461, 462, 463, 464, 465). Выходное множество обработки 453 является теперь входным множеством обработки для RTN-компонента 459. Если посредством последующей функции обработки введенных RTN-компонентов 459 и 460 элементы из соответствующего выходного множества обработки 454, 455 удаляются, то отсутствует и ссылка на множества соотнесенных элементов (на фиг.11 множество 461 и 463). При окончании этого RTN-компонента определяется, что все элементы соответствующих множеств (множества 462, 464, 465) выходного множества обработки 465 записываются в выходное множество обработки 456 RTN-компонента 457. Эта последняя функция обработки выполняется только в том случае, если она в явном виде вызывается посредством, по меньшей мере, одного факультативного ключевого слова в RTN-компоненте 457 или посредством следующего RTN-компонента.

На фиг.13 показан RTN-компонент варианта 4, который в первой позиции решения 70 вышестоящего RTN-компонента 477 содержит введенный RTN-компонент 478, который получает доступ к входному множеству обработки 472 вышестоящего RTN-компонента 477, причем входное множество обработки 472 соответствует входному множеству обработки 471.

Функция обработки этого RTN-компонента 477 выполняет сначала группировку по одинаковым множествам значений выходного множества обработки 473 RTN-компонента 478 для элементов входного множества обработки 472, причем, соответственно, подобные, подлежащие группированию элементы записываются в подобные, независимые друг от друга выходные множества выходного множества обработки 473.

За счет наличия этого RTN-компонента 477 принимается, что каждое входное множество обработки и каждое выходное множество обработки содержит, по меньшей мере, одно множество входных данных или, по меньшей мере, одно множество выходных данных, причем число, содержание и последовательность внутри множеств данных входных множеств обработки и выходных множеств обработки не должны быть идентичными. Если никакие входные множества обработки или выходные множества обработки не описываются, то каждое входное множество обработки и каждое выходное множество обработки содержит точно одно множество входных данных или множество выходных данных, которое содержит все элементы. Все функции обработки независимо одна от другой применяются ко всем множествам входных данных входного множества обработки (на фиг.13: 473, 474) соответствующих RTN-компонентов (на фиг.13: 479, 480) и соответственно записываются, если множества выходных данных еще содержат элементы, в множества выходных данных выходных множеств обработки 474, 475 соответствующих RTN-компонентов 479, 480. При завершении этого RTN-компонента определено, что все множества выходных данных выходного множества обработки 475 записываются в то же самое множество выходных данных выходного множества обработки 476 RTN-компонента 477. Эта последняя функция обработки выполняется только в том случае, если она посредством, по меньшей мере, одного факультативного ключевого слова в RTN-компоненте 477 или посредством последующего RTN-компонента вызывается в явном виде.

Со ссылкой на фиг.13 получается, что каждая функция обработки RTN-компонента ссылается на свои входные множества обработки и, соответственно, выполняется на всех элементах всех множеств входных данных в своем входном множестве обработки и сохраняется в тех же или других множествах выходных данных в своем выходном множестве обработки. Однако может быть, что RTN-компонент предусматривает другое определение.

RTN-компонентам назначаются входные множества обработки, таким образом, могут быть предусмотрены RTN-компоненты, которые отдельно описывают назначение входных множеств обработки RTN-компонентам.

Другая возможная характеристика RTN-компонентов может быть осуществлена следующим образом и в качестве примера указывается для того, чтобы и относительно такой характеристики не имелось никакого ограничения. Кроме того, здесь поясняются блоки для обработки с помощью процессора.

Также должно быть возможно декартовы продукты рассматривать как ОДНО множество (RTN-компонент FROM), а также на каждый элемент первого множества переходить, соответственно, на все второе множество и, тем самым, получать также декартов продукт, причем в этом случае значения на каждый элемент первого множества вычисляются и выдаются в зависимости от критериев второго множества (RTN-компонент “EBENEN” (уровни)).

RTN-компонент “FROM”

Образует декартов продукт для множества результатов RTN-компонента, указанного в позиции решения 70 этого RTN-компонента, и представляет его как входное множество обработки для RTN-компонента в первой позиции решения 70 в его вышестоящем RTN-компоненте “Ebenen” (уровни).

RTN-компонент “Ebenen”

На каждый элемент входного множества обработки RTN-компонента, в котором содержится этот RTN-компонент (“Ebenen”), выполняются поэтапно друг за другом все функции обработки тех RTN-компонентов, которые были указаны друг за другом в этом RTN-компоненте (“Ebenen”) в позициях решений 70, причем каждое входное множество обработки каждого RTN-компонента является выходным множеством обработки непосредственно предыдущего RTN-компонента. Особенностью этого RTN-компонента варианта 3 является то, что этот RTN-компонент свое входное множество обработки не передает далее в качестве входного множества обработки для первого введенного в него RTN-компонента, а вместо этого входное множество обработки для первого RTN-компонента определяется посредством собственного RTN-компонента (например, выходное множество обработки RTN-компонента “FROM”) или из суммы всех множеств или таблиц, примененных в этом RTN-компоненте.

Введенный в этом RTN-компоненте “Ebenen” в первой позиции решения 70 RTN-компонент принимает в качестве входного множества обработки то множество (таблицы, сохраненные запросы или декартов продукт), которое определено в RTN-компоненте “Ebene” в качестве входного множества обработки посредством выходного множества обработки определенного RTN-компонента (например, “FROM”). Если никакое входное множество обработки не определено для введенного RTN-компонента в RTN-компонент “Ebenen”, то это входное множество обработки может определяться, в частности, через специфические для базы данных свойства, например, посредством теории графов, таблицы связей и всех указанных RTN-компонентов “Tabellen” (таблицы) в этом RTN-компоненте “Ebenen”, независимо от вложения в этом RTN-компоненте “Ebenen”.

Так как у самого внешнего RTN-компонента “Ebenen” не существует охватывающего его RTN-компонента, в который этот компонент мог быть введен и входные множества обработки которого могли быть использованы, привлекается абстрактное начальное множество с одним элементом, причем этот элемент абстрактным образом содержит все числа, константы, буквы и глобальные функции и т.д.

Каждый RTN-компонент “Ebenen” представляет в распоряжение себе и всем вложенным в него RTN-компонентам соответствующий действительный элемент со всей информацией (например, все табличные поля) своего входного множества обработки, выдаваемого посредством вышестоящего RTN-компонента, причем тем самым и «самый глубокий» вложенный RTN-компонент имеет доступ к этой информации всех RTN-компонентов “Ebenen”.

Выходное множество обработки RTN-компонента “Ebenen” является выходным множеством обработки последнего RTN-компонента, который введен в RTN-компонент “Ebenen” в последней повторяемой позиции решения 70.

RTN-компонент “Verarbeitung-SameParents” (обработка тех же предков)

Этот RTN-компонент показан на фиг.12, и объяснен выше, и приведен в группе «особых» ссылок на множества, так как его ссылка на множества не соответствует общему описанию для варианта 3.

Все RTN-компоненты, введенные в этот RTN-компонент, получают в качестве входного множества обработки НЕ выходное множество обработки непосредственно предшествующего RTN-компонента, а входное множество обработки узла обработки тех же предков.

Выходное множество обработки узла обработки тех же предков включает в себя все элементы всех выходных множеств обработки всех компонентов, которые введены в этом RTN-компоненте. В зависимости от дополнительных RTN-компонентов, в качестве параметра выходное множество обработки этого RTN-компонента может также содержать только те элементы, которые встречаются в их всех или определенных (точное число, по меньшей мере, или максимальное число). Посредством параметров-RTN-компонентов может также определяться, должны ли те элементы, которые многократно встречаются в выходных множествах обработки, сохраняться в выходном множестве обработки многократно или только однократно или вообще не должны в нем содержаться.

RTN-компонент “Verarbeitung-PrevParents-Bubble” (узел обработки предыдущих предков)

Все RTN-компоненты, введенные в этот RTN-компонент, получают в качестве входного множества обработки выходное множество обработки непосредственно предшествующего RTN-компонента, причем этот RTN-компонент соответствует назначению множеств согласно варианту 3. Этот RTN-компонент обеспечивает возможность, например, того, что в узле обработки тех же предков или в других RTN-компонентах, которые разрешают только одну позицию решения 70, ОДИН RTN-компонент может выдавать выходное множество обработки из нескольких следующих друг за другом и поэтапно выполняемых одна за другой функций обработки.

RTN-компонент “BreakOn” (разбиение по)

Каждая функция обработки на всех входных множествах данных во входных множествах обработки выполняется независимо друг от друга. Если должно осуществляться разделение на несколько множеств данных, то это может осуществляться посредством RTN-компонента “BreakOn”, причем, соответственно, элементы входного множества обработки RTN-компонента “BreakOn”, которые для выходного множества обработки RTN-компонента, введенного в первой позиции решения 70, выдают одинаковые значения (в случае нескольких элементов в этом выходном множестве обработки целесообразно применение “ALL” или “ANY”), записываются, соответственно, в одинаковые множества данных.

Сведение в одно множество данных может устанавливаться, например, посредством, по меньшей мере, одного ключевого слова (например, “END” “BREAKON”) после произвольно часто вызываемой позиции решения 70 в RTN-компоненте “BreakOn”.

RTN-компонент “GroupBy” (группирование по)

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

Для многих постановок вопросов необходимо выполнять группировку по одинаковым значениям и, при необходимости, для каждого группируемого элемента маркировать те элементы, которые были сгруппированы с этим элементом. Это устанавливается с помощью RTN-компонента “GroupBy”, причем существует возможность все элементы множеств, которые назначены на каждый элемент, записать в выходное множество обработки RTN-компонента “GroupBy”, и группировку, тем самым, после выполненных функций обработки отменить. Это может устанавливаться с помощью, по меньшей мере, одного ключевого слова (например, “END GROUPBY”) после произвольно часто вызываемой позиции решения 70. Если в операторе не указывается никакого подобного ключевого слова, группировка сохраняется с первого применения для всех последующих функций обработки в соответствующем вышестоящем RTN-компоненте.

RTN-компонент “OrderBy” (упорядочение по)

Элементы каждого множества размещены всегда в определенном порядке, после оптимизации не каждая функция обработки учитывает эту последовательность.

Поэтому имеется RTN-компонент (“OrderBy”), который элементы всех входных множеств данных его входного множества обработки, отсортированные независимо друг от друга по указанному значению или множеству значений, сохраняет в выходном множестве обработки этого RTN-компонента “OrderBy”.

Каждая целесообразная функция обработки множеств, или функция вычисления значений, или функция индикации и т.д. может определяться посредством RTN-компонента и выполняться в запросе. Далее приведено несколько примеров для функций обработки множеств:

RTN-компонент “WHERE”

Этот RTN-компонент применяется для того, чтобы на каждый элемент входного множества обработки определить, что этот элемент только тогда записывается в выходное множество обработки, если RTN-компонент в позиции решения 70 этого RTN-компонента “WHERE” выдает значение, не равное нулю. Определения для случая, когда выдается некоторое множество значений, могут устанавливаться с помощью RTN-компонентов “ALL” или “ANY” в позиции решения 70.

RTN-компонент “MIN”/”MAX”

Если из множества данных должны выбираться только те элементы, которые соответствуют наибольшим или наименьшим значениям вычисления на каждый элемент из совокупного множества, то это может устанавливаться с помощью RTN-компонентов “MIN” и, соответственно, ”MAX”. Если должно выдаваться определенное число больших или меньших значений, то это может осуществляться посредством вышестоящего RTN-компонента («элементы множества»), который ограничивает число элементов выходного множества обработки своего RTN-компонента, введенного в позиции решения 70.

RTN-компонент “ограничение элементов множеств”

Если из соответственно действительного множества данных выходного множества обработки должно быть предоставлено только определенное число элементов, исходя из текущей сортировки, то для этого может применяться RTN-компонент “ограничение элементов множеств” в качестве вышестоящего RTN-компонента. Этот RTN-компонент устанавливает, что точно Х-й элемент (“=”), все элементы до (“<=”) или начиная с (“>=”) Х-го элемента его входного множества обработки передаются в его выходное множество обработки. Можно также ограничение установить на определенный процент относительно числа элементов действительного множества данных во входном множестве обработки (“%”).

RTN-компонент “FIND” (найти)

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

За счет применения определенного RTN-компонента (“FIND”) устанавливается, что выходное множество обработки этого RTN-компонента “FIND” в неизменном виде соответствует входному множеству обработки этого RTN-компонента, с той особенностью, что те элементы, которые находятся в выходном множестве обработки RTN-компонента, введенного в позиции решения 70 RTN-компонента “FIND”, в выходном множестве обработки этого RTN-компонента “FIND” маркируются в предоставленной последовательности. Последующие RTN-компоненты выполняют свою функцию обработки теперь независимо друг от друга на соответственно маркированных элементах со ссылкой на последующие (RTN-компонент “NEXT”) или предыдущие (RTN-компонент “PREV”) элементы, а не на всем множестве данных. Кроме того, маркируются только найденные в функциях обработки элементы.

При применении этого RTN-компонента весьма целесообразным является предшествующее применение RTN-компонента “ODRERBY”.

Если позже должен осуществляться доступ ко всему множеству данных, это может, например, осуществляться через расширение в RTN-компоненте “FIND”, которое после следующего за первой позицией решения 70 ключевого слова (например, “:”) обеспечивает возможность произвольно частого вызова позиции решения 70 и после этого обязательно предписывает ключевое слово (например, “END” “FIND”). При нахождении этого ключевого слова все маркированные элементы выходного множества обработки последнего RTN-компонента на произвольно часто вызываемой позиции решения 70 в RTN-компонент “FIND” записываются в выходное множество обработки этого RTN-компонента, и больше никакие элементы не маркируются, за счет чего последующие функции обработки вновь получают доступ к полным множествам данных.

RTN-компонент “NEXT”/“PREV” (следующий/предыдущий)

Каждая функция обработки отдельно применяется к каждому элементу в множествах данных обработки. Тем самым возможно, например, соответствующие текущие элементы сравнивать со значениями последующих (“NEXT”) или предыдущих (“PREV”) элементов и в зависимости от этого выбирать соответствующий текущий элемент. Если RTN-компонент “NEXT” не имеет вышестоящего RTN-компонента, тогда из всего множества, соответственно, только Х-й элемент (“=”), все элементы до Х-го элемента (“<=”) или все элементы, начиная с Х-го элемента (“>=”), выдаются в качестве выходного множества обработки этого RTN-компонента.

RTN-компонент “ANY”/”ALL” (любые/все)

Например, при RTN-компоненте «сравнение», который сравнивает друг с другом выходные множества обработки RTN-компонентов, введенных в обеих позициях решения 70, для тех случаев, где, по меньшей мере, один из введенных RTN-компонентов предоставляет назад множество значений, может устанавливаться, должен ли обеспечиваться доступ при сравнении ко ВСЕМ (”ALL”) выданным значениям или, по меньшей мере, ОДНОМУ (“ANY”) из выданных значений. При “ANY” может также устанавливаться, что сравнение должен относиться к точно (“=”), по меньшей мере (“>=”) или максимально (“<=”) определенному числу элементов. При ”ALL” может указываться, что сравнение должно относиться к точно (“=”), по меньшей мере до (“<=”) или максимально до (“>=”) Х элементов.

RTN-компонент «промежуточное множество»

Если выходное множество обработки RTN-компонента должно сохраняться для дальнейшей обработки другими RTN-компонентами, то это может осуществляться посредством вышестоящего RTN-компонента «промежуточное множество». Этот RTN-компонент указывает, что его входное множество обработки временно сохраняется во множестве, указанном как имя переменных, и всеми последующими RTN-компонентами может применяться как входное множество обработки.

RTN-компонент “DO LOOP” (выполнить цикл)

При определенных постановках вопросов может быть желательным, чтобы после каждого элемента входного множества обработки RTN-компонента, который введен в позиции решения 70 после ключевых слов “DO” “:” в RTN-компонент “DO LOOP”, к элементу которого применялась функция обработки введенного RTN-компонента, выходное множество обработки RTN-компонента, который был указан в позиции решения 70 после ключевого слова “UNTIL”, проверялось на неравенство нулю или NULL и в зависимости от этого завершались функции обработки для этого RTN-компонента.

Пример 19

Выбирать все фирмы из Вены, в частности, до тех пор, пока Umsatz2006 (оборот за 2006) выбранных фирм в сумме не составит более 100.000 евро.

Посредством RTN-компонента «формирователь элемента множеств» (“,”) оба выходных множества обработки RTN-компонентов, введенных в позициях решений 70 этого RTN-компонента, компонуются в общее выходное множество обработки этого RTN-компонента.

Другими RTN-компонентами являются RTN-компоненты «RTN-компонент таблицы» или «RTN-компонент табличные поля», которые содержат имена всех применяемых в актуальной реляционной базе данных таблиц и сохраненных запросов, а также табличных и запросных полей, а также RTN-компоненты «переменная», «число», «константы» (определяют действующие константы), «глобальные функции» (для определения встроенных пользователем функций на другом языке, например, “CurrentUser()” (текущий пользователь)), RTN-компоненты для сравнения (“>”, “>=”, “<=”, “<>”, “=”, “BETWEEN” (между), “IN” (в), …), для логических связываний (“AND” (И), “OR” (ИЛИ), “XOR” (исключающее ИЛИ), …), для логического отрицания (“NOT” (НЕ)), для компоновки RTN-компонентов (“()”) для вычислительных операций (“+”, “-“, “*”, “/”, “\”, “^”, “Mod”, “SQR”, “LIM”, …).

Предпочтительные варианты представляют RTN-компоненты для функций агрегирования (“Count”, “All”, “None”, “Sum”, “AVG”, “Percent”, …), которые, соответственно, выполняются на элементах назначенного им входного множества обработки и на каждое входное множество данных выдают точно одно значение в их выходном множестве данных.

RTN-компоненты для манипулирования данными или выдачи данных являются необходимыми; целесообразным путем, обычные команды, согласно уровню техники, могут приниматься в данном аспекте в качестве RTN-компонентов, например, “SELECT” (выбрать), “UPDATE” (обновить), “INSERT INTО” (вставить в) и “DELETE” (удалить).

Целесообразным путем могут вводиться RTN-компоненты, которые определяют применимые в SQL связи присоединения “left-Join” (соединение слева), “Right-Join” (соединение справа), “Inner-Join” (внутреннее соединение) и “Outer-Join” (внешнее соединение). Могут иметься RTN-компоненты, которые содержат функции, определенные в OLAP, T-SQL, GEO-SQL и в других SQL-расширениях.

Кроме того, существует возможность определить преобразуемые RTN-компоненты, как это, например, имеет место для RTN-компонента “IN”: Wert (значение) IN (1, 2, 3, 4, 5) может определяться как RTN-компонент * “IN” “(“*”)”, *”,”* является собственным RTN-компонентом. Этот RTN-компонент IN идентичен с Wert = ANY (1, 2, 3, 4, 5) и может быть либо преобразован в эти RTN-компоненты, либо может обрабатываться процессором как таковой.

Подобное справедливо для возможных RTN-компонентов UNION (объединение) (ALL), INTERSECT (пересечение), EXCLUDE (исключение), которые объединяют множества либо без дубликатов (UNION), либо с дубликатами (UNION ALL); берут только элементы, которые имеются в обоих множествах (INTERSECT), или берут только элементы, которые не имеется в обоих множествах (EXCLUDE). Эти RTN-компоненты могут представляться в комбинации с RTN-компонентами “ANY”/”ALL”, при необходимости, с RTN-компонентом “GroupBy” и могут также преобразовываться в эти RTN-компоненты.

Можно видеть, что с использованием ANY и ALL при более чем двух множествах, могут представляться намного более точные описания, чем это было бы возможным с помощью UNION и т.д. Но определение этого RTN-компонента может осуществляться по причинам совместимости с SQL, а также более удобного применения, если наличие произвольно многих RTN-компонентов не будет недостатком.

Также в случае RTN-компонентов “AND”, “OR”/“XOR” можно действовать так.

Эти RTN-компоненты можно представить в комбинации RTN-компонентов “ANY”/”ALL” с RTN-компонентом «обработка тех же предков» и можно также преобразовать в эти RTN-компоненты.

можно, например, также представить следующим образом, так как выходное множество обработки первого самого внешнего RTN-компонента “WHERE” передается второму внешнему RTN-компоненту “WHERE” в качестве входного множества обработки:

Другими преобразуемыми RTN-компонентами являются, например, RTN-компонент «ограничение элементов множеств», преобразуемый в RTN-компонент “FOR-NEXT”, “IF-THEN-ELSE”, преобразуемый в RTN-компонент “SELECT_CASE”, RTN-компонент ”Count”, преобразуемый в RTN-компонент”SUM” и “1” и т.д.

Запрос состоит из RTN-компонента, в конкретном случае RTN-компонента «уровни», который содержит необходимое количество RTN-компонентов в указанной последовательности.

По определению имеются RTN-компоненты, которые начинаются с позиции решения 70 в графе решений. Чтобы для каждого оператора определить применяемые RTN-компоненты, необходимо применение шага преобразования перед выполнением шага выбора к первому оператору, чтобы RTN-компоненты подразделить на две типовые группы и для каждого RTN-компонента наметить соответствующую типовую группу для дальнейшей обработки.

На шаге преобразования перед выполнением шага выбора каждый RTN-компонент соотносится либо с первой, либо со второй типовой группой, причем

- RTN-компоненты, которые начинаются с текста, специального символа, переменной или числа, соотносятся с первой типовой группой и преобразуются таким образом, что позиции решения, которые содержат рекурсивную функцию вызова, шаг выбора которой применяется ко всем RTN-компонентам, ограничиваются таким образом, что шаг выбора применяется только к RTN-компонентам первой типовой группы, и

- RTN-компоненты, которые начинаются рекурсивной функцией вызова, соотносятся со второй типовой группой и преобразуются таким образом, что первая позиция решения удаляется, и позиции решения, которые содержат рекурсивную функцию вызова, шаг выбора которой применяется ко всем RTN-компонентам, ограничиваются таким образом, что шаг выбора применяется только к RTN-компонентам первой типовой группы, и

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

Например, пусть преобразование для RTN-компонента без позиции решения 70 в качестве первой позиции решения в графе решений показано как:

“(“*”)”

преобразуется в

“(“RTN-компонент первой типовой группы”)” [RTN-компонент второй типовой группы]

Например, пусть преобразование для RTN-компонента с позицией решения 70 в качестве первой позиции решения и с позицией решения 70 в качестве последней позиции решения в графе решений показано как:

*(“+”|”-“)*

преобразуется в

(“+”|”-“)RTN-компонент первой типовой группы

Например, пусть преобразование для RTN-компонента с позицией решения 70 в качестве первой позиции решения и без позиции решения 70 в качестве последней позиции решения в графе решений показано как:

*”IN” “(“*“)”

соотносится с второй типовой группой и преобразуется в

”IN” “(“RTN-компонент первой типовой группы”)” [RTN-компонент второй типовой группы]

Посредством этого шага преобразования гарантируется, что каждый указанный оператор с алгоритмами согласно уровню техники может быть разложен на RTN-компоненты, таким образом, может использоваться полная гибкость RTN-компонентов при формулировании запросов.

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

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

По определению, имеются RTN-компоненты, которые начинаются с позиции решения 70 в графе решений. При этих RTN-компонентах, в случае многократных вложений, невозможно однозначно установить, для каких RTN-компонентов они являются вышестоящими, так как на позиции решения 70 могут быть введены все RTN-компоненты первой или второй типовых групп, и это при вложениях RTN-компонентов является неоднозначным.

Пример 20

Следующий простой пример наглядно показывает это:

WHERE A+B/C

На первом шаге показывается вложение RTN-компонентов после применения шага выбора к оператору.

WHERE RTN-компонент первой типовой группы [RTN-компонент второй типовой группы]

А [RTN-компонент второй типовой группы]

+ RTN-компонент первой типовой группы

В [RTN-компонент второй типовой группы]

/ RTN-компонент первой типовой группы

С [RTN-компонент второй типовой группы]

Теперь видно, что для RTN-компонента “+” на первой позиции решения 70 существуют следующие две возможности введения:

Также для второй позиции решения 70 RTN-компонента “+” имеются две возможности введения:

Для RTN-компонента “/” имеются три возможности введения для его первой позиции решения 70:

Для RTN-компонента “/” имеется только одна возможность введения для его второй позиции решения 70:

Чтобы эти простые и более сложные случаи всегда однозначно и правильно разрешать, необходимо каждому RTN-компоненту назначить первый и второй вес, причем вес для отдельных RTN-компонентов и их учет для чередования всех найденных в операторе RTN-компонентов между собой, определяется следующим способом.

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

Первый вес всех RTN-компонентов первой типовой группы находится в зависимости от непосредственно вышестоящих в операторе RTN-компонентов второй типовой группы, и назначенный RTN-компонентам первой типовой группы первый вес обозначается поэтому как начальный вес.

RTN-компоненты первой группы имеют идентичный первый начальный вес предпочтительно средней высоты, и эти RTN-компоненты первой типовой группы принимают при вводе в RTN-компоненты второй типовой группы свой первый вес, уменьшенный на некоторое значение, предпочтительно единицу.

В качестве примера, RTN-компонент «табличное поле», как и все другие RTN-компоненты первой типовой группы, получает первый начальный вес 200, RTN-компонент «линейные вычислительные операции» имеет вес 17.

Если записать: “A” (табличное поле) “+” (линейные вычислительные операции) “B” (табличное поле), то оба RTN-компонента «табличное поле» получают вместо их первоначального первого начального веса 200 уменьшенный на 1 первый вес 17 их вышестоящего RTN-компонента «линейные вычислительные операции», оба RTN-компонента «табличное поле» получают, таким образом, на основе оператора вес 16 и оба становятся, ввиду их более низкого первого веса (16), подчиненными RTN-компоненту «линейные вычислительные операции» (вес 16).

Первый вес для RTN-компонентов второй типовой группы определяется следующим образом.

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

Так, например, RTN-компоненты функции обработки *”UNION”*, *”#”* и *”AS” V:Имя переменной, соответственно, применяются к выходному множеству обработки или выходным множествам обработки RTN-компонентов, непосредственно введенных в их позициях решений 70, первой или второй типовой группы, из-за чего эти RTN-компоненты соотносятся с первой типовой подгруппой второй типовой группы и получают первый вес 250, причем 200 является первым весом RTN-компонентов первой типовой группы, а 255 принимается в качестве максимально возможного веса.

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

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

Так, например, RTN-компонент «позиционные вычислительные операции» получает первый вес 14, RTN-компонент «линейные вычислительные операции» получает более высокий первый вес 17, RTN-компонент «сравнение» получает первый вес 50 и RTN-компонент «булево объединение» получает первый вес 100.

Это видно из желательного вложения: A + B*C > D AND E = F

Все указанные здесь первые веса меньше, чем первый начальный вес 200 RTN-компонентов первой типовой группы.

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

Поэтому справедливо, что все RTN-компоненты первой и второй типовой группы, для которых после позиции решения 70, которая предписывает введение, по меньшей мере, одного RTN-компонента из первой типовой группы, следует, по меньшей мере, одна другая позиция решения, независимо от имеющейся в соответствующем случае после шага преобразования последней факультативной позиции решения 70, которая предписывает введение RTN-компонента из второй типовой группы, имеют второй, фиксированный вес с максимально возможной высотой веса.

Примером для RTN-компонента первой типовой группы, который по определению не получает назначенного второго веса максимальной высоты, является RTN-компонент “WHERE”:

“WHERE”* после шага преобразования:

“WHERE” RTN-компонент первой типовой группы [RTN-компонент второй типовой группы]

При этом RTN-компоненте, кроме добавленной посредством шага преобразования последней факультативной позиции решения 70, не следует никакая другая позиция решения после первой позиции решения 70, поэтому второй вес для этого RTN-компонента может получать, например, значение первого веса этого RTN-компонента.

Двумя примерами для RTN-компонентов первой типовой группы, которые по определению получают второй вес максимальной высоты, являются RTN-компоненты “объединение RTN-компонентов” (скобки) и RTN-компонент “For-Next” (для-следующий):

“(“*”)”после шага преобразования:

“(“RTN-компонент первой типовой группы”)” [RTN-компонент второй типовой группы]

“For”*”:”*”Next” после шага преобразования:

“For” RTN-компонент первой типовой группы ”:” RTN-компонент первой типовой группы

”Next” [RTN-компонент второй типовой группы]

При этих RTN-компонентах следует, соответственно, дополнительно к добавленной посредством шага преобразования последней факультативной позиции решения 70, по меньшей мере, одна позиция решения после первой позиции решения 70, поэтому второй вес для этого RTN-компонента соответствует максимально возможной высоте веса, в конкретном случае 255.

То же справедливо для RTN-компонентов второй типовой группы, например, это показывается для RTN-компонента «линейные вычислительные операции» и для RTN-компонента “сравнение-В”:

*(“+”|”-“)*после шага преобразования:

(“+”|”-“)RTN-компонент первой типовой группы

При этом RTN-компоненте после шага преобразования не следует никакая другая позиция решения после единственной позиции решения 70, поэтому второй вес для этого RTN-компонента может, например, получать значение первого веса этого RTN-компонента.

*”IN” “(“*“)”после шага преобразования:

”IN” RTN-компонент первой типовой группы [RTN-компонент второй типовой группы]

При этих RTN-компонентах следует, дополнительно к добавленной посредством шага преобразования последней факультативной позиции решения 70, позиция решения после первой позиции решения 70, поэтому второй вес для этого RTN-компонента соответствует максимально возможной высоте веса, в конкретном случае 255.

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

Следующий пример должен это пояснить.

Пример 21

Справедливое для дальнейшей обработки вложение в этом Примере 21 выглядит следующим образом:

причем erste Gew … первый вес

zweite Gew … второй вес

Anfang … начальный вес RTN-компонентов первой типовой группы, если он изменяется из-за введения в RTN-компонент второй типовой группы.

Здесь можно видеть, что RTN-компонент “#” со своим первым весом 250 по отношению к RTN-компоненту “IF-THEN-ELSE-END IF” с его первым весом 200 и его вторым веслом 255 только тогда становится вышестоящим, когда он достигает своей последней позиции решения.

Для полноты описания этого Примера 21, здесь еще раз показано вложение, которое в этом примере получается путем применения шагов выбора после шага преобразования:

RTN-компоненты первой типовой группы, независимо от их собственного первого веса и независимо от первого веса вышестоящих им RTN-компонентов, являются подчиненными их непосредственно вышестоящему RTN-компоненту первой или второй типовой группы.

Пример 22

WHERE A + MIN B

Этот Пример 22 можно наглядно представить следующим образом:

Как можно видеть в этом Примере 22, RTN-компонент “B” в качестве RTN-компонента первой типовой группы, несмотря на свой более высокий первый вес 200 по сравнению с вышестоящим ему RTN-компонентом “MIN” с его первым весом 49, измененным посредством его вышестоящего RTN-компонента второй типовой группы “+”, становится подчиненным.

Если при сравнении первого веса RTN-компонентов второй типовой группы встречается вышестоящий RTN-компонент с таким же первым весом, то, в зависимости от типовой подгруппы, следует действовать различным образом.

Для случая наличия одинакового первого веса сравниваемого RTN-компонента второй типовой группы с одним из вышестоящих RTN-компонентов также второй типовой подгруппы, сравниваемый RTN-компонент непосредственно подчиняется этому RTN-компоненту в том случае, если в случае этих RTN-компонентов речь идет о RTN-компонентах второй типовой подгруппы второй типовой группы.

Следующий пример должен показать это наглядно.

Пример 23

WHERE A MOD B/C\D

В этом Примере 23 при сравнении первого веса встречаются дважды RTN-компоненты второй типовой подгруппы второй группы друг с другом (“/” встречается с “MOD”, “\” встречается с “/”). Ввиду отнесения ко второй типовой подгруппе второй типовой группы, эти RTN-компоненты являются соответственно подчиненными, так как определяется, что выходное множество обработки подчиненных RTN-компонентов, соответственно, используется как входное множество обработки вышестоящих RTN-компонентов. За счет применения RTN-компонента “объединение RTN-компонентов”, то есть путем постановки скобок, можно реализовать другой первый и второй вес и, тем самым, другую последовательность вычисления.

Для случая наличия одинакового первого веса сравниваемого RTN-компонента второй типовой группы с одним из вышестоящих RTN-компонентов также второй типовой подгруппы далее производится сравнение с вышестоящими RTN-компонентами, если в случае RTN-компонентов речь идет о RTN-компонентах первой типовой подгруппы второй типовой группы.

Следующий пример должен показать это наглядно.

Пример 24

Возьмем все элементы, которым соответствует А, из этого множества возьмем первые 100, сохраним эти 100 элементов в промежуточном множестве-1 (Zwischenmenge) и возьмем из этого промежуточного множества-1 первые 50 элементов.

В этом Примере 24 при сравнении первого веса RTN-компоненты первой типовой подгруппы второй группы встречаются дважды друг с другом (“AS” встречается с “#”, “#” встречается с “AS”). Ввиду отнесения к первой типовой подгруппе второй типовой группы, эти RTN-компоненты соответственно упорядочиваются, так как определяется, что выходное множество обработки подчиненных RTN-компонентов соответственно используется как входное множество обработки вышестоящих RTN-компонентов.

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

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

Пример 25

1-й возможный случай: На позиции решения 70 вышестоящего RTN-компонента с вторым весом максимально возможной высоты вводится RTN-компонент первой типовой группы с вторым весом, не и равным весу минимальной высоты веса, в данном примере ключевое слово “WHERE”:

[WHERE MAX A + B/C = D]

Подходящее для дальнейшей обработки вложение в этом Примере 25 выглядит следующим образом:

Поэтому RTN-компонент “MAX” подчинен RTN-компоненту с ключевым словом “/”, так как его вышестоящий RTN-компонент “WHERE” не имеет веса максимально возможной высоты веса.

RTN-компонент “WHERE” должен был бы, согласно глобальному определению, быть подчиненным RTN-компоненту с ключевым словом “=”, однако в данном случае это не происходит, так как его вышестоящий RTN-компонент «уровни» (“[]”) имеет вторую максимально возможную высоту веса, а RTN-компонент “WHERE” не имеет второго веса минимальной высоты веса.

Если должно осуществляться другое вложение RTN-компонентов, то это может осуществляться путем применения RTN-компонента «объединение RTN-компонентов» (“()”), например:

WHERE (MAX (A+B/C) = D, равнозначно с MAX A+B/C

Пример 26

2-й возможный случай: На позиции решения 70 вышестоящего RTN-компонента с вторым весом максимально возможной высоты вводится RTN-компонент первой типовой группы с вторым весом минимальной высоты, в данном примере ключевое слово “А”:

[A + B]

В этом Примере 26 можно видеть, что RTN-компонент «линейные вычислительные операции» является вышестоящим для RTN-компонента «табличное поле» (А), так как RTN-компонент “A” введен непосредственно в позицию решения 70 RTN-компонента «уровни», RTN-компонент А имеет второй вес минимальной высоты веса, а непосредственно вышестоящий RTN-компонент «уровни» имеет второй вес максимально возможной высоты веса.

Другая форма выполнения изобретения соответствует тем случаям, где, согласно оператору, в RTN-компоненты второй типовой группы, которым после шага преобразования следует факультативная позиция решения, которая указывает на RTN-компонент из второй типовой группы, именно в этой факультативной позиции решения вводится RTN-компонент второй типовой группы.

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

Для пояснения этого служит следующий пример, который показывает, что значение поля А должно сохраняться в переменной “Zwischenmenge” (промежуточное множество), к этой переменной «промежуточное множество» должно добавляться значение поля В и затем должно проверяться, соответствует ли это значение значению C, и результат этого сравнения вновь должен сохраняться в переменной “Ergebnis (результат) IN”

Здесь RTN-компонент с ключевым словом “+”, несмотря на его низкий первый вес 17, является вышестоящим по отношению к RTN-компоненту с ключевым словом “AS” с первым весом 250. Аналогичное имеет место для RTN-компонентов с ключевыми словами “IN” и “AS”, причем здесь первый вес вышестоящего RTN-компонента с ключевым словом “AS” независимым образом выше (250), чем первый вес (60) RTN-компонента с ключевым словом “IN”.

В согласовании с RTN-компонентами, можно также определить группы RTN-компонентов как операторы или части операторов, которые, например, содержат исключительно функции обработки арифметического или логического типа. Для этих случаев принято, что всем RTN-компонентам первой и второй типовой группы может быть поставлен в соответствие, по меньшей мере, один RTN-компонент, который(ые) является(ются) вышестоящим(и), если эти RTN-компоненты первой и второй типовой группы вводятся непосредственно в позиции решения, в которой может вводиться один из совокупности RTN-компонентов, RTN-компонента с максимально возможным вторым весом.

Выборочным образом, следующие RTN-компоненты содержат, если они вводятся непосредственно в позицию решения 70 RTN-компонента с вторым весом максимально возможной высоты веса, при указанных соответствиях:

RTN-компонент “Tabellenfeld” (табличное поле): этому RTN-компоненту может предшествовать RTN-компонент “SELECT” (выбрать), а также RTN-компонент “Tabelle” (таблица), который содержит имя таблицы, в которой находится это поле, а также RTN-компонент “Werte-Verkettung” (связь значений), чтобы оба RTN-компонента “Tabelle” и “Tabellenfeld” установить в отношение друг с другом.

Пример 27

[TABELLENFELDNAME]после добавления:

[SELECT TABELLENNAME.TABELLENFELDNAME]

RTN-компонент “Tabelle”: этому RTN-компоненту может предшествовать RTN-компонент “SELECT” для выдачи всех табличных полей.

Пример 28

[TABELLENNAME]после добавления:

[SELECT TABELLENNAME.*]

RTN-компоненты, которые выполняют вычислительные операции или сравнения: этим RTN-компонентам может предшествовать RTN-компонент “WHERE”, и, в случае отсутствия, RTN-компонент “SELECT”, который, например, выдает все поля всех применяемых таблиц, с соответственно необходимыми RTN-компонентами «формирователь элемента множеств» и «связь значений».

Пример 29

[A+B]после добавления:

[SELECT TABELLENNAME.A, TABELLENNAME.B]

[WHERE TABELLENNAME.A+TABELLENNAME.B]

Таблица 1 и Таблица 2 содержат перечень возможных RTN-компонентов с, соответственно, первым и вторым весами и графами решений RTN-компонентов, причем при прохождении графов решений RTN-компонентов на позициях решений либо сравниваются ключевые слова операторов запроса, в зависимости от соответствующей маркировки, с текстом, специальным знаком, переменной, числом, либо вводится RTN-компонент из совокупности RTN-компонентов, который, со своей стороны, вновь проходится.

За счет того, что на каждой позиции решения 70 всегда можно выбирать из совокупности RTN-компонентов, по сравнению с ограниченными возможностями выбора на позициях решений, становится возможной большая степень свободы при формулировании операторов запроса.

В качестве примера здесь будет показан RTN-компонент “NEXT” (следующий), который из своего выходного множества обработки на каждый текущий элемент выдает указанные на позиции обработки 70 следующие элементы в своем выходном множестве обработки.

Если бы здесь вместо позиции решения 70, например, разрешалось бы только число, то могло бы быть определено только число следующих, подлежащих выдаче элементов на каждый текущий элемент, посредством позиции решения 70 могли бы посредством RTN-компонента «ограничение элементов множества», в первой позиции решения 70 которого вновь введен RTN-компонент “WHERE”, выдаваться те элементы, следующие за соответствующим текущим элементом, которые находятся в выходном множестве обработки RTN-компонента «ограничение элементов множеств». Аналогичное справедливо для всех RTN-компонентов, например, RTN-компонентом “MAX” мог бы разыскиваться именно тот последующий элемент с максимальным, указанным в позиции решения 70 RTN-компонента “MAX” значением, начиная с текущего элемента.

Следующий абстрагированный пример должен пояснить это.

Пример 30

Если множество сортируется по значению А, то затем для каждого элемента множества выдаются точно те 100 элементов, для которых справедливо сравнение В=С. Из этого множества затем на каждый элемент выдается множество тех последующих 20 элементов, значение В которых, начиная с текущего элемента, принадлежит к 20 наибольшим.

Пример 31

Для акций с именем «тестовые акции» должно быть найдено состояние на 01.01.2006 г. и в таком отношении использоваться для дальнейших вычислений, что должно показываться число дней, которые прошли, прежде чем акции с этой даты повысились на 20%.

Описание оператора в Примере 31

Искать акции с именем «тестовые акции».

Эти акции сортировать по дате.

Искать конкретно для элемента, у которого имеется дата 01.01.2006 и сохранить этот элемент в переменной Stand10106 (состояние на 01.01.2006).

Исходя из маркированного посредством “FIND” в качестве актуального элемента, должны отыскиваться те акции, состояние которых, исходя из текущего элемента, на 20% выше, чем значение, сохраненное в переменной Stand10106.

#1 ограничивает найденные посредством WHERE элементы на первом элементе, и, тем самым, NEXT также выдает только значение первого элемента, для которого подходит WHERE.

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

Показать результат посредством ключевого слова SELECT.

В этой связи применяются, например, следующие ключевые слова.

Указанные в [] позиции решения следует выполнять лишь факультативно, ожидаемые ключевые слова указываются под “”, (“Ключевое слово 1”|”Ключевое слово 2”) означает “Ключевое слово 1” или ”Ключевое слово 2”, * означает позицию решения 70 и (х) или (*х) маркируют, соответственно, позиции перехода от места (*х) к месту (х), V:Имя переменной или V:число обозначает свободно выбираемую переменную или число. RTN-компоненты указываются в последовательности, которая примерно соответствует частоте применения этих RTN-компонентов в операторе, чтобы частые RTN-компоненты могли быть найдены раньше и чтобы требовалось, по возможности, меньше сравнений.

RTN-компоненты показаны как перед шагом преобразования (Таблица 1) в две типовые группы, так и после этого шага преобразования (Таблица 2).

Отмечается, что этот перечень в любое время может быть расширен, без каких-либо проблем, дополнительными RTN-компонентами и поэтому не претендует на полноту.

Для того чтобы реализовать оптимизируемый план доступа, нужно вложенные согласно их последовательности в операторе и их весу RTN-компоненты, которые были соотнесены с определенными группами RTN-компонентов, соответственно преобразовать в процессорно-интерфейсные элементы, причем процессорно-интерфейсный элемент имеет блок независимых друг о друга компонентов, которые могут устанавливаться соответственно шагу обработки.

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

Подобная компьютерная программа может быть представлена в любой форме, в частности, как компьютерный программный продукт на машиночитаемом носителе, таком как дискета, CD или DVD, причем она имеет средство кода компьютерной программы, посредством которого после загрузки компьютерной программы компьютер посредством программы обеспечивает выполнение способа для создания соответствующего изобретению носителя данных или электронного несущего сигнала. Но она также может быть предоставлена как компьютерный программный продукт, который содержит компьютерную программу на электронном несущем сигнале, посредством которого, соответственно, после загрузки компьютерной программы, компьютер посредством программы обеспечивает выполнение соответствующего изобретению способа.

Похожие патенты RU2419862C2

название год авторы номер документа
СПОСОБ УПРАВЛЕНИЯ СИСТЕМОЙ РЕЛЯЦИОННОЙ БАЗЫ ДАННЫХ 2005
  • Местль Маттиас
RU2409848C2
РАСПОЗНАВАНИЕ РУКОПИСНОГО ТЕКСТА ПОСРЕДСТВОМ НЕЙРОННЫХ СЕТЕЙ 2020
  • Упшинский Андрей Леонидович
RU2757713C1
СПОСОБ УПРАВЛЕНИЯ ДАННЫМИ В СФОРМИРОВАННОМ КОМПЬЮТЕРНОМ ДОКУМЕНТЕ И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ С ЗАПИСАННОЙ НА НЕМ ПРОГРАММОЙ 2007
  • Тимченко Максим Сергеевич
RU2379748C2
СПОСОБ ДЛЯ КОДИРОВАНИЯ СООБЩЕНИЯ K' ДАННЫХ ДЛЯ ПЕРЕДАЧИ ОТ ПЕРЕДАЮЩЕЙ СТАНЦИИ К ПРИНИМАЮЩЕЙ СТАНЦИИ И СПОСОБ ДЛЯ ДЕКОДИРОВАНИЯ, ПЕРЕДАЮЩАЯ СТАНЦИЯ, ПРИНИМАЮЩАЯ СТАНЦИЯ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ 2007
  • Трифонов Петр
  • Коста Елена
  • Шульц Эгон
RU2438236C2
ФИЛЬТРАЦИЯ ДУГ В СИНТАКСИЧЕСКОМ ГРАФЕ 2014
  • Анисимович Константин Владимирович
  • Зуев Константин Алексеевич
RU2586577C2
СПОСОБ, СИСТЕМА И КОМПЬЮТЕРНЫЙ ПРОГРАММНЫЙ ПРОДУКТ ДЛЯ ПОИСКА, НАВИГАЦИИ И РАНЖИРОВАНИЯ ДОКУМЕНТОВ В ПЕРСОНАЛЬНОЙ СЕТИ 2005
  • Кэнрайт Джеффри
  • Энго-Монсен Кент
RU2388050C2
РАСШИРЯЕМЫЙ ЯЗЫК ЗАПРОСОВ С ПОДДЕРЖКОЙ ДЛЯ РАСШИРЕНИЯ ТИПОВ ДАННЫХ 2007
  • Муралидхар Субраманиан
  • Старк Стефен Фредерик
  • Хаус Шон Б.
  • Кавано Симон
  • Вальбуена Фабио Мерелес Ф.
  • Нагараджан Рамеш
RU2434276C2
Способ построения диалогового режима на естественно-подобном языке при решении автоматизированных задач управления в комплексах средств автоматизации 2020
  • Зюзин Алексей Владимирович
  • Морозов Павел Андреевич
  • Круталевич Юрий Александрович
  • Аношин Роман Игоревич
  • Беликов Никита Николаевич
RU2751435C1
Способ извлечения информации и корпоративная система поиска информации 2019
  • Багаев Максим Сергеевич
  • Багаева Ольга Львовна
RU2729224C2
СИСТЕМА И СПОСОБ ДЛЯ ВЫБОРА ЗНАЧИМЫХ ЭЛЕМЕНТОВ СТРАНИЦЫ С НЕЯВНЫМ УКАЗАНИЕМ КООРДИНАТ ДЛЯ ИДЕНТИФИКАЦИИ И ПРОСМОТРА РЕЛЕВАНТНОЙ ИНФОРМАЦИИ 2015
  • Цыпляев Максим Викторович
  • Винокуров Никита Алексеевич
RU2708790C2

Иллюстрации к изобретению RU 2 419 862 C2

Реферат патента 2011 года СПОСОБ УПРАВЛЕНИЯ РЕЛЯЦИОННОЙ СИСТЕМОЙ БАЗЫ ДАННЫХ

Изобретение относится к средствам управления реляционной системой базы данных. Техническим результатом является расширение функциональных возможностей обработки данных на основе структурирования языков запроса. В способе запрос составляют из ключевых слов, который анализируют с применением рекурсивной сети переходов, которая сформирована из независимых один от другого компонентов указанной сети, причем каждый компонент имеет внутренний, направленный граф решений, который определен независимо от внутренних, направленных графов решений других компонентов, с, по меньшей мере, одной позицией решения вдоль, по меньшей мере, одного пути решения, причем на шаге выбора проходят внутренние графы решений всех компонентов на основе ключевых слов и следуют всем возможным путям этих графов решений до тех пор, пока не будет установлено отсутствие согласования с соответствующим выбранным путем посредством графа решений, и процесс прерывают, или соответственно выбранный путь проходят до конца. 3 н. и 19 з.п. ф-лы, 17 ил., 2 табл.

Формула изобретения RU 2 419 862 C2

1. Способ управления реляционной системой базы данных, причем оператор запроса, который составлен из ключевых слов, сначала анализируют с применением рекурсивной сети переходов (RTN), и ключевым словам или группам ключевых слов ставят в соответствие свойства, релевантные для обработки в заданной оператором последовательности, и затем преобразуют в управляющие команды, которые в соответствующем случае оптимизируют, отличающийся тем, что
формируют RTN из независимых один от другого RTN-компонентов, причем каждый RTN-компонент имеет внутренний, направленный граф решений, который определен независимо от внутренних, направленных графов решений других RTN-компонентов, с, по меньшей мере, одной позицией решения вдоль, по меньшей мере, одного пути решений,
на шаге выбора проходят внутренние графы решений всех RTN-компонентов на основе ключевых слов и следуют всем возможным путям этих графов решений до тех пор, пока не будет установлено отсутствие согласования с соответствующим выбранным путем посредством графа решений, и процесс прерывают, или соответственно выбранный путь проходят до конца,
причем, по меньшей мере, часть путей решений в, по меньшей мере, одной из позиций решений имеет рекурсивную функцию вызова, посредством которой один из RTN-компонентов проходят, как результат применения шага выбора к совокупности RTN-компонентов, так что обеспечивается возможность произвольно частого рекурсивно вложенного выполнения шага выбора, исходя из, по меньшей мере, одной из позиций решений,
и из последовательности RTN-компонентов и их вложенности, как она создается посредством применения шагов выбора ко всем ключевым словам оператора запроса, генерируют план доступа для реляционной системы базы данных.

2. Способ по п.1, отличающийся тем, что при прохождении графов решений RTN-компонентов на позициях решений ключевые слова оператора запроса, в зависимости от соответствующего обозначения, либо сравнивают с текстом, специальным символом, переменной, числом, либо вводят RTN-компонент из совокупности RTN-компонентов, который, в свою очередь, проходят.

3. Способ по п.1, отличающийся тем, что в графах решений RTN-компонентов перед теми позициями решений, в которых выполняют заранее неопределенное, неограниченное число следующих друг за другом вызовов рекурсивных функций вызова, устанавливается, по меньшей мере, одна позиция решения, которая требует ключевого слова (текста, специального символа, переменной или числа), и за ними следует, по меньшей мере, одна позиция решения, которая также требует ключевого слова.

4. Способ по любому из пп.1-3, отличающийся тем, что на шаге преобразования перед выполнением шагов выбора каждый RTN-компонент соотносят с первой или второй типовой группой, причем
RTN-компоненты, которые начинаются с текста, специального символа, переменной или числа, соотносят с первой типовой группой и преобразуют таким образом, что позиции решений, которые содержат рекурсивную функцию вызова, шаг выбора которой применяется ко всем RTN-компонентам, ограничивают таким образом, что шаг выбора применяется только к RTN-компонентам первой типовой группы, и
RTN-компоненты, которые начинаются рекурсивной функцией вызова, соотносят со второй типовой группой и преобразуют таким образом, что первая позиция решения удаляется, и позиции решений, которые содержат рекурсивную функцию вызова, шаг выбора которой применяется ко всем RTN-компонентам, ограничивают таким образом, что шаг выбора применяется только к RTN-компонентам первой типовой группы, и
ко всем RTN-компонентам первой типовой группы и тем RTN-компонентам второй типовой группы, которые заканчиваются текстом, специальным символом, переменной или числом на последней позиции решения, присоединяют дополнительно выполняемую позицию решения на последнем месте, в которой шаг выбора применяется только к RTN-компонентам второй типовой группы.

5. Способ по п.4, отличающийся тем, что каждый RTN-компонент начинается только с, по меньшей мере, одного текста, по меньшей мере, одного специального знака, одной переменной или числа, и шаг выбора может применяться либо только к RTN-компонентам первой типовой группы, либо только к RTN-компонентам второй типовой группы.

6. Способ по п.5, отличающийся тем, что RTN-компоненты второй типовой группы факультативно вызываются только на последней позиции решения графа решений.

7. Способ по п.6, отличающийся тем, что каждый RTN-компонент после полного прохождения пути решений выдает в качестве результата, по меньшей мере, одной определенной для соответствующего RTN-компонента функции обработки, в зависимости от, по меньшей мере, одного входного множества обработки, выходное множество обработки с, по меньшей мере, одним значением, включающим нуль, причем последовательность значений сохраняется внутри этого множества, и причем соответственно полученное выходное множество обработки может быть назначено каждому RTN-компоненту в качестве входного множества обработки.

8. Способ по любому из пп.1-3, 5-7, отличающийся тем, что каждому RTN-компоненту назначается, по меньшей мере, один первый вес, посредством которого во время каждого шага выбора или после применения всех шагов выбора вложенность RTN-компонентов в применимую для дальнейшей обработки вложенность изменяют за счет того, что RTN-компоненты с более высоким первым весом становятся вышестоящими по отношению к первоначально вышестоящим RTN-компонентам, которые имеют сравнительно более низкий первый вес.

9. Способ по п.8, отличающийся тем, что первый вес всех RTN-компонентов первой типовой группы находится в зависимости от непосредственно вышестоящих в операторе RTN-компонентов второй типовой группы, и назначенный RTN-компонентам первой типовой группы первый вес обозначается поэтому как начальный вес.

10. Способ по п.9, отличающийся тем, что RTN-компоненты первой типовой группы имеют идентичный первый начальный вес, предпочтительно средней высоты, и эти RTN-компоненты принимают при вводе в RTN-компоненты второй типовой группы свой первый вес, уменьшенный на некоторое значение, предпочтительно единицу.

11. Способ по п.10, отличающийся тем, что те RTN-компоненты второй типовой группы, которые свою функцию обработки выполняют на выходном множестве обработки функции обработки RTN-компонента первой или второй типовых групп, образуют первую типовую подгруппу второй типовой группы и имеют соответственно одинаковый первый вес, который является не максимально возможным весом, но выше, чем первый начальный вес средней высоты RTN-компонентов первой типовой группы.

12. Способ по п.11, отличающийся тем, что те RTN-компоненты второй типовой группы, выходные множества обработки которых используются в качестве входных множеств обработки для других RTN-компонентов первой или второй типовой группы, образуют вторую типовую подгруппу второй типовой группы и имеют соответственно различный первый вес, который в любом случае меньше, чем первый начальный вес средней высоты RTN-компонентов первой типовой группы, и первый вес для соответствующих RTN-компонентов по отдельности описывает предварительно определяемую последовательность обработки в отношении RTN-компонентов второй типовой подгруппы второй типовой группы, при этом соответственно сначала выполняемые RTN-компоненты этой группы получают меньший первый вес.

13. Способ по пп.9-12, отличающийся тем, что все RTN-компоненты первой и второй типовых групп после позиции решения, которая предписывает введение, по меньшей мере, одного RTN-компонента из первой типовой группы, которой следует, по меньшей мере, одна другая позиция решения, независимо от имеющейся в соответствующем случае после шага преобразования последней факультативной позиции решения, которая предписывает введение RTN-компонента из второй типовой группы, имеют второй, фиксированный вес с максимально возможной высотой веса.

14. Способ по п.13, отличающийся тем, что первый вес каждого RTN-компонента второй типовой группы в полученной посредством оператора запроса после шага преобразования последовательности вложения до тех пор сравнивается с первым весом соответствующих вышестоящих RTN-компонентов, пока не будет достигнут тот RTN-компонент с более высоким первым весом, или соответственно вышестоящий RTN-компонент не окажется на своей последней позиции решения и будет иметь второй вес максимально возможной высоты веса, и соответственно этой установленной последовательности вложения лежащий в основе сравнения RTN-компонент непосредственно подчиняется достигнутому RTN-компоненту и является вышестоящим для всех превышенных посредством сравнения прежде вышестоящих RTN-компонентов.

15. Способ по п.14, отличающийся тем, что RTN-компоненты первой типовой группы, независимо от их собственного первого веса и независимо от первого веса вышестоящих им RTN-компонентов, становятся подчиненными их непосредственно вышестоящему RTN-компоненту первой или второй типовой группы.

16. Способ по п.15, отличающийся тем, что для случая наличия одинакового первого веса сравниваемого RTN-компонента второй типовой группы с одним из вышестоящих RTN-компонентов также второй типовой подгруппы сравниваемый RTN-компонент непосредственно подчиняется этому RTN-компоненту в том случае, если в случае этих RTN-компонентов речь идет о RTN-компонентах второй типовой подгруппы второй типовой группы.

17. Способ по п.16, отличающийся тем, что для случая наличия одинакового первого веса сравниваемого RTN-компонента второй типовой группы с одним из вышестоящих RTN-компонентов также второй типовой подгруппы далее производится сравнение с вышестоящими RTN-компонентами, если в случае RTN-компонентов речь идет о RTN-компонентах первой типовой подгруппы второй типовой группы.

18. Способ по любому из пп.14-17, отличающийся тем, что тем RTN-компонентам первой типовой группы, для которых предопределено, что они будут подчинены RTN-компонентам второй типовой группы в том случае, если эти RTN-компоненты первой типовой группы вводятся непосредственно в позицию решения, в которую может вводиться один из совокупности RTN-компонентов, RTN-компонента, который имеет вторую максимально возможную высоту веса, назначается второй вес минимальной высоты веса, и те RTN-компоненты первой типовой группы, которые не имеют второго веса минимальной высоты, в этих случаях не становятся подчиненными никаким RTN-компонентам второй типовой группы.

19. Способ по п.18, отличающийся тем, что всем RTN-компонентам первой и второй типовой группы может быть поставлен в соответствие, по меньшей мере, один RTN-компонент, который(ые) является(ются) вышестоящим(и), если эти RTN-компоненты первой и второй типовой группы вводятся непосредственно в позицию решения, в которую может вводиться один из совокупности RTN-компонентов, RTN-компонента с максимально возможным вторым весом.

20. Способ по любому из пп.1-3, 5-7, 9-12, 14-17, 19, отличающийся тем, что вложенные согласно их последовательности в операторе и их весу RTN-компоненты, которые были соотнесены с определенными группами RTN-компонентов, соответственно преобразуются в процессорно-интерфейсные элементы, причем процессорно-интерфейсный элемент имеет блок независимых друг от друга компонентов, которые могут устанавливаться соответственно шагу обработки.

21. Реляционная система базы данных, которая включает в себя, по меньшей мере, одну компьютерную систему с, по меньшей мере, одной реляционной базой данных, по меньшей мере, один блок обработки данных и, по меньшей мере, одну память, отличающаяся тем, что блок обработки данных выполнен с возможностью осуществления способа управления реляционной системой базы данных по любому из пп.1-20, и дополнительно содержит средство для считывания указанных на языке базы данных инструкций базы данных для управления реляционной системой базы данных с носителя данных по п.22 в память.

22. Носитель данных с представленными на языке базы данных инструкциями базы данных для управления и для считывания в реляционную систему базы данных по п.21, отличающийся тем, что имеющиеся на носителе данных инструкции базы данных включают в себя указание рекурсивной сети переходов (RTN), образованной из независимых друг от друга RTN-компонентов,
причем каждый RTN-компонент имеет внутренний, направленный граф решений, который определен независимо от внутренних, направленных графов решений других RTN-компонентов, с, по меньшей мере, одной позицией решения вдоль, по меньшей мере, одного пути решений,
на шаге выбора проходят внутренние графы решений всех RTN-компонентов на основе ключевых слов, и прослеживаются все возможные пути этих графов решений до тех пор, пока не будет установлено отсутствие согласования с соответствующим выбранным путем посредством графа решения, и процесс прерывается, или соответственно выбранный путь проходят до конца,
причем, по меньшей мере, часть пути решений в, по меньшей мере, одной из позиций решений имеет рекурсивную функцию вызова, посредством которой один из RTN-компонентов проходят, как результат применения шага выбора к совокупности RTN-компонентов, так что обеспечивается возможность произвольно частого рекурсивно вложенного выполнения шага выбора, исходя из, по меньшей мере, одной из позиций решения,
и из последовательности RTN-компонентов и их вложенности, как она создается посредством применения шагов выбора ко всем ключевым словам оператора запроса, генерируется план доступа для реляционной системы базы данных.

Документы, цитированные в отчете о поиске Патент 2011 года RU2419862C2

Вакуумное грузозахватное устройство 1983
  • Мишнин Борис Васильевич
  • Артоболевский Александр Николаевич
  • Толстов Борис Михайлович
SU1209560A1
US 6023697 А, 08.02.2000
US 5826077 А, 20.10.1999
US 6618719 A, 09.09.2003
US 5875334 A, 23.02.1999
RU 99116980 A, 27.08.2001
УСТРОЙСТВО СОРТИРОВКИ ИНФОРМАЦИИ 1995
  • Довгаль В.М.
  • Силакова И.Н.
  • Шевелев С.С.
RU2128855C1

RU 2 419 862 C2

Авторы

Местль Маттиас

Даты

2011-05-27Публикация

2006-06-01Подача