СПОСОБ ФОРМИРОВАНИЯ РЕЛЯЦИОННОГО ОПИСАНИЯ СИНТАКСИСА КОМАНДЫ
METHOD OF FORMATION OF RELATIONAL DESCRIPTION OF COMMAND SYNTAX

Изобретение относится к решениям в области систем управления базами данных (СУБД), более конкретно, к способу формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, устройству формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, системе формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды и машиночитаемому носителю данных, содержащему код программы, выполняющий формирование реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, которые могут быть использованы в способах, устройствах и системах генерирования синтаксически и семантически верных команд.
УРОВЕНЬ ТЕХНИКИ
Из уровня техники широко известны формы Бэкуса-Наура (БНФ) для описания синтаксиса языков программирования, в частности языка SQL (Structured Query Language), который используется для построения запросов к базам данных (БД) (см., например, URL: http://docs.oracle.com/cd/El1882_01/server.112/е41084/ap_syntx002.htm#i631608).
Команды СУБД Oracle для управления экземпляром базы данных описаны в книге Diana Lorentz et al. «Oracle Database SQL Language Reference», 11 g Release 1 (11.1 August 2010 (URL: http://docs.oracle.com/cd/B28359_01/server.111/b28286.pdf).
Все команды СУБД Oracle являются элементами языка SQL, разработанным компанией Oracle. Для описания синтаксиса SQL команд используются синтаксические диаграммы (СД) и упрощенный вариант БНФ. Системы команд в других продуктах Oracle, например, PL/SQL, Backup and Recovery, Expdp, Impdp также могут быть описаны с помощью БНФ.
Кроме СУБД Oracle существуют другие примеры СУБД, для описания системы команд которых используются разновидности БНФ. Примером такой СУБД является Microsoft SQL Server (URL: http://msdn.microsoft.com/enus/library/msl77563%28v=sql.90%29.aspx).
Из вышесказанного следует, что БНФ широко используются как средство описания синтаксиса систем команд современных СУБД. При этом функциональность современных СУБД такова, что число уникальных команд со всеми возможными вариантами их построения составляет несколько миллионов операторов.
Для работы с таким большим количеством команд (запросов) необходимы автоматизированные процедуры генерации необходимых пользователю команд.
Наиболее близкими к заявленному изобретению являются технические решения, описанные в источниках:
1) Патент US 7054858 В2, G06F17/30, OIC ACQUISITION CORPORATION., опубликованный 30.05.2006 на 16 листах (Д1);
2) Патент US 7844642 В2, G06F17/30, ORACLE AMERICA INC, опубликованный 30.11.2010 на 21 листах (Д2);
3) Патент US 8407165 В2, G06F17/30, CERESIS LLC; MONROE TERRENCE; KENNEDY JAMES, опубликованный 26.03.2013 на 27 листах (ДЗ);
4) Патент US 5937409 A, G06F17/30, ORACLE CORP, опубликованный 10.08.2009 на 28 листах (Д4).
Источник Д1 (см. Д1, п. 1 формулы) раскрывает способ доступа к объекту в реляционной базе данных (РБД) с помощью запроса к хранилищу данных, причем хранилище представляет собой модель иерархической формы в виде дерева с типом связей множество-к-множеству, хранилище содержит исходные объекты (источники) и целевые объекты (цели), причем они могут располагаться в различных таблицах и различной совокупности, причем тип связей определяется с помощью генерирования промежуточной таблицы, которая предназначена для соединения таблиц с источниками и целями. Запрос к элементам строится на базе дерева выражений, определяемого с помощью указанных связей, причем при объединении таблиц с источниками и целями происходит процесс создания карты расположения элементов или маппинг. Окончательный запрос генерируется путем объединения сформированных деревьев выражений, основанных на таблицах источников и целей, при этом происходит выбор данных из результирующей объединенной таблицы с помощью анализа совпадения элементов в указанных таблицах с данными из результирующей таблицы.
Источник Д2 (см. Д2, п. 1 формулы, абзацы [0025]-[0027]) раскрывает способ хранения и интерпретации данных, полученных из XML документа. Способ заключается в создании таблиц элементов и атрибутов, в которые вносятся данные из импортированного XML документа. При импорте указанного документа в таблицы соответственно вносятся элементы XML документа и каждому элементу присваивается соответствующий ID. Источник Д2 не раскрывает сведений о построении непосредственно реляционной формы данных на основании анализа синтаксического выражения первоначально введенных данных (текста, команды и т.д.) и создания связей между конкретными элементами синтаксического выражения указанных данных, которые позволяют генерировать необходимую реляционную структуру.
Источник ДЗ (см. ДЗ, реферат, колонка 2) раскрывает способ генерирования графического описания (карты) с помощью маппинга введенных данных. Способ основывается на парсинге составляющих выражения ввода и их синтаксиса, в особенности на выявлении составляющей части запроса (элемента запроса), содержащей данные об объекте запроса и связанных с ним предикатов. При выявлении такого элемента ему присваивается значение темы, на основании которого выявляются подтемы, связанные с этим элементом. При выявлении отношений между темами и подтемами происходит также анализ метаданных (если они имеются). Данный способ направлен на создание структуры управления, которая могла бы автоматически определять входные данные и на основании анализа уже существующих связей в базе данных (БД) определять оптимальный вариант исполнения запроса и перенаправлять запрос в нужную тему (топик).
Источник Д4 (см. Д4, реферат, п. 16 формулы) раскрывает интерфейс для доступа к РБД из объектно-ориентированной среды с помощью применения маппинга, который связывает взаимоотношение элементов в таблицах между каждым классом элементов, в частности, между объектами таблиц и соответствующими им столбцами. Отображение или маппинг связей заключается в присвоении двунаправленных связей между указанными элементами таблиц РБД. Маппер генерирует метаданные для описания объектов, таких как объекты, созданные в РБД, в таком виде, что они являются самостоятельными объектами объектно-ориентированной системы. Способ заключается в том, что интегрируют, по меньшей мере, одну таблицу РБД в объектно-ориентированную систему. На этапах способа сначала сохраняют метаданные, описывающие, по меньшей мере, один тип класса данных и анализируют метаданные для построения схемы, затем назначают таблицу из указанной РБД к типу класса указанных метаданных и генерируют тип класса и определений интерфейса для указанной таблицы в соответствии с осуществленным назначением таблицы.
Каждый из этих источников раскрывает отдельные аспекты настоящего изобретения и не обеспечивает полноты раскрытия настоящего изобретения ни по отдельности, ни в совокупности с другими источниками.
Исходя из этого, настоящее изобретение предложено автором впервые.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Целью настоящего изобретения является обеспечение способа, устройства и системы автоматического формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды
Техническим результатом является реализация способа формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды.
Варианты осуществления настоящего изобретения относятся к способам, устройствам, системам и машиночитаемым носителям для формирования реляционного описания синтаксиса команды, обеспечивающих выполнение последовательных этапов, на которых осуществляется:
А) идентификация метаописания синтаксиса команды;
Б) идентификация элементов метаописания синтаксиса команды и присвоение каждому из упомянутых элементов уникального идентификатора (ID), причем ID присваивается в порядке очередности расположения упомянутых элементов в метаописании синтаксиса команды;
В) формирование таблицы, содержащей все упомянутые элементы, причем каждый из упомянутых элементов содержится в одной колонке таблицы на разных строках таблицы;
Г) идентификация открывающих структурных элементов и закрывающих структурных элементов среди упомянутых элементов, содержащихся в таблице, и генерирование двунаправленных связей между соответствующими открывающими структурными элементами и закрывающими структурными элементами;
Д) генерирование однонаправленных иерархических связей между упомянутыми открывающими элементами и соответствующим открывающим элементом, находящимся на предыдущем уровне вложенности, причем генерирование однонаправленных иерархических связей осуществляется для каждого открывающего элемента, находящегося на любом из уровней вложенности, кроме первого уровня вложенности.
Данная сущность представлена для того, чтобы представить ряд концепций в упрощенной форме, которые далее описываются подробно. Данная сущность не предназначена для того, чтобы определить ключевые признаки или существенные признаки заявленного объекта изобретения, а также не предназначена для того, чтобы ее использовали в качестве вспомогательного средства при определении объема правовой охраны заявленного технического решения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Иллюстративные варианты осуществления настоящего изобретения описываются далее подробно со ссылкой на прилагаемые чертежи, которые включены в данный документ посредством ссылки, и на которых:
Фиг. 1-7 иллюстрируют возможные варианты ячеек, являющихся подмножеством БНФ одного уровня вложенности, ограниченные структурными элементами или вертикальной чертой.
Фиг. 8 иллюстрирует случай вырожденной ячейки.
Фиг. 9 иллюстрирует первый уровень вложенности.
Фиг. 10 иллюстрирует уровни вложенности с первого по пятый.
Фиг. 11 иллюстрирует текстовую БНФ, описывающую команду CREATE TABLE.
Фиг. 12 иллюстрирует реляционную БНФ, описывающую команду CREATE TABLE.
Фиг. 13 графически изображает примерный способ генерирования синтаксически и семантически верных команд в соответствии с одним вариантом осуществления изобретения.
Фиг. 14 графически изображает примерное вычислительное устройство, пригодное для осуществления вариантов осуществления настоящего изобретения.
Фиг. 15 графически изображает примерную систему, пригодную для осуществления вариантов осуществления настоящего изобретения.
ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
Далее приводятся варианты осуществления настоящего изобретения, раскрывающие примеры его реализации в частных исполнениях. Тем не менее, само описание не предназначено для ограничения объема прав, предоставляемых данным патентом. Скорее, следует исходить из того, что заявленное изобретение также может быть осуществлено другими способами таким образом, что будет включать в себя отличающиеся этапы или комбинации этапов, аналогичных этапам, описанным в данном документе, в сочетании с другими существующими и будущими технологиями.
В первом варианте осуществления настоящего изобретения обеспечивается способ формирования реляционного описания синтаксиса команды, заключающийся в:
А) идентификации метаописания синтаксиса команды;
Б) идентификации элементов метаописания синтаксиса команды и присвоении каждому из упомянутых элементов уникального идентификатора (ID), причем ID присваивается в порядке очередности расположения упомянутых элементов в метаописании синтаксиса команды;
В) формировании таблицы, содержащей все упомянутые элементы, причем каждый из упомянутых элементов содержится в одной колонке таблицы на разных строках таблицы;
Г) идентификации открывающих структурных элементов и закрывающих структурных элементов среди упомянутых элементов, содержащихся в таблице, и генерировании двунаправленных связей между соответствующими открывающими структурными элементами и закрывающими структурными элементами;
Д) генерировании однонаправленных иерархических связей между упомянутыми открывающими элементами и соответствующим открывающим элементом, находящимся на предыдущем уровне вложенности, причем генерирование однонаправленных иерархических связей осуществляется для каждого открывающего элемента, находящегося на любом из уровней вложенности, кроме первого уровня вложенности.
Помимо этого, способ формирования реляционного описания синтаксиса команды может быть дополнен этапом идентификации признаков повторяемости, этапом удаления признаков повторяемости, этапом генерирования однонаправленных списков наборов элементов метаописания.
В другом варианте осуществления настоящего изобретения обеспечивается устройство формирования реляционного описания синтаксиса команды, которое может представлять собой, но не ограничиваться: персональный компьютер, портативный компьютер, планшетный компьютер, карманный компьютер, смартфон, тонкий клиент, машину баз данных и тому подобное. Устройство обязательно содержит один или более процессоров, машиночитаемый носитель данных (память) и модули ввода/вывода (I/O). В качестве примера, но не ограничения, машиночитаемый носитель данных может включать в себя оперативную память (RAM); постоянное запоминающее устройство (ROM); электрически-стираемое программируемое постоянное запоминающее устройство (EEPROM); флэш-память или другие технологии памяти; CDROM, цифровой универсальный диск (DVD) или другие оптические или голографические носители данных; магнитные кассеты, магнитную пленку, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, несущие волны или другой носитель данных, который может быть использован для кодирования требуемой информации, и к которому может быть осуществлен доступ посредством описываемого устройства. Память включает в себя носитель данных на основе запоминающего устройства компьютера в форме энергозависимой или энергонезависимой памяти, или их комбинации. Примерные аппаратные устройства включают в себя твердотельную память, накопители на жестких дисках, накопители на оптических дисках и т.д. В памяти хранится примерная среда, в которой при помощи компьютерных команд или кодов, хранящихся в памяти устройства, может быть осуществлена процедура генерирования команды. Устройство содержит один или более процессоров, которые предназначены для выполнения компьютерных команд или кодов, хранящихся в памяти устройства с целью обеспечения выполнения процедуры формирования реляционного описания синтаксиса команды. Модули I/O представляют собой, но не ограничиваются, типичные и известные из уровня техники средства управления устройством: манипулятор типа «мышь», клавиатура, джойстик, тачпад, трекбол, электронное перо, стилус, сенсорный дисплей и тому подобное. Так же модули I/O представляют собой, но не ограничиваются типичные и известные из уровня техники средства демонстрирования информации: монитор, проектор, принтер, графопостроитель и тому подобное. Компьютерные команды или коды, хранящиеся в памяти, предназначены для выполнения способа формирования реляционного описания синтаксиса команды. Эти команды включают, по меньшей мере, команды идентификации метаописания синтаксиса команды; команды идентификации элементов метаописания синтаксиса команды и присвоения каждому из упомянутых элементов уникального идентификатора (ID), причем ID присваивается в порядке очередности расположения упомянутых элементов в метаописании синтаксиса команды; команды формирования таблицы, содержащей все упомянутые элементы, причем все упомянутые элементы содержатся в одном столбце таблицы на разных строках таблицы; команды идентификации открывающих структурных элементов и закрывающих структурных элементов среди упомянутых элементов, содержащихся в таблице, и генерирования двунаправленных связей между соответствующими открывающими структурными элементами и закрывающими структурными элементами; команды генерирования однонаправленных иерархических связей между упомянутыми открывающими элементами и соответствующим открывающим элементом, находящимся на предыдущем уровне вложенности, причем генерирование однонаправленных иерархических связей осуществляется для каждого открывающего элемента, находящегося на любом из уровней вложенности, кроме первого уровня вложенности; команды идентификации признаков повторяемости; команды удаления признаков повторяемости; команды генерирования однонаправленных списков наборов элементов метаописания.
Несмотря на то, что в примерном варианте осуществления изобретения перечисленные компьютерные команды написаны на языке PL/SQL, не следует считать, что данный пример осуществления изобретения ограничивает написание перечисленных компьютерных команд только данным языком программирования. В действительности перечисленные команды могут быть написаны на любом известном или вновь созданном языке программирования.
В другом варианте осуществления настоящего изобретения обеспечивается устройство формирования реляционного описания синтаксиса команды, имеющее в своем составе один или более процессоров, память, модули I/O и аналогичное устройству, описанному в предыдущем варианте осуществления настоящего изобретения, но при этом отличающееся тем, что содержит, по меньшей мере, блок или множество блоков идентификации метаописания синтаксиса команды; блок или множество блоков идентификации элементов метаописания синтаксиса команды и блок или множество блоков присвоения каждому из упомянутых элементов уникального идентификатора (ID), причем ID присваивается в порядке очередности расположения упомянутых элементов в метаописании синтаксиса команды; блок или множество блоков формирования таблицы, содержащей все упомянутые элементы, причем все упомянутые элементы содержатся в одном столбце таблицы на разных строках таблицы; блок или множество блоков идентификации открывающих структурных элементов и закрывающих структурных элементов среди упомянутых элементов, содержащихся в таблице, и блок или множество блоков генерирования двунаправленных связей между соответствующими открывающими структурными элементами и закрывающими структурными элементами; блок или множество блоков генерирования однонаправленных иерархических связей между упомянутыми открывающими элементами и соответствующим открывающим элементом, находящимся на предыдущем уровне вложенности, причем генерирование однонаправленных иерархических связей осуществляется для каждого открывающего элемента, находящегося на любом из уровней вложенности, кроме первого уровня вложенности; блок или множество блоков идентификации признаков повторяемости; блок или множество блоков удаления признаков повторяемости; блок или множество блоков генерирования однонаправленных списков наборов элементов метаописания.
В другом варианте осуществления настоящего изобретения обеспечивается система формирования реляционного описания синтаксиса команды. Примерная система формирования реляционного описания синтаксиса команды включает в себя сеть передачи данных. Сеть передачи данных может включать в себя, но не ограничиваться, одну или более локальных сетей (LAN) и/или глобальных сетей (WAN). Такие сетеобразующие среды обычно используются в офисах, корпоративных компьютерных сетях, внутрикорпоративных сетях и информационно- телекоммуникационной сети Интернет. Соответственно, упомянутая сеть передачи данных очевидна для специалиста и далее дополнительно не описывается. Примерная система формирования реляционного описания синтаксиса команды дополнительно включает в себя базу данных и множество устройств формирования реляционного описания синтаксиса команды, которые представляют собой одни из устройств, описанных в предыдущих вариантах осуществления настоящего изобретения, или их комбинации, которые, соответственно, дополнительно не описываются. Примерная система формирования реляционного описания синтаксиса команды дополнительно содержит серверное вычислительное устройство, в том числе, но не ограничиваясь, машину баз данных, которое сохраняет и содействует манипуляции компьютерными командами или кодами, ранее описанными в данном документе, которые, соответственно, дополнительно не описываются.
ДЕТАЛЬНОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Описанные в данном разделе возможные осуществления вариантов настоящего изобретения представлены на примере формирования реляционного описания синтаксиса команды CREATE TABLE, представляющей собой команду управления СУБД Oracle, синтаксис которой описан с помощью метаязыка БНФ. Несмотря на то, что дальнейшее детальное описание чертежей составлено в отношении этой команды, необходимо отметить, что в действительности ни один из вариантов осуществления настоящего изобретения не ограничивается формированием реляционного описания синтаксиса команды CREATE TABLE. Формирование реляционного описания синтаксиса команды может быть осуществлено для любой команды управления любой СУБД или запроса любой СУБД, которые могут быть описаны с помощью любого метаописания синтаксиса команды, не ограничиваясь метаязыком БНФ.
Для более подробного и детального раскрытия действий, выполняемых способом, необходимо подробнее рассмотреть свойства БНФ.
Метаязык БНФ является стандартным языком для описания синтаксиса языков программирования.
Упрощенный вариант БНФ включает следующие символы и соглашения:
«[» и «]» - скобки, ограничивающие необязательные элементы;
«{» и «}» - фигурные скобки, ограничивающие только один требуемый элемент;
«|» - вертикальная черта, отделяющая альтернативы внутри скобок или фигурных скобок (разделитель);
«...»- эллипсис, указывающий на то, что синтаксический элемент перед ним может быть повторен (признак повторяемости);
«разделители» - разделители, отличающиеся от скобок, фигурных скобок, вертикальной черты и эллипсиса.
Далее под структурными элементами (СЭ) понимаются пары соответствующих скобок «{», «}» и «[», «]». СЭ и вертикальная черта «|» являются вспомогательными. Они не являются элементами того языка программирования, который описывается с помощью метаязыка БНФ. Кроме СЭ, метаописание языка программирования включает терминальные элементы (ТЭ) и нетерминальные элементы (НТЭ). ТЭ, или ключевые слова, описываются полужирным шрифтом и верхним регистром. НТЭ описываются нижним регистром и в процессе генерирования команды заменяются одним или несколькими элементами. Необходимость такой записи обусловлена функционированием СУБД, которая распознает команды, основываясь на форме их записи - синтаксисе. Команды, записанные с нарушением требований, изложенных в документации к СУБД, не будут распознаны и обработаны СУБД. Это обусловлено тем, что при обработке команд СУБД, команды будут переведены в машинный код, который будет обработан процессором СУБД. В том случае, если синтаксис команд, записанных на языке высокого уровня, будет нарушен, такие команды, соответственно будут переведены в неправильный машинный код, который не будет обработан процессором СУБД. Далее под элементами (ЭЛ) понимаются ТЭ или НТЭ, или разделитель.
Для целей более полного раскрытия настоящего изобретения необходимо рассмотреть такой элемент БНФ, как ячейка.
Ячейка - подмножество БНФ одного уровня вложенности, ограниченное СЭ или вертикальной чертой. Фиг.
На фиг. 1-7 показаны все возможные варианты ячеек.
Символ «....» внутри ячейки обозначает любую верную БНФ. Помимо этого, существуют так же вырожденные ячейки, внутри которых нет ЭЛ, и есть только СЭ.
Фиг. 8 иллюстрирует случай вырожденной ячейки. На фиг. 8 два внешних СЭ не содержат ни одного ЭЛ, только СЭ. Третий СЭ содержит ЭЛ.
Для целей более полного раскрытия настоящего изобретения необходимо рассмотреть такое явление как уровень вложенности (УВ).
Первый УВ (УВ1) соответствует ЭЛ и СЭ и представляет собой уровень SQL команды, генерирование которой осуществляется в соответствии с настоящим изобретением. Фиг. 9 иллюстрирует первый уровень вложенности. Содержимое СЭ в свою очередь относится ко второму УВ (УВ2).
Фиг. 10 иллюстрирует уровни вложенности с первого по четвертый. ЭЛ «АААА», «bbbb», «dddd» и разделителю «|» соответствует УВ2. ЭЛ следующего вложенного СЭ, а именно ЭЛ «СССС», «хххх» и «|», соответствует третий УВ (УВЗ). ЭЛ «YYYY» соответствует четвертый УВ (УВ4). УВ1 соответствует вырожденная ячейка, так как на этом уровне нет СЭ.
На УВ2 находятся следующие ячейки:
Ячейка 1, ограниченная СЭ «{» и «|»;
Ячейка 2, ограниченная СЭ «|» и «}».
На УВЗ находятся следующие ячейки:
Ячейка 3, ограниченная «[» и «|»;
Ячейка 4, ограниченная «|» и «]».
На УВ4 находится следующая ячейка:
Ячейка 5, ограниченная - «{» и «}».
В данном примере СЭ «{», «}» и «[», «]» взаимозаменяемы.
Далее для целей более полного раскрытия настоящего изобретения, необходимо рассмотреть реляционные БНФ (рБНФ).
В настоящем изобретении рБНФ используются как элементы автоматизированной системы для генерирования всего множества синтаксически верных команд управления СУБД и содержатся в основном семантическом правиле, назначаемом для команды, подлежащей преобразованию в синтаксически и семантически верную команду. Однако только синтаксически верная команда не будет выполнена СУБД корректно. Помимо верного синтаксиса команд, необходимо также применение к такой команде верных семантических правил. Семантические правила включают в себя уточнения и исключения, которые используются при обработке соответствующих команд.
При осуществлении способа по настоящему изобретению происходит преобразование текстовых БНФ в реляционные БНФ. При таком преобразовании сохраняются все СЭ и все ЭЛ, которые ранее содержались в текстовых БНФ. Вложенность СЭ БНФ представляется иерархическими связями между записями реляционной таблицы, в виде которой представлена рБНФ. Начало и конец СЭ представляются ссылками между соответствующими записями таблицы. Ячейки одного УВ представляются однонаправленным списком всех СЭ для каждого УВ по отдельности. Такими СЭ применительно к рБНФ являются:
открывающие элементы (ОЭ): «{» или «[», или «|»; и
закрывающие элементы (ЗЭ): «}» или «]», или «|».
Для признака повторяемости формируется отдельный атрибут (столбец) в рБНФ. Для повторяющегося СЭ этому атрибуту присваивается непустое значение.
Процесс преобразования текстовой БНФ в рБНФ, т.е. формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, включает в себя этапы:
А) идентификации метаописания синтаксиса команды;
Б) идентификации элементов метаописания синтаксиса команды и присвоения каждому из упомянутых элементов уникального идентификатора (ID), причем ID присваивается в порядке очередности расположения упомянутых элементов в метаописании синтаксиса команды;
В) формирования таблицы, содержащей все упомянутые элементы, причем каждый из упомянутых элементов содержится в одной колонке таблицы на разных строках таблицы;
Г) идентификации открывающих структурных элементов и закрывающих структурных элементов среди упомянутых элементов, содержащихся в таблице, и генерировании двунаправленных связей между соответствующими открывающими структурными элементами и закрывающими структурными элементами;
Д) генерирования однонаправленных иерархических связей между упомянутыми открывающими элементами и соответствующим открывающим элементом, находящимся на предыдущем уровне вложенности, причем генерирование однонаправленных иерархических связей осуществляется для каждого открывающего элемента, находящегося на любом из уровней вложенности, кроме первого уровня вложенности.
При этом на этапе Д) так же могут быть идентифицированы признаки повторяемости. В случае если такие признаки повторяемости будут идентифицированы элементу метаописания синтаксиса команды, ID которого близок к ID признака повторяемости, присваивается дополнительный параметр, отличный от признака повторяемости, при этом признак повторяемости удаляется из таблицы. Кроме того способ формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды может быть дополнен этапом на котором осуществляется генерирование однонаправленных списков наборов элементов метаописания синтаксиса команды, находящихся на одном уровне вложенности. При этом однонаправленные списки ограничены структурными элементами. При этом наборы элементов метаописания синтаксиса команды расположены до или после разделительных элементов, а генерирование однонаправленных списков наборов элементов метаописания синтаксиса команды осуществляется для каждого уровня вложенности.
Фиг. 11 иллюстрирует текстовую БНФ, описывающую команду CREATE TABLE. На этапе преобразования текстовой БНФ в рБНФ осуществляется идентификация всех СЭ и ЭЛ, содержащихся в текстовой БНФ. В данном случае ЭЛ являются ЭЛ «CREATE», «GLOBAL», «TEMPORARY», «TABLE», «schema.», «table», «relational_table», «object_table», «XMLType_table», ограниченные соответствующими СЭ - «[»и «]» для «GLOBAL» и «TEMPORARY», другие «[» и «]» для «schema.», «{» и «}» для вложенных альтернативных ЭЛ «relational_table», «object_table», «XMLType_table» и разделители «|» для них.
Фиг. 12 иллюстрирует реляционную БНФ, описывающую команду CREATE TABLE, полученную путем преобразования текстовой БНФ, проиллюстрированной на фиг. 11 в рБНФ. На фиг. 12 столбец ID содержит уникальный идентификатор записи (ЭЛ), столбец FILE_NAME содержит имя преобразовываемой БНФ, столбец LINE содержит элемент БНФ (запись БНФ), столбец NXT содержит для открывающей структурной скобки ссылку на закрывающую структурную скобку, а для закрывающей структурной скобки - ссылку на открывающую структурную скобку, столбец PREV содержит ссылку на внешний СЭ или 0 для самого внешнего СЭ, столбец NREF содержит ссылку на предыдущий ограничительный элемент ячейки. Если СЭ является повторяющимся, соответствующей ячейке в столбце DEEP присваивается значение 1 (в примере не рассмотрено). Кроме того, каждая рБНФ обладает уникальным ключом, с каждым элементом которого может быть ассоциирован соответствующий элемент уникальных ключей реляционных семантических правил (рСП).
В общем виде рБНФ содержит следующие атрибуты:
имя рБНФ - название конкретной команды или фрагмент документации СУБД (название текстовой БНФ);
тело рБНФ - формализованная запись текстовой БНФ;
уникальный ключ рБНФ - любой уникальный ключ, который может быть сформирован из одной или более записей, содержащихся в рБНФ.
В частности, таким ключом может быть ключ, сформированный из номера строки (ID), имени рБНФ (текстовой БНФ) и записи в одной из ячеек рБНФ.
Например, для рБНФ, проиллюстрированной на фиг. 12, уникальным ключом является комбинация записей из столбцов ID и FILE_NAME и LINE, расположенных на одной строке.
При выполнении процедуры формирования реляционного описания синтаксиса команды, над рБНФ могут выполняться следующие действия:
для необязательных СЭ (СЭ, заключенных в скобки «[» и «]») может быть применим пропуск, при этом такой СЭ может быть удален из рБНФ;
для СЭ, являющегося повторяющимся (СЭ, записанный перед признаком повторяемости «...») может быть применено дублирование, создающее копию такого СЭ и записывающего ее следом за исходным СЭ;
для ЭЛ может быть применен выбор, при этом ячейка, в которую записан ЭЛ определяется как выбранная, а СЭ, в котором находится ячейка заменяется выбранной ячейкой, при этом выбранная ячейка переходит на УВ с меньшим номером вложенности;
для НТЭ, который является рБНФ, может быть применена замена НТЭ телом рБНФ;
для НТЭ, который не является БНФ, может быть применена процедура присвоения значения;
для ЭЛ может быть применена процедура вывода фрагмента документации СУБД, который относится к такому ЭЛ;
на основе списка ЭЛ, находящихся на УВ1 может быть сгенерирована SQL команда.
Более подробно, способ формирования реляционного описания синтаксиса команды может быть представлен в виде цикла:
ааа) на УВ1 выбираются НТЭ, являющиеся именами БНФ;
ббб) выбранные НТЭ заменяются соответствующими телами БНФ;
ввв) если на УВ2 есть необязательный СЭ, то он может быть пропущен (удален);
ггг) если на УВ2 есть повторяющийся СЭ, тогда для него может быть сгенерирована копия повторяющегося СЭ, которая вставляется вслед за текущим.
ддд) так как УВ2 в общем случае состоит из нескольких ячеек, может быть осуществлен выбор требуемых ячеек;
ддд1) если выбираемая ячейка оказывается вырожденной, выбор осуществляется на один УВ ниже и до тех пор, пока не будет выбрана ячейка, содержащая ЭЛ;
ддд2) после выбора ячейки, содержащей ЭЛ, все вырожденные ячейки, кроме вырожденных ячеек УВ2, удаляются, а выбранная ячейка, заменят собой СЭ, в котором она находится, и таким образом переходит на один УВ выше;
еее) если на УВ2 есть ячейка, содержащая ЭЛ, которая может быть выбрана, осуществляется возврат к шагу ввв), если нет, то осуществляется переход к шагу жжж);
жжж) если на УВ1 есть НТЭ, который является именем БНФ, то осуществляется переход к шагу ааа), если нет, то цикл формирования SQL команды завершается.
Таким образом, такой способ формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды может быть применен для любой конечной БНФ, т.к. выбор ЭЛ приводит к переносу ячейки, содержащей ЭЛ, на УВ выше.
На фиг. 13 показан примерный вариант осуществления способа генерирования синтаксически и семантически верных команд.
В качестве примера, но не ограничения, описывается способ 100 формирования реляционного описания синтаксиса команды путем обработки исходной команды CREATE TABLE, представляющей собой команду управления СУБД Oracle. На этапе 110 выполняется идентификация метаописания синтаксиса команды. На этапе 120 выполняется идентификация элементов метаописания синтаксиса команды и присвоение каждому из упомянутых элементов уникального идентификатора (ID), причем ID присваивается в порядке очередности расположения упомянутых элементов в метаописании синтаксиса команды. После этого на этапе 130 формируется таблица, содержащая все упомянутые элементы, причем все упомянутые элементы содержатся в одном столбце таблицы на разных строках таблицы. Затем на этапе 140 происходит идентификация открывающих структурных элементов и закрывающих структурных элементов среди упомянутых элементов, содержащихся в таблице, и генерировании двунаправленных связей между соответствующими открывающими структурными элементами и закрывающими структурными элементами. На этапе 150 осуществляется генерирование однонаправленных иерархических связей между упомянутыми открывающими элементами и соответствующим открывающим элементом, находящимся на предыдущем уровне вложенности, причем генерирование однонаправленных иерархических связей осуществляется для каждого открывающего элемента, находящегося на любом из уровней вложенности, кроме первого уровня вложенности. Таким образом, за счет выполнения действий на этапах 110-150 формируется реляционное описание синтаксиса команды, пример которого представлен на фиг. 12.
На фиг. 14 в качестве примера, но не ограничения, изображено примерное осуществление устройства по настоящему изобретению, а именно устройство 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, которое может представлять собой, но не ограничиваться: персональный компьютер, портативный компьютер, планшетный компьютер, карманный компьютер, смартфон, тонкий клиент и тому подобное. Устройство выполнено с возможностью доступа в сеть передачи данных и обязательно содержит один или более процессоров 210, машиночитаемый носитель данных (память) 220, модули ввода/вывода (I/O) 230 и порты ввода/вывода (I/O) 240. В качестве примера, а не ограничения, машиночитаемый носитель данных 220 может включать в себя оперативную память (RAM); постоянное запоминающее устройство (ROM); электрически-стираемое программируемое постоянное запоминающее устройство (EEPROM); флэш-память или другие технологии памяти; CDROM, цифровой универсальный диск (DVD) или другие оптические или голографические носители данных; магнитные кассеты, магнитную пленку, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, несущие волны или другой носитель данных, который может быть использован для кодирования требуемой информации, и к которому может быть осуществлен доступ посредством описываемого устройства. Память 220 включает в себя носитель данных на основе запоминающего устройства компьютера в форме энергозависимой или энергонезависимой памяти или их комбинации. Примерные исполнения аппаратных устройств памяти включают в себя твердотельную память, накопители на жестких дисках, накопители на оптических дисках и т.д. В памяти хранится примерная среда 250, в которой при помощи компьютерных команд или кодов, хранящихся в памяти 220 устройства, может быть осуществлена процедура формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды. Устройство содержит один или более процессоров 210, которые предназначены для выполнения компьютерных команд или кодов, хранящихся в памяти устройства с целью обеспечения выполнения процедуры формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды. Модули I/O 230 представляют собой, но не ограничиваются, типичные и известные из уровня техники средства управления устройством: манипулятор типа «мышь», клавиатура, джойстик, тачпад, трекбол, электронное перо, стилус, сенсорный дисплей и тому подобное. Так же модули I/O 230 представляют собой, но не ограничиваются типичные и известные из уровня техники средства представления, демонстрирования и воспроизведения информации: монитор, проектор, принтер, графопостроитель и тому подобное. Порты 240 I/O позволяют логически соединять вычислительное устройство 200 с другими устройствами, включая модули (240) I/O, которые могут быть как встроенными, так и внешними. Компьютерные команды представляют собой команды, описанные в разделе РАСКРЫТИЕ ИЗОБРЕТЕНИЯ настоящей заявки и, соответственно, дополнительно не описываются. В одном из вариантов осуществления настоящего изобретения, устройство 200 представляет собой в качестве примера, а не ограничения, персональный компьютер пользователя. Данный персональный компьютер имеет операционную среду 250, которая в качестве примера, а не ограничения представляет собой операционную систему семейства Windows или MacOS, или Unix. Кроме того, устройство содержит память, выполненную в одном из перечисленных вариантов осуществления, в которой хранится компьютерное приложение, представляющее собой набор перечисленных во втором аспекте настоящего изобретения компьютерных команд или кодов, которыми может манипулировать пользователь. Процедура формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды осуществляется посредством этого приложения путем выбора команды, для которой требуется сформировать реляционное описание ее синтаксиса. В качестве примера, но не ограничения, такой командой может быть команда управления СУБД Oracle. Необходимо отметить, что пользователь приложения имеет возможность создать шаблон формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды (сценарий формирования), либо он может быть сгенерирован автоматически с помощью компьютерного приложения или блока генерирования сценария генерирования синтаксически и семантически верной команды по заданным параметрам. В случае если устройство 200 является тонким клиентом, в упомянутой памяти не осуществляется сохранение компьютерных команд и кодов программы, а все вычисления осуществляются на сервере, с которым способно связываться посредством сети передачи данных или иными способами проводной и беспроводной связи устройство 200, представленное в виде тонкого клиента. При этом в качестве сервера может быть использовано иное, аналогичное устройству 200 устройство.
На фиг. 15 представлено примерное исполнение системы 300 для формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, которая содержит устройство 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, сеть передачи данных 310, один или несколько серверов 320 и базу данных или машину баз данных 330. Сеть 310 может включать в себя, но не ограничиваться, одну или более локальных сетей (LAN) и/или глобальных сетей (WAN), или может представлять собой информационно-телекоммуникационную сеть Интернет, или Интранет, или виртуальную частную сеть (VPN) и тому подобное. Система 300 включает в себя упомянутое устройство 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды. Устройство 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, как было указано выше, применяется для выполнения процедуры формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды. В примерном варианте осуществления, устройство 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды представляет собой устройство 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, которое было описано ранее со ссылкой на фиг. 14. Дополнительно система 300 включает в себя сервер 320, который может представлять собой: персональный компьютер, портативный компьютер, планшетный компьютер, карманный компьютер, смартфон, машину баз данных и тому подобное.
Сервер 320 обеспечивает регулирование обменом данных в системе 300, а также обеспечивает обработку данных при условии подключения к нему одного или более чем одного устройства 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды или когда устройство 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды представляет собой тонкий клиент, при этом все вычислительные мощности, необходимые для обеспечения выполнения процедуры генерирования синтаксически и семантически верных команд, расположены на сервере 320. В этом случае, обеспечение выполнения процедуры генерирования синтаксически и семантически верных команд осуществляется сервером 320 со ссылкой на фиг. 13-14. Сервер 320 также имеет возможность обеспечивать виртуальную вычислительную среду (Virtual Machine) для обеспечения взаимодействия между устройством 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды и базой данных (машиной баз данных) 330 (БД). БД 330 может представлять собой, но не ограничиваясь: иерархическую БД, сетевую БД, реляционную БД, объектную БД, объектно-ориентированную БД, объектно-реляционную БД, пространственную БД, комбинацию перечисленных двух и более БД, и тому подобное. БД 330 хранит данные в памяти, которая может представлять собой, но не ограничиваясь: постоянное запоминающее устройство (ROM), электрически-стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, CDROM, цифровой универсальный диск (DVD) или другие оптические или голографические носители данных; магнитные кассеты, магнитную пленку, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, несущие волны или другой носитель данных, который может быть использован для хранения требуемой информации, и к которому может быть осуществлен доступ посредством устройства 200 формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды и сервера 320. БД 330 служит для хранения данных, представляющих собой: команды формирования реляционного описания синтаксиса команды на основе метаописания синтаксиса команды, описанные в разделе РАСКРЫТИЕ ИЗОБРЕТЕНИЯ настоящей заявки; документации СУБД, текстовые БНФ, получаемые рБНФ и других данных, необходимых для функционирования системы.