Язык модели данных (ЯМД)
В сообществе разработчиков баз данных проблема создания формального языка, который позволял бы формировать данные и запросы с использованием естественного языка, рассматривается уже давно [2,3]. Предлагаемый язык модели данных (ЯМД) для БД с УМД решает эту проблему.
ЯМД – это внутренний непроцедурный язык описания и манипулирования данными, хранящимися в БД с УМД. Он состоит из двух частей: языка описания (определения) данных и языка управления (манипулирования) данными, хранящимися в БД с УМД.
ЯМД, как любой другой формализованный язык, имеет свой синтаксис и семантику (см. таблица 1).
Основным элементом языка является строка метаописания.
Структура строки метаописания:
{…} {…} … {…},
где информация, заключенная в фигурные скобки {…}
называется элементом строки метаописания.
Строка метаописания включает произвольное число элементов, которые определяют конкретные значения понятий УМД.
Набор понятий, относящихся к разделу, объекту, событию формируется между разделителями косая черта (/).
Последовательность разделителей косая черта (/) между операторами языка <Раздел>,
<КлассО>, <КлассПО>, <ЭкзО> определяет иерархию разделов, классов объектов, классов параметров объектов, экземпляров объектов соответственно.
Элемент предметной области описывается внутри зоны, ограниченной парой косых черт (/…/). Чередование синтаксических выражений языка внутри этой зоны – произвольное.
Знак равно (=) является оператором присвоения, который для указанного понятия определяет его значение, в конце которого ставится обязательный символ точка с запятой (;).
Фактически строки метаописания ЯМД это формализованные предложения естественного языка, которые описывают деятельность предприятия, его основные классификаторы и справочники, а также другие структурированные и неструктурированные документы и прочее.
ЯМД позволяет формализовать описание ПрО и сформировать модель предприятия (его метаданные и данные).
Примеры строки метаописания:
{<Раздел> = Конференция;/
<КлассО> = Компания;<ТипО> = ООО;<ТипО> = ЗАО;<ТипО> = ОАО; <ТипХО>[](строковая,любая,фактическая) = Юридический адрес; <ТипХО>[](строковая,любая,фактическая) = Телефон;/
<КлассО> = Специалист;<ТипО> = -; <ТипХО>[](строковая,любая,фактическая) = Гражданство; <ТипХО>[](строковая,любая,фактическая) = Телефон; <ТипХО>[](строковая,любая,фактическая) = Эл.адрес;/
<КлассО> = Материалы;<ТипО> = -;},
где <ТипХО> [ ] ( , , ) - тип характеристики экземпляра объекта ( <ТипХО> [единица измерения - только для объекта с численной характеристикой] (тип данных: логическая; строковая; численная; дата, признак нахождения данных в справочнике: справочная; любая, тип характеристики: паспортная; фактическая) ).
Данная строка метаописания определяет раздел «Конференция», классы объектов «Компания», «Специалист», «Материалы», их типы «ООО», «ЗАО», «ОАО», «-», иерархии подчиненности классов объектов (класс объектов «Материалы» подчинен классу объектов «Специалист», который в свою очередь подчинен классу объектов самого высшего уровня (без владельцев) - «Компания»), а также типы характеристик объектов «Юридический адрес», «Телефон», «Гражданство», «Эл.адрес» с соответствующими им атрибутами («строковая», «любая», «фактическая»). Исполнение данной строки с помощью приложения, имеющего доступ к БД с УМД, позволит записать все эти метаданные в базу.
{<Раздел> = Конференция; /
<КлассО> = Компания; <ТипО> = ООО ; <ЭкзО> = Dbcreator; <ТипХО>[](строковая,любая,фактическая) = Юридический адрес; <ЗначХО> = г.Харьков,пр.Правды,д.3к.7; <ТипХО>[](строковая,любая,фактическая) = Телефон;<ЗначХО> = (057)3331234;}
Данная строка метаописания определяет экземпляр объекта «Dbcreator» типа «ООО» и класса объектов «Компания», который (экземпляр) входит в состав раздела «Конференция». А также значения типов характеристик объекта «Юридический адрес» и «Телефон».
Исполнение данной строки с помощью приложения, имеющего доступ к БД с УМД, позволит записать все эти данные в базу.
С помощью ЯМД можно манипулировать данными реляционной БД подобно языку SQL-запросов, но в собственной терминологии, не привязанной к структуре данных (ЯМД не требует знания модели данных) и, не прибегая к контекстному поиску. При этом ЯМД прост в освоении и понятен не только программистам, но и специалистам предметной области.
Для получения списков классов объектов, событий, их экземпляров, типов, характеристик, значений и т.д. в синтаксисе языка предусмотрены некоторые специальные выражения, так называемые маски: «*.*»,«*.**», «*.*?», в операторе присваивания.
Операторы ЯМД используются также:
при реализации механизма распределения прав доступа к данным (вплоть до любого конкретного элемента данных);
при создании отчетных документов, которые могут формироваться, как с помощью OLAP-технологии, так и с помощью иных средств, и в некоторых других случаях.
Документальная и программная поддержка ЯМД включает: